1 puntos por GN⁺ 2024-10-24 | 1 comentarios | Compartir por WhatsApp
  • 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:
  • 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

 
GN⁺ 2024-10-24
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

    • Pero me pregunto si de verdad tiene que ser tan en tiempo real. ¿No sería más natural tener algo como un botón, que la persona pose, se tome una foto, esta pase por la transformación y vuelva como una pintura, y que esa imagen permanezca hasta que se tome la siguiente foto? Creo que así la ilusión artística sería mejor. Claro que ya no sería un “espejo”
    • Después de hacer todo eso, también estaría bueno mirar la interpolación 2D, donde no hace falta IA para los cuadros intermedios. Hay matemáticas de kernels rápidos para interpolar linealmente a gran velocidad de un bloque a otro
  • 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

    • Creo que la idea de “revelar el mundo interior” va en la dirección correcta, pero por eso mismo esto me parece más cercano al papel tapiz que al arte. No es un trabajo de excavar hondo en la propia psique para sacar una perla, y estas imágenes no tienen esa cualidad
      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
    • Frases como “revelar algo del interior” pueden impresionar al público por un momento, pero el buen arte necesita más que eso. Todo arte tiene lenguaje y criterios, cosas que el artista aprende en el proceso de adquirir las habilidades necesarias y crecer
      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
    • Apoyo firmemente la idea de que “el proceso de aprender pintura o música cambia algo dentro de uno y enseña lecciones de vida más profundas”. Un ejemplo más simple que la pintura es la escritura. Cualquiera tiene una historia que contar y puede escribir, pero para producir un texto que valga el tiempo de otros hay que pulir el oficio durante años, no días, y en ese proceso inevitablemente uno aprende sobre sí mismo y cristaliza su visión del mundo
    • Esto va en la dirección opuesta al dicho “los expertos dicen que es imposible, pero los amateurs lo hacen todos los días”
      A veces es bueno que alguien con ojos nuevos, no moldeados por décadas de historia previa, observe algo
    • Entonces el arte más grande solo lo pueden hacer quienes cultivan plantas para fabricar sus propias pinturas desde cero
  • 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

    • Cada vez que calculo el costo para hacer algo así, al final sale mucho más barato usar una tablet Android vieja en modo kiosco y hacerlo como app web
    • Supongo que usar iluminación infrarroja y una cámara infrarroja es para que funcione también en lugares oscuros
    • ¿No se puede comprar la pantalla en Amazon? Aunque parece excesiva porque es táctil; en realidad, creo que serviría cualquier pantalla. El marco de alrededor se puede hacer uno mismo
  • 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

    • Si dices que “el arte consiste en preservar y crear emociones”, el papel de la intención queda ambiguo. Si estoy enojado y lleno de sentido de privilegio, y estaciono mi BMW ocupando dos lugares para personas con discapacidad, ¿eso es arte? Sin duda provoca emociones y también es un resultado creado por emociones
    • El arte debe atrapar a la gente y presentar un tema de una forma única. Además, debe intervenir la técnica. Si no, en cuanto se siente barato o superficial, todo se viene abajo
      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
    • ¿No es eso lo que significa “revelar el mundo interior”?
  • 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

    • Es una buena idea, pero es un objeto completamente distinto de lo que intentaba lograr el autor original
      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

    • Esa fue la técnica que usé en una obra que hacía inpainting de la imagen completa a una velocidad de aproximadamente 1 imagen cada 8 segundos. Procesaba el resultado “fundiendo” la transición hasta que el siguiente parche estuviera listo
      https://hardwork.party/aws-epoch-optimizer/
    • Si no se reduce el cambio de estilo entre fotogramas, creo que una tasa de fotogramas alta se vería incluso peor. Si cada fotograma cambia mucho, como en los fotogramas del video actual, sería distractor y habría muchísimo popping. Quizá el autor original quiera esa sensación caótica
    • Incluso un simple crossfade estaría bien
  • 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.

    • Esto asume que las ideas no implementadas tienen valor. En realidad, creo que el valor que les damos a las ideas viene de que esas ideas se difundan entre otras personas. Las ideas lo suficientemente radicales suelen ser difíciles de entender para otros, así que quien tuvo la idea tiene que crear un ejemplo por su cuenta.
      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.
    • Pero, lamentablemente, no lograron separar ambas cosas.
      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!