Marcela Carvalho
👤 SpeakerAppearances Over Time
Podcast Appearances
Fino... O resultado visual... Então a gente está trabalhando com isso agora... Espero que a gente consiga... Mas como é gerado isso... Você começa com um número fixo de pontos... Digamos assim... Uma nuvem de pontos... Num site da gente... Num sítio da gente... Tem cerca de... Vamos chutar aí... Que é o que eu estou trabalhando agora... 50 milhões de pontos... Tá...
A gente vai começar o Goshen Splatting com, sei lá, 5 mil pontos. E o que ele vai fazer é ele vai levar em conta o aspecto geométrico da cena e as cores da cena. E vai criando mais e mais pontos com essas informações que a gente falou. Posição, opacidade, cor e covariança, forma. Para melhorar como você vê cada parte da cena. É meio complexo assim de pensar. Mas eu acho que se alguém ver um videozinho fica mais fácil.
E ele vai gerando... Mais e mais e mais pontos... Para melhorar... Como se fosse melhorar... A resolução... Então é como se você começasse... Com uma imagem... Com resolução muito baixa... Que tem poucos pontos... Ou seja... Pixels muito grandes... E depois você vai gerando... De forma inteligente... E é com o Learning Rate... Com a otimização... Mais pontos... Para você ter uma imagem... Mais bonita... E eu falo bonita... Porque a gente usa... Uma função de perda... Que é para justamente medir... Essa imagem... Ela tem desenhos finos... Ela tem formas... Bem definidas...
Sim, é PyTorch. Eu vi que o Jaxx cresceu muito, mas a gente está usando muito PyTorch ainda. Nossa empresa, a gente só usa o PyTorch e ferramentas associadas, visualização, TensorBoard, MLflow, que é gratuito. A gente tentou usar o Waits and Buys para quem está usando muito legal essa ferramenta, mas é muito caro. Eu não me lembro o preço por pessoa.
Mas eles são muito legais, a gente teve reunião com eles, é uma ferramenta absurda. A gente usa MLflow e na empresa onde eu trabalhava antes, a gente transformava nossos modelos em ONNX, que é da Microsoft, para reduzir o modelo, porque a gente colocava os modelos em Edge Computing, era numa plaquinha. Mas essas são as ferramentas principais que a gente usa.
E aí, quando você tem um modelo de inferência, essas classes vão ter uma degradação na performance. E nisso está ligado também que a gente trabalha com diferentes indústrias. A gente trabalha com indústria de óleo, indústria de água, indústria de energia, que são diferentes.
as indústrias são muito diferentes... em relação aos objetos... tem coisa que tem... a planta é do lado de fora... a planta é do lado de dentro... e isso atrapalha mais ainda... a generalização do modelo... então esses são grandes desafios da gente... a gente assim... na empresa antiga a gente tinha isso também... tem muitas mudanças às vezes... de uma cidade para outra... um país para o outro... a gente sempre se pergunta...
E aí a gente vai usar um modelo só... Ou a gente vai usar vários? Hoje a gente está usando um só modelo... Mas eu acho que vai chegar uma hora... Que a gente vai precisar ter um roteadorzinho... Para usar modelos diferentes... Para melhorar isso... Porque essa parte da sub-representação de classes... É muito grande... Então esse é um dos maiores desafios que a gente tem... E aí o cliente... Ah, tem outra coisa também que acontece... É algo que eu acho que acontece mais em 3D... Do que em 2D... Que é... A vantagem do 2D...
É que é muito mais fácil conseguir dados. E a gente é data hungry, né? A gente tem fome de dados no nosso trabalho. Na 3D é muito mais difícil. E um dos grandes desafios que a gente tem é no limite entre dois objetos. Por exemplo, a gente tem tubos que conectam containers, né?
Aquela separação entre um container e o tubo, ela não fica retinha. Parece que é muito fácil separar os dois. Mas tem um negocinho que se chama flange e aquele não fica retinho. Só que para o cliente, aquilo é importante que fique visualmente bom, sabe? Esse é outro desafio da gente.
Outros desafios são ligados a isso... Ao limite de cada objeto... E como entender aquilo... Porque a gente faz uma coisa que a gente não falou... A gente falou da segmentação... Mas existem tipos de diferentes segmentações... A gente pode ter a segmentação semântica... Que a gente fala... Que são diferentes objetos... Mas a gente não conta quais são os objetos... Então container não é container 1... É container 2... E a gente faz a segmentação por instância... Significa que para cada objeto diferente... Tem uma instância diferente...
E às vezes a gente tem objetos que são iguais, que estão juntos, coladinhos, e a gente tem que separar os dois. Então esse limite aí, como fazer esse limite, é uma coisa que demanda bastante modelo. E aí vem o outro desafio, que eu acho que pensando agora talvez seja um dos maiores, é que as nuvens de pontos são assim muito grandes.
pesadíssimas para colocar no modelo, você não consegue colocar uma nuvem de pontos inteira no modelo para você ter essa informação de hierarquia, por exemplo, uma imagem você consegue colocar várias imagens num modelo só, né? É dependendo da memória que você tem, mas em geral você consegue.
a nuvem de pontos não, você tem que separar nisso você perde uma informação hierárquica muito grande, então a gente, isso agora eu tô pensando assim, acho que tem o maior desafio é como você lida com essa hierarquia de coisa por exemplo, o container, quando ele é muito grande você não consegue ver ele inteiro o modelo não consegue ver ele inteiro em um passe só, então como é que você vai ligar dois passes e falar que aquilo é o container existem vários métodos diferentes pra tentar entender isso mas esse é o super desafio que a gente tem
E como juntar, né? Fusionar todas as informações depois. E esse desafio é porque, se você tem, por exemplo, você falou dos 50 milhões de pontos, né? Cada um deles tem o XYZ, R, G e B, e aí essa informação toda não cabe para o modelo processar e, a partir disso, ele poder trabalhar, é isso?
Exatamente. Digamos que eu dei essa nuvem de dados inteira. Objetos maiores vão ter um peso muito maior pra esses modelos do que os objetos pequenininhos. E pra, assim, imagina se a gente tem a memória o suficiente, né? Então a gente ia overfitar muito rápido nos objetos grandes, mas de qualquer jeito esse é um problema muito grande e não cabe. A maioria das nuvens de pontos que a gente tem não cabem diretamente no modelo só. Então o que a gente faz são técnicas que são super legais.
Para diminuir, para dar um sample, né? Essas nuvens de pontos. E aí a gente entra nas Octrees. Não sei se vocês já escutaram falar em Octree. Acho que não. Nossa, a ideia é legal demais. A ideia é você dividir o espaço. O que acontece? Imagina a nuvem de pontos num espaço. Vamos lá, a gente tem um site industrial, né? Nas coordenadas da Terra.
Então tá ali, vamos definir uma bounding box 3D. Não vai sair dali, só que os pontos, eles são espaços, não estão estruturados. Vamos tentar organizar aquilo ali. Se a gente fizer voxels e preencher aquilo ali com voxel, voxel é um pixel em 3D. Pixel é uma informação X e Y, né? Em 3D ele tem um Zzinho também. Então a gente vai fazer um voxel, uma caixinha de, por exemplo, 2 centímetros. Então cada 2 centímetros, todos os pontinhos que estão em cada 2 centímetros vão pertencer a um voxel.
Isso já é uma forma de organizar esse ambiente. Então, a gente consegue já organizar um pouquinho só fazendo essas caixinhas, né? Imagina você colocar várias caixinhas nesse ambiente e colocar vários pixels dentro. Pronto, já organizei um pouquinho. Perdi, fiz um downsamplezinho, mas perdi um pouquinho em resolução, mas ainda tá legal, dependendo do tamanho da caixinha que eu coloquei. Só que, quando eu coloquei essas caixinhas, eu coloquei um monte de caixinha em lugar onde não tinha informação nenhuma, em um monte de espaço vazio.
Onde tem ar. E isso está ocupando espaço na memória. Qual uma forma super legal de organizar isso? Usando Octrees. Octrees é uma forma de organizar isso como se fossem árvores. Então, a primeira coisa que você vai fazer, em vez de colocar várias caixinhas, você vai começar com uma caixona. E aí você olha dentro dessa caixona. Tem informação? Se tem informação, vamos dividir. Então, vamos dividir em quatro. Pronto. Agora temos quatro caixas menores, né?