1 pontos por GN⁺ 2024-10-24 | 1 comentários | Compartilhar no WhatsApp
  • O PabloNet é um dispositivo que converte vídeo de webcam em diffusion em tempo real e exibe isso em um LCD emoldurado, fazendo a imagem gerada ser vivida não como uma demo em notebook, mas como um objeto físico pendurado na parede
  • A implementação combina um servidor baseado em StreamDiffusion, um cliente com Raspberry Pi 5, tela de 10,1 polegadas, câmera Pi NoIR, iluminação infravermelha e uma moldura comum
  • A maior limitação é a baixa taxa de quadros; houve melhora com TensorRT e compressão das imagens de entrada e saída, mas ainda há espaço para ganhar mais responsividade
  • Como é difícil obter o estilo visual desejado só com prompts, também foram testados filtros de pré-processamento; o estilo azul à la Picasso foi obtido com a combinação de Canny edge detection, coloração azul e blur
  • Na atualização de janeiro de 2025, depois da reação no HN surgirem pedidos, o projeto evoluiu para uma versão mais limpa e pronta para envio, com Pi Zero, suportes impressos em 3D, painel traseiro cortado a laser e dongle Wi‑Fi

Um quadro de diffusion em tempo real pendurado na parede

  • O PabloNet é um dispositivo que recebe entrada de webcam, faz transformação de imagem em tempo real e mostra o resultado em um LCD no formato de quadro
  • Os primeiros experimentos rodando StreamDiffusion em um notebook eram divertidos, mas o formato de notebook quebrava a ilusão e passava uma sensação temporária e “geeky”
  • Ao transformar isso em um quadro LCD de parede, a tela passa a funcionar não como um simples display, mas como um objeto com permanência
    • Ele pode ser reencontrado em diferentes horários, humores, iluminações, com objetos e com amigos
    • Há vídeos de exemplo com rostos, iluminação infravermelha no escuro, objetos e interações com amigos
  • Hoje a maior limitação é o baixo FPS
    • A taxa de quadros foi aumentada com TensorRT e compressão das imagens de entrada e saída
    • Ainda assim, ainda há bastante espaço para melhoria

Configuração de hardware e criação do estilo visual

  • Para que qualquer pessoa possa montar ou contribuir, o código do cliente e do servidor está disponível em pablonet
  • Configuração inicial de hardware:
  • O furo da câmera foi feito no papelão da moldura com um furador, que permitiu um corte mais limpo do que uma furadeira
  • O resultado visual não foi obtido só com prompts; os filtros de pré-processamento foram quase tão importantes quanto
    • Ao usar img2img sem pré-processamento, o resultado muitas vezes ficava realista demais
    • O estilo azul à la Picasso foi criado com a combinação de Canny edge detection, coloração azul e blur

Segunda versão pronta para envio após a reação no HN

  • Depois da thread no Hacker News, o projeto ganhou atenção e chegaram pedidos inesperados, levando à criação de uma versão mais limpa e pronta para envio
  • A segunda versão mudou para reduzir os incômodos do dispositivo original
    • No dispositivo anterior, era preciso segurar os componentes eletrônicos para que não caíssem antes de fixá-lo na parede
    • Para a função de apenas chamar uma API e mostrar imagens, um Pi comum parecia exagerado e caro
    • O estado dos cabos também não era bom
  • As peças compradas foram modeladas em CAD no Fusion 360, e após quatro iterações nas peças customizadas, o projeto convergiu para 2 suportes impressos em 3D e um painel traseiro cortado a laser
  • Funções dos suportes:
    • Fixar a tela alinhada ao vidro e ao papelão da moldura
    • Fixar o Pi Zero e a câmera
    • Servir como keyhole slot para pendurar na parede
    • Permitir prender o conjunto à moldura com parafusos e porcas
    • Permitir fixar o painel traseiro com threaded inserts inseridos na peça impressa em 3D com ferro de solda e parafusos

Um método de configuração para que o usuário possa operar sozinho

  • Para aumentar a viabilidade de envio, foi preciso resolver as affordances para o usuário
    • A primeira versão usava mouse e teclado Bluetooth pré-configurados nas portas USB do Pi
    • Considerou-se ruim exigir que o usuário abrisse o painel traseiro e configurasse por conta própria hub USB, mouse e teclado com fio e pareamento Bluetooth
    • Para evitar isso, foi adicionado um dongle Wi‑Fi para que o Pi funcione como um ponto de acesso para conexão via SSH e, ao mesmo tempo, continue conectado à internet pela interface de rede existente
  • Mais detalhes de construção podem ser vistos no repositório do pablonet, e encomendas personalizadas podem ser feitas por e-mail

1 comentários

 
GN⁺ 2024-10-24
Opiniões no Hacker News
  • Legal. Dei uma olhada no código e vejo algumas dicas para melhorar a baixa taxa de quadros
    Codificar bytes JPEG em Base64 aumenta o payload em até cerca de 30% e usa CPU tanto no cliente quanto no servidor. WebSocket pode enviar payloads binários, então não há necessidade de transformar em texto
    Também vale considerar remover a compactação JPEG com perdas e simplesmente enviar bytes RGB brutos pela rede. No lado do servidor, basta chamar Image.frombuffer(…)
    O StreamDiffusion consegue atingir altas taxas de quadros porque faz processamento em lote extensivo no pipeline, mas aqui o cliente envia só um frame por vez e espera a resposta, então não se aproveita desse benefício. Para enfileirar os frames de entrada e consumi-los em lotes, dá para consultar este exemplo https://github.com/cumulo-autumn/StreamDiffusion/blob/main/e...
    Ou também vale olhar os modelos SDXL Turbo e Lightning. Em img2img eles são muito rápidos, mas têm limitação de resolução a 512² ou 1024² pixels, respectivamente. Parece um pouco abaixo do objetivo, mas é possível rodar localmente em tempo real em uma GPU de consumidor high-end. O código de referência está aqui https://github.com/GradientSurfer/Draw2Img/tree/main

    • Mas fico me perguntando se precisa mesmo ser em tempo real. Não seria mais natural ter algo como um botão, a pessoa faz uma pose e tira uma foto, ela passa pela transformação e volta como uma imagem, e essa imagem fica ali até a próxima foto? Acho que isso criaria uma ilusão artística melhor. Claro, aí deixaria de ser um “espelho”
    • Depois de fazer tudo isso, também seria bom olhar para interpolação 2D, sem precisar de IA nos frames intermediários. Existe uma matemática de kernel rápida para interpolação linear em altíssima velocidade de um bloco para outro
  • Sobre a frase “fazer arte é difícil. Mas arte é, em grande parte, revelar o mundo interior, e a técnica é apenas uma parte. É uma pena que a arte filtre tão fortemente pela técnica”: não quero soar como ludita, mas questiono a ideia de que a lacuna técnica seja apenas um inconveniente
    Acho que o processo de aprender a desenhar ou fazer música muda algo dentro de você e ensina lições de vida mais profundas
    Já ouvi dizer que “grandes obras de arte não são feitas por gênios; a genialidade chega inesperadamente, como uma rajada de vento”. O melhor que um artista pode fazer é cultivar essas oportunidades, e remover a lacuna técnica parece remover esse processo de cultivo, a essência de transformar a si mesmo
    Parece haver alguns princípios profundos em ação aos quais continuamos voltando, sem saber bem o que são nem como falar deles. O projeto é divertido e parece útil para muita gente, mas às vezes me pego pensando nisso

    • Acho que a direção de “revelar o mundo interior” está certa, mas por isso isto me parece mais papel de parede do que arte. Não é um trabalho de mergulhar fundo na própria psique para trazer uma pérola à superfície, e essas imagens não têm essa qualidade
      Se o projeto como um todo tem essa qualidade é mais ambíguo, mas pessoalmente acho que não. Parece um trabalho movido mais pela técnica do que pela psicologia. É claro que um espelho tem grande simbolismo, então seria possível escrever uma nota de artista defendendo que é um trabalho psicológico
      Ainda assim, gosto dele, e se eu tivesse feito ficaria orgulhoso. Mas está mais próximo de habilidade técnica do que de arte
      No meu caso, eu reduziria a taxa de quadros em vez de aumentá-la. Seria uma forma de usar a limitação em vez de lutar contra ela. Faria o sistema exibir apenas imagens “boas” e não atualizar a tela até que outra imagem “boa” fosse gerada. O código que decide se uma imagem é “boa” se tornaria a parte mais interessante do sistema e poderia ser apresentado como portador da intenção do artista, aproximando-o mais da Arte com A maiúsculo segundo meu critério pessoal
      Também experimentaria bufferizar o fluxo de imagens, como em Light of Other Days, de Bob Shaw
      E, como o Halloween está chegando, a tentação de às vezes fazer inpainting de uma figura em pé atrás do espectador deve ser enorme
      Para obter estabilidade na imagem, será que daria para fazer um LLM gerar código de filtro de vídeo aleatório em vez de gerar imagens aleatórias? Algo como “escreva um filtro de vídeo que faça a entrada parecer cubista”, “como pintura a óleo”, “com estética Flash”. Se o filtro fosse gerado e não travasse de fato, o sistema passaria a usá-lo. Não sei se é possível
    • Frases como “revelar algo interior” podem impressionar o público por um instante, mas boa arte exige mais do que isso. Toda arte tem uma linguagem e critérios, coisas que o artista aprende no processo de dominar as técnicas necessárias e crescer
      A Mona Lisa não é simplesmente uma pintura bem-feita de uma pessoa. Ela está cheia de detalhes e significados que só quem estudou pintura consegue entender. IA pode gerar imagens aceitáveis ou interessantes, mas não consegue falar a linguagem da pintura. Isso exige esforço real para aprender e apreciar. Injetar técnica de pincelada no cérebro de uma pessoa ou em uma ferramenta de IA não transforma alguém em artista
    • Apoio fortemente a ideia de que “o processo de aprender desenho ou música muda algo dentro de você e ensina lições de vida mais profundas”. Um exemplo mais simples que desenho é a escrita. Todo mundo tem histórias para contar e consegue escrever, mas para produzir um texto que valha o tempo de outras pessoas é preciso aprimorar o ofício por anos, não por dias, e nesse processo você inevitavelmente aprende sobre si mesmo e cristaliza sua visão de mundo
    • Isso vai na direção oposta do ditado “especialistas dizem que é impossível, mas amadores fazem todos os dias”
      Às vezes é bom que alguém com olhos novos, não moldados por décadas de história existente, olhe para algo
    • Então quer dizer que a maior arte só pode ser criada por pessoas que cultivam plantas para fazer suas próprias tintas desde o começo
  • Como referência, o link do frame usado para fixar o display bloqueia o acesso
    https://www.leroymerlin.fr/produits/decoration-eclairage/dec...
    Para quem estiver curioso, é a moldura preta MILO 21 x 29,7 cm. O link abaixo abre para mim
    https://www.leroymerlin.pt/produtos/decoracao-e-tapetes/mold...
    Além disso, a tela usada, a HMTECH Raspberry Pi Screen 10.1, é bem difícil de encontrar. Alguém teria uma recomendação de tela com qualidade e especificações parecidas?
    Também fiquei curioso sobre por que usar iluminação infravermelha e câmera infravermelha

    • Toda vez que calculo o custo para montar algo assim, no fim acaba saindo muito mais barato deixar um tablet Android antigo em modo quiosque e fazer como um app web
    • Imagino que o uso de iluminação infravermelha e câmera infravermelha seja para funcionar também em locais escuros
    • A tela não dá para comprar na Amazon? Embora pareça exagero por ser touchscreen; na verdade, qualquer tela deve servir. A moldura em volta dá para fazer você mesmo
  • Sobre “arte é, em grande parte, revelar o mundo interior; a técnica é só uma parte”, sempre pensei que arte é preservar e criar emoções. Por isso, uma banana presa na parede também é arte, e música pop ainda é arte
    Talvez seja influência da escola, mas eu também costumo perguntar “por quê?”
    Esta invenção em si é claramente uma obra de arte, mas o resultado que ela gera, aos meus olhos, não é. É como nuvens. Elas formam várias figuras, algumas são engraçadas, outras podem lembrar alguém próximo, mas ainda assim é uma aleatoriedade média
    Dito isso, a ideia de refletir a realidade nessa aleatoriedade digital é, sem dúvida, arte. E software, hardware, código e design também são arte, mesmo que não sejam visuais ou sonoros. O fato de serem difíceis de criar também serve como contraexemplo ao argumento do primeiro parágrafo

    • Se você diz que “arte é preservar e criar emoções”, o papel da intenção fica ambíguo. Se eu estiver com raiva e cheio de senso de privilégio e estacionar minha BMW ocupando duas vagas para pessoas com deficiência, isso é arte? Certamente desperta emoções, e também é um resultado produzido por emoções
    • Arte precisa cativar as pessoas e apresentar um tema de uma forma única. Além disso, precisa envolver técnica. Caso contrário, no momento em que parece barata ou superficial, tudo desmorona
      Uma banana presa na parede não é arte. É apenas um objeto cotidiano colocado em uma disposição cotidiana
      Você pode sentir que isso é arte, mas, nesse caso, talvez não tenha tido contato suficiente com arte de verdade para ter um repertório de experiências, ou talvez só tenha visto exemplos superficiais até agora
    • Não é isso que significa “revelar o mundo interior”?
  • Acho que seria mais interessante se a câmera ficasse em outro lugar, não no mesmo frame. Olhar para dentro de um espelho artístico parece um pouco entediante
    Que tal fazer um segundo e colocá-lo na casa de alguém, enviando a imagem da câmera de um lado para o outro? Você veria o “reflexo” de outra pessoa, e surgiriam pequenos momentos em que os dois olham para a imagem ao mesmo tempo. Também daria para fazer vários e nunca saber quem você está vendo. Seria uma espécie de Omegle em formato de quadro

    • Boa ideia, mas é um objeto completamente diferente do que o autor original queria fazer
      Lembro que algo assim já foi feito como instalação artística em espaços públicos, permitindo ver e interagir com pessoas em diferentes lugares do mundo
      Por exemplo, isto aqui https://www.inavateonthenet.net/news/article/vc-art-installa...
  • Acho que ficaria muito mais bonito se comprasse alguns suportes antigos de baixa tensão para instalação em parede e placas de parede com escova (https://www.homedepot.com/p/Carlon-1-Gang-Non-Metallic-Low-V..., https://www.homedepot.com/p/Commercial-Electric-1-Gang-Brush...) e passasse o cabo de energia por dentro da parede

  • Ideia muito legal, eu adoraria ter um desses na minha estante
    Você disse que “o principal problema da configuração atual é a baixa taxa de quadros”, mas eu chamaria isso mais de recurso do que de limitação. Não é ruim ter um tempinho para processar e absorver a imagem
    Eu, na verdade, aumentaria o intervalo de atualização para 5 a 15 minutos e faria capturar e gerar uma nova imagem sempre que algo mudasse ou movimento fosse detectado

  • Você já considerou colocar um efeito de morphing em alta taxa de quadros entre as imagens? Acho que aumentaria a taxa de quadros percebida e ficaria bem legal

    • Foi essa a técnica que usei em uma obra que fazia inpainting da imagem inteira a cerca de 1 quadro a cada 8 segundos. Eu tratava o resultado como algo que ia “se dissolvendo” até o próximo patch ficar pronto
      https://hardwork.party/aws-epoch-optimizer/
    • Se a mudança de estilo entre os quadros não diminuir, acho que uma taxa de quadros alta ficaria ainda pior. Se cada quadro mudar bastante, como nos frames do vídeo atual, vai distrair e gerar muito popping. Talvez o autor original até queira uma sensação caótica
    • Só um crossfade simples já ficaria bom
  • Gosto muito da direção de “a arte filtra a tecnologia com força demais. Será que dá para descorrelacionar as duas?”
    Entendo os motivos para se opor à abordagem de IA generativa, mas, na prática, às vezes surgem ideias legais e não temos a habilidade técnica para criá-las. Não dá para investir meses ou anos em cada uma dessas ideias, e elas também não são importantes a ponto de pagar centenas de dólares a um artista experiente
    Agora surgiu um caminho para as pessoas gerarem o que querem e se divertirem com isso, e isso é bom. Pelo menos para uso pessoal; para fins comerciais, fica um pouco mais complicado

    • Isso pressupõe que ideias não implementadas têm valor. Na verdade, acho que o valor que atribuímos a uma ideia vem do fato de ela se espalhar para outras pessoas. Ideias suficientemente radicais muitas vezes são difíceis para os outros entenderem, então quem teve a ideia precisa criar um exemplo por conta própria
      Por isso, quando alguém diz “é uma boa ideia”, o que isso realmente quer dizer é algo mais próximo de “é um bom trabalho”
      O tempo dirá se as pessoas verão como valiosas ideias sustentadas por trabalhos feitos com IA. Será que dá sequer para distinguir? Ninguém sabe
    • Mas, infelizmente, não conseguiram separar as duas coisas
      O que foi apresentado aqui não é algo que qualquer pessoa consiga fazer, e acaba validando sem querer que é preciso técnica para criar uma máquina que distorce a realidade. As fotos geradas não são arte
  • Se o principal problema da configuração atual é a baixa taxa de quadros, talvez fosse melhor reduzi-la ainda mais, para algo em torno de 0,3~1 fps!