- PabloNet es un dispositivo que convierte video de webcam con diffusion en tiempo real y lo muestra en una pantalla LCD con forma de marco, haciendo que las imágenes generadas se experimenten no como una demo en una laptop, sino como un objeto físico colgado en la pared
- La implementación combina un servidor basado en StreamDiffusion, un cliente Raspberry Pi 5, una pantalla de 10.1 pulgadas, una cámara Pi NoIR, iluminación infrarroja y un marco común
- La mayor limitación es la baja tasa de cuadros; se mejoró con TensorRT y compresión de imágenes de entrada/salida, pero aún queda margen para mejorar la capacidad de respuesta
- Como era difícil lograr el estilo visual deseado solo con prompts, también se experimentó con filtros de preprocesamiento; el estilo Picasso azul se obtuvo combinando Canny edge detection, coloreado en azul y blur
- En la actualización de enero de 2025, tras la reacción en HN y la aparición de pedidos, evolucionó hacia una versión más prolija y apta para envío, con Pi Zero, monturas impresas en 3D, panel trasero cortado con láser y dongle WiFi
Un marco de diffusion en tiempo real colgado en la pared
- PabloNet es un dispositivo que toma entrada de webcam, realiza transformación de imagen en tiempo real y muestra el resultado en una pantalla LCD con formato de marco
- Los experimentos iniciales ejecutando StreamDiffusion en una laptop eran divertidos, pero el formato de laptop rompía la ilusión y se sentía provisorio y “geeky”
- Al convertirlo en un marco LCD de pared, la pantalla deja de ser un simple display y funciona como un objeto con persistencia
- Se puede volver a encontrar en distintos momentos del día, estados de ánimo, condiciones de iluminación, con objetos y con amigos
- Incluye videos de ejemplo con rostros, iluminación infrarroja en lugares oscuros, objetos e interacciones con amigos
- La mayor limitación actual es el bajo FPS
- Se aumentó la tasa de cuadros usando TensorRT y comprimiendo las imágenes de entrada/salida
- Aun así, todavía hay mucho margen de mejora
Configuración de hardware y creación del estilo visual
- El código del cliente y del servidor está publicado en pablonet para que cualquiera pueda construirlo o contribuir
- Configuración inicial de hardware:
- Hosting del servidor: RunPod
- Cliente: Raspberry Pi 5
- Pantalla: 10.1" Pi screen
- Iluminación: infrared light
- Marco: generic frame
- Cámara: infrared Pi camera
- El agujero para la cámara se hizo en el cartón del marco con una perforadora, que permitía un corte más limpio que un taladro
- El resultado visual no se logró solo con prompts; los filtros de preprocesamiento fueron casi igual de importantes
- Al usar img2img sin preprocesamiento, muchas veces el resultado se veía demasiado realista
- El estilo Picasso azul se creó combinando Canny edge detection, coloreado en azul y blur
Segunda versión apta para envío tras la reacción en HN
- Después del hilo en Hacker News, el proyecto obtuvo atención y llegaron pedidos inesperados, por lo que se creó una versión más prolija y apta para envío
- La segunda versión cambió para reducir las incomodidades del dispositivo original
- En el dispositivo anterior había que sostener los componentes electrónicos para que no se cayeran antes de fijarlo a la pared
- Para algo que simplemente llama a una API y muestra imágenes, una Pi normal parecía excesiva y cara
- El estado de los cables tampoco era bueno
- Las piezas compradas se modelaron en CAD con Fusion 360, y tras cuatro iteraciones de piezas personalizadas se llegó a 2 monturas impresas en 3D y un panel trasero cortado con láser
- Funciones de las monturas:
- Fijar la pantalla alineada con el vidrio y el cartón del marco
- Sujetar la Pi Zero y la cámara
- Servir como keyhole slot para colgarlo en la pared
- Permitir fijar el conjunto al marco con tornillos y tuercas
- Permitir fijar el panel trasero con tornillos e insertos roscados insertados en la pieza impresa en 3D usando un cautín
Configuración pensada para que el usuario pueda manejarla directamente
- Para mejorar la viabilidad de envío, había que resolver las prestaciones de uso para el usuario
- La primera versión usaba un mouse y teclado Bluetooth preconfigurados a través del puerto USB de la Pi
- Se consideró que no era una buena opción hacer que el usuario abriera el panel trasero y configurara por su cuenta un hub USB, mouse y teclado cableados, y el emparejamiento Bluetooth
- Para evitarlo, se agregó un dongle WiFi, de modo que la Pi funcione como punto de acceso para conexión por SSH y, al mismo tiempo, se conecte a internet mediante la interfaz de red existente
- Los detalles para construirlo uno mismo se pueden consultar en el repositorio pablonet, y se pueden recibir encargos de fabricación por email
1 comentarios
Opiniones de Hacker News
Genial. Al revisar el código, veo algunos tips para mejorar la baja tasa de cuadros
Codificar los bytes JPEG en Base64 aumenta el payload hasta alrededor de un 30% y consume CPU tanto en el cliente como en el servidor. WebSocket puede enviar payloads binarios, así que no hace falta convertirlos a texto
También valdría la pena considerar quitar la compresión JPEG con pérdida y simplemente enviar bytes RGB sin procesar por la red. Del lado del servidor bastaría con llamar a
Image.frombuffer(…)StreamDiffusion puede lograr una tasa de cuadros alta porque hace procesamiento por lotes de forma amplia en el pipeline, pero aquí el cliente envía solo un cuadro a la vez y espera la respuesta, así que no aprovecha esa ventaja. Para una forma de poner cuadros de entrada en una cola y consumirlos por lotes, se puede ver este ejemplo https://github.com/cumulo-autumn/StreamDiffusion/blob/main/e...
O también vale la pena ver SDXL Turbo y los modelos Lightning. En img2img son muy rápidos, pero cada uno tiene una limitación de resolución de 512² o 1024² píxeles. Parece un poco por debajo del objetivo, pero permiten ejecución local en tiempo real en una GPU de consumo de gama alta. Hay código de referencia aquí https://github.com/GradientSurfer/Draw2Img/tree/main
Sobre la frase “hacer arte es difícil. Pero el arte consiste en gran parte en revelar el mundo interior, y la técnica es solo una parte. Es una lástima que el arte seleccione tan fuertemente por técnica”, no quiero sonar como ludita, pero cuestiono la idea de que la brecha técnica sea solo una molestia
Creo que el proceso de aprender a dibujar o hacer música cambia algo dentro de uno y enseña lecciones de vida más profundas
Alguna vez escuché que “las grandes obras de arte no las hace un genio, sino que la genialidad llega de forma inesperada, como una ráfaga de viento”. Lo mejor que puede hacer un artista es cultivar esas oportunidades, y eliminar la brecha técnica parece eliminar ese proceso de cultivo, la esencia de transformarse a sí mismo
Parece haber ciertos principios profundos que siguen reapareciendo sin que sepamos bien qué son ni cómo hablar de ellos. El proyecto es divertido y parece útil para mucha gente, pero a veces me hace pensar en esto
Si el proyecto entero tiene esa cualidad es más ambiguo, pero personalmente creo que no. Me parece un trabajo impulsado más por la tecnología que por lo psicológico. Claro que un espejo tiene mucho simbolismo, así que se podría escribir una nota de artista argumentando que es una obra psicológica
Aun así me gusta, y si yo lo hubiera hecho estaría orgulloso. Solo que lo veo más cercano a la destreza técnica que al arte
Yo bajaría la tasa de cuadros en vez de subirla. Sería una forma de aprovechar la limitación en lugar de luchar contra ella. Haría que el sistema mostrara solo imágenes “buenas” y que no actualizara la pantalla hasta que se generara otra imagen “buena”. El código que decide si una imagen es “buena” se convertiría en la parte más interesante del sistema, y se podría decir que contiene la intención del artista, acercándolo a lo que, según mi criterio personal, sería Arte con A mayúscula
También experimentaría con bufferizar el flujo de imágenes, como en Light of Other Days de Bob Shaw
Y como Halloween está cerca, creo que sería enorme la tentación de hacer inpainting, de vez en cuando, de una figura parada detrás del espectador
Para lograr estabilidad de imagen, ¿se podría hacer que un LLM genere código de filtros de video aleatorios en vez de generar imágenes aleatorias? Algo como “escribe un filtro de video que haga que el video de entrada se vea cubista”, “como pintura al óleo”, “con estética Flash”. Si se generó el filtro y en la práctica no crashea, se cambia a ese filtro. No sé si sea posible
La Mona Lisa no es simplemente una pintura que retrata bien a una persona. Está llena de detalles y significados que solo puede entender alguien que estudió pintura. La IA puede generar imágenes decentes o interesantes, pero no puede hablar el lenguaje de la pintura. Eso requiere un esfuerzo real para aprenderlo y apreciarlo. Inyectar habilidades de pincel en el cerebro de una persona o en una herramienta de IA no convierte a alguien en artista
A veces es bueno que alguien con ojos nuevos, no moldeados por décadas de historia previa, observe algo
Como referencia, el enlace del marco que se usó para fijar la pantalla bloquea el acceso
https://www.leroymerlin.fr/produits/decoration-eclairage/dec...
Para quien tenga curiosidad, es el marco negro MILO de 21 x 29.7 cm. El enlace de abajo sí me abre
https://www.leroymerlin.pt/produtos/decoracao-e-tapetes/mold...
Además, la pantalla usada, HMTECH Raspberry Pi Screen 10.1, es bastante difícil de encontrar. ¿Hay alguna pantalla recomendable con calidad y especificaciones similares?
También me da curiosidad por qué usa iluminación infrarroja y una cámara infrarroja
Sobre “el arte consiste en gran parte en revelar el mundo interior, y la técnica es solo una parte”, siempre he pensado que el arte consiste en preservar y crear emociones. Por eso una banana pegada a la pared también es arte, y la música pop sigue siendo arte
Quizá sea por influencia de la escuela, pero yo también suelo preguntarme “¿por qué?”
Este invento en sí claramente es una obra de arte, pero sus resultados, a mis ojos, no lo son. Son como nubes. Forman distintas figuras; algunas son graciosas, otras pueden recordarte a alguien cercano, pero siguen siendo aleatoriedad promediada
Aun así, la idea de reflejar la realidad en esa aleatoriedad digital me parece, sin duda, arte. Y aunque no sean visuales ni auditivos, el software, el hardware, el código y el diseño también son arte. Además, por el hecho de ser difíciles de hacer, sirven como contraejemplo al argumento del primer párrafo
Una banana pegada a la pared no es arte. Es solo un objeto cotidiano colocado en una disposición cotidiana
Puede que lo sientas como arte, pero entonces quizá no has estado lo bastante expuesto al arte real como para tener un repertorio de experiencias, o hasta ahora solo has visto ejemplos superficiales
Creo que sería más interesante si la cámara estuviera en otro lugar distinto al marco. Mirarse en un espejo artístico se ve un poco aburrido
¿Qué tal hacer un segundo y ponerlo en la casa de alguien, enviando la imagen de la cámara de un lado al otro? Ves el “reflejo” de otra persona y se crean pequeños momentos en los que ambos miran la imagen al mismo tiempo. También podrías hacer varios y que nunca se sepa a quién estás viendo. Sería como un Omegle en versión cuadro
Recuerdo que algo así ya se ha hecho como instalación artística en espacios públicos. La idea era permitir ver e interactuar con otras personas en distintos lugares del mundo
Por ejemplo, esto: https://www.inavateonthenet.net/news/article/vc-art-installa...
Si compras algunos soportes de bajo voltaje para obra existente y placas de pared con cepillo (https://www.homedepot.com/p/Carlon-1-Gang-Non-Metallic-Low-V..., https://www.homedepot.com/p/Commercial-Electric-1-Gang-Brush...) y pasas el cable de alimentación por dentro de la pared, se vería mucho mejor
Es una idea realmente genial, y me gustaría tener uno en mi librero
Dice que “el principal problema de la configuración actual es la baja tasa de fotogramas”, pero yo preferiría llamarlo una función más que una limitación. No está mal tener un momento para procesar la imagen y asimilarla
Más bien, me gustaría ampliar el intervalo de actualización a 5–15 minutos y que capture y genere una nueva imagen cada vez que algo cambie o se detecte movimiento
¿Has considerado poner un efecto de morphing de alta tasa de fotogramas entre las imágenes? Creo que aumentaría la tasa de fotogramas percibida y se vería bastante genial
https://hardwork.party/aws-epoch-optimizer/
Me gusta mucho la dirección de “el arte filtra demasiado fuerte a la tecnología. ¿Se podrá descorrelacionar ambos?”
Entiendo las razones para oponerse al enfoque de la IA generativa, pero en la práctica a veces se me ocurren ideas geniales y no tengo la habilidad técnica para hacerlas. Tampoco puedo invertir meses o años en cada una de esas ideas, ni son tan importantes como para pagarle cientos de dólares a un artista experto.
Ahora existe una forma de que la gente genere lo que quiere y lo disfrute, y eso es algo bueno. Al menos para uso personal; para fines comerciales se vuelve más complicado.
Por eso, cuando alguien dice “es una buena idea”, lo que en realidad quiere decir está más cerca de “es un buen trabajo”.
El tiempo dirá si la gente verá como valiosas las ideas respaldadas por trabajos hechos con IA. ¿Podremos siquiera distinguirlas? Nadie lo sabe.
No cualquiera puede hacer lo que se presenta aquí, y en cierto modo se terminó verificando sin querer que se necesita habilidad técnica para construir una máquina que distorsiona la realidad. Las fotos generadas no son arte.
Si el principal problema de la configuración actual es la baja tasa de fotogramas, ¡quizá convendría bajarla aún más, a algo como 0.3~1 fps!