Ya sea un artista de VFX, un becario de investigación o un aficionado gráfico, Blendernerf es la forma más fácil y rápida de crear conjuntos de datos sintéticos de Nerf y Splatting Gaussian dentro de Blender. ¡Obtenga renders y parámetros de la cámara con un solo clic, al tiempo que tiene control de usuario completo sobre la escena y la cámara 3D!
¿Estás listo para nerf? ¡Comience con un solo clic en la licuadora revisando este tutorial!
Los campos de radiación neural (NERF) tienen como objetivo representar una escena 3D como un objeto volumétrico dependiente de la vista de las imágenes 2D solamente, junto con la información de su cámara respectiva. La escena 3D está diseñada inversa desde las imágenes de entrenamiento con la ayuda de una red neuronal simple.
Gaussian Splatting es un método de seguimiento para representar campos de radiación de manera basada en el punto. Esta representación está altamente optimizada para la representación de GPU y aprovecha técnicas gráficas más tradicionales para lograr altas velocidades de cuadros.
Recomiendo ver este video de YouTube de Corridor Crew para una emocionante investigación sobre algunos casos de uso y futuras aplicaciones potenciales de NERFS.
La representación es un cálculo costoso. Las escenas fotorrealistas pueden tardar de segundos y horas en renderizar dependiendo de la complejidad de la escena, el hardware y los recursos de software disponibles.
Los nerfs y las salpicaduras gaussianas pueden acelerar este proceso, pero requieren información de la cámara típicamente extraída a través de un código engorroso. Este complemento permite a cualquiera obtener renders y cámaras con un solo clic en la licuadora.
Aunque las versiones de lanzamiento de Blendernerf están disponibles para descargar, están destinadas principalmente a rastrear los principales cambios de código y para fines de citas. Recomiendo descargar directamente el repositorio actual, ya que los cambios menores o las correcciones de errores podrían no incluirse en una versión de inmediato.
Blendernerf consta de 3 métodos discutidos en las subsecciones a continuación. Cada método es capaz de crear datos de entrenamiento y probar datos para NERF en forma de imágenes de entrenamiento y un archivo transforms_train.json respectivamente transforms_test.json con la información de la cámara correspondiente. Los datos se archivan en un solo archivo zip que contiene carpetas de entrenamiento y prueba. Los datos de capacitación pueden ser utilizados por un modelo NERF para aprender la representación de la escena 3D. Una vez capacitado, el modelo puede evaluarse (o probarse) en los datos de prueba (solo información de la cámara) para obtener nuevos renders.
El subconjunto de marcos (SOF) produce cada N cuadros de una animación de la cámara, y utiliza el subconjunto renderizado de marcos como datos de entrenamiento NERF. Los datos de prueba registrados abarcan todos los cuadros de la misma animación de la cámara, incluidos los marcos de entrenamiento. Cuando está entrenado, el modelo NERF puede hacer la animación completa de la cámara y, en consecuencia, es adecuado para interpolar o hacer grandes animaciones de escenas estáticas.
El tren y la prueba de las cámaras (TTC) registra datos de capacitación y prueba de dos cámaras definidas por el usuario separadas. Luego, un modelo NERF se puede equipar con los datos extraídos de la cámara de entrenamiento y evaluarse en los datos de prueba.
La cámara en la esfera (COS) hace que los marcos de entrenamiento muestrean uniformemente vistas de la cámara aleatoria dirigidas al centro desde una esfera controlada por el usuario. Los datos de prueba se extraen de una cámara seleccionada.
El panel de propiedades complementarias está disponible en 3D View > N panel > BlenderNeRF (se puede acceder al panel N debajo de la vista 3D al presionar N ). Los 3 métodos ( SOF , TTC y COS ) comparten una pestaña común llamada BlenderNeRF shared UI con las propiedades controlables enumeradas a continuación.
Train (activado por defecto): si se debe registrar datos de capacitación (representaciones + información de la cámara)Test (activado por defecto): si se debe registrar datos de prueba (solo información de la cámara)AABB (por defecto establecido en 4 ): parámetro de escala AABB como se describe en instantáneo NGP (más detalles a continuación)Render Frames (activados por defecto): si debe renderizar los marcosSave Log File (desactivado por defecto): si se debe guardar un archivo de registro que contiene información de reproducibilidad en la ejecución de BlendernerfFile Format ( NGP de forma predeterminada): si debe exportar los archivos de la cámara en la convención instantánea de formato de archivo NGP o DeFaut NERFGaussian Points (desactivado por defecto): si exporta un archivo de points3d.ply para la flatencia gaussianaGaussian Test Camera Poses ( ficticia por defecto): si debe exportar un archivo de cámara de prueba ficticia o el conjunto completo de poses de cámara de prueba (solo con Gaussian Points )Save Path (vacía por defecto): ruta al directorio de salida en el que se creará el conjunto de datos Si la propiedad Gaussian Points está activa, Blendernerf creará un archivo de points3d.ply adicional a partir de todas las mallas visibles (en el momento de la representación) donde cada vértice se utilizará como punto de inicialización. Los colores del vértice se almacenarán si están disponibles y se establecerán en negro de lo contrario.
El repositorio gaussiano de estallido admite de forma nativa los conjuntos de datos NERF , pero requiere datos de trenes y pruebas. La opción Dummy para la propiedad de la Gaussian Test Camera Poses crea un archivo de pose de cámara de prueba vacía, en el caso de que no se necesiten imágenes de prueba. La opción Full exporta la planta de la cámara de prueba predeterminada, pero requerirá que la representación por separado sea una carpeta test que contenga todos los renderizadores de prueba.
AABB está restringido para ser una potencia entera de 2, define la longitud lateral del volumen del cuadro delimitador en el que NERF trazará los rayos. La propiedad se introdujo con la versión instantánea NGP de NVIDIA de NERF.
La propiedad File Format puede ser NGP o NERF . La convención de formato de archivo NGP es la misma que la NERF , con algunos parámetros adicionales a los que se puede acceder por NGP instantáneo.
Observe que cada método tiene su propiedad Name distintivo (de forma predeterminada, establecida en dataset ) correspondiente al nombre del conjunto de datos y creó el nombre de archivo ZIP para el método respectivo. Tenga en cuenta que los caracteres no compatibles, como los espacios, # o / , serán reemplazados automáticamente por un guión bajo.
A continuación se describen las propiedades específicas de cada método (la propiedad Name se deja fuera, ya que ya se discute anteriormente).
Frame Step (por defecto establecido en 3 ): n (como se define en la sección de configuración) = frecuencia en la que están registrados los marcos de entrenamientoCamera (siempre configurada en la cámara activa): cámara utilizada para registrar datos de entrenamiento y probarPLAY SOF : Reproducir el subconjunto de operador de método de cuadros para exportar datos de NERFFrames (por defecto establecido en 100 ): número de marcos de entrenamiento utilizados desde la cámara de entrenamientoTrain Cam (vacía por defecto): cámara utilizada para registrar los datos de capacitaciónTest Cam (vacía por defecto): cámara utilizada para registrar los datos de pruebaPLAY TTC : Reproducir el operador del método del tren y las cámaras de prueba para exportar datos de NERF Frames la cantidad de marcos de entrenamiento se capturarán utilizando el objeto Train Cam , comenzando desde el marco de inicio de la escena.
Camera (siempre configurada en la cámara activa): cámara utilizada para registrar los datos de pruebaLocation (por defecto establecido en 0 M Vector): Posición central de la esfera de entrenamiento desde la cual se muestrean las vistas de la cámaraRotation (por defecto establecido en vector 0 ° ): rotación de la esfera de entrenamiento desde la cual se muestrean las vistas de la cámaraScale (por defecto establecido en 1 vector): Vector de escala de la esfera de entrenamiento en los ejes XYZRadius (por defecto establecido en 4 m ): radio escalar de la esfera de entrenamientoLens (por defecto establecido en 50 mm ): distancia focal de la cámara de entrenamientoSeed (por defecto establecido en 0 ): semilla para inicializar el procedimiento de muestreo de vista de la cámara aleatoriaFrames (por defecto establecido en 100 ): número de marcos de entrenamiento muestreados y reproducidos desde la esfera de entrenamientoSphere (desactivada por defecto): si se debe mostrar la esfera de entrenamiento desde la cual se muestrean las vistas aleatoriasCamera (desactivada por defecto): si se debe mostrar la cámara utilizada para registrar los datos de entrenamientoUpper Views (desactivadas por defecto): si se debe probar vistas del hemisferio de entrenamiento superior (variante de rotación)Outwards (desactivado por defecto): si señala la cámara hacia afuera de la esfera de entrenamientoPLAY COS : reproducir la cámara en el operador de método de esfera para exportar datos de NERF Tenga en cuenta que la activación de la Sphere y las propiedades Camera crean un objeto vacío BlenderNeRF Sphere y un objeto de cámara BlenderNeRF Camera respectivamente. No cree ningún objeto con estos nombres manualmente, ya que esto podría romper las funcionalidades complementarias.
Frames de la cantidad de marcos de entrenamiento se capturarán utilizando el objeto BlenderNeRF Camera , comenzando desde el marco de inicio de la escena. Finalmente, tenga en cuenta que la cámara de entrenamiento está bloqueada en su lugar y no puede moverse manualmente.
NVIDIA proporciona algunos consejos útiles sobre cómo entrenar un modelo NERF usando NGP instantáneo. No dude en visitar su repositorio para obtener más ayuda. A continuación se presentan algunos consejos rápidos para el nerfing óptimo obtenidos de la experiencia personal.
AABB lo más apretado posible a la escala de la escena, los valores más altos ralentizarán el entrenamientoAABB mientras mantiene una potencia de 2Vertical a veces conduce a volúmenes nerf distorsionados, evítelo si es posible Si tiene acceso a una GPU NVIDIA, es posible que desee instalar NGP instantáneo en su propio dispositivo para una experiencia de usuario óptima, siguiendo las instrucciones proporcionadas en su repositorio. De lo contrario, puede ejecutar NERF en un cuaderno Colab en GPU de Google de forma gratuita con una cuenta de Google.
Abra este cuaderno de Colab (también descargable aquí) y siga las instrucciones.
Este complemento se está desarrollando como un proyecto secundario divertido en el transcurso de varios meses y versiones de Blender, principalmente en macOS. Si encuentra algún problema con las funcionalidades del complemento, no dude en abrir un problema de GitHub con una descripción clara del problema, con qué versión de Blendernerf se han experimentado los problemas y cualquier información adicional si es relevante.
Si bien esta extensión está destinada a la creación de conjuntos de datos sintéticos, las herramientas existentes para importar datos de seguimiento de movimiento de las cámaras del mundo real están disponibles. Un ejemplo de ello es Tracky by Shopify , una aplicación iOS de código abierto y un complemento adyacente de registro de complemento de registro de datos de seguimiento de movimiento de una sesión de ARKIT en iPhone. Sin embargo, tenga en cuenta que los datos de seguimiento pueden estar sujetos a derivaciones e inexactitudes, lo que podría afectar la calidad de reconstrucción del NERF resultante.
Si encuentra que este repositorio es útil en su investigación, considere citar Blendernerf usando el botón GitHub dedicado anterior. Si utilizó esta extensión para sus proyectos artísticos, ¡no dude en compartir parte de su trabajo utilizando el hashtag #blendernerf en las redes sociales! :)