Modelos e plataformas de IA
Julien Rebetez, Líder de Engenharia de Aprendizado de Máquina na Picterra – Série de Entrevistas

Julien Rebetez é o Líder de Software e Engenharia de Aprendizado de Máquina na Picterra. A Picterra fornece uma plataforma baseada em nuvem para treinamento de detectores de aprendizado profundo, rapidamente e com segurança.
Sem uma única linha de código e com apenas algumas anotações feitas por humanos, os usuários da Picterra criam e implantam modelos de aprendizado de máquina prontos para uso.
Isso automatiza a análise de imagens de satélite e aéreas, permitindo que os usuários identifiquem objetos e padrões.
O que o atraiu para o aprendizado de máquina e IA?
Eu comecei a programar porque queria criar jogos de vídeo e me interessei por gráficos de computador. Isso me levou à visão de computador, que é o processo inverso de criar um ambiente falso. Durante meus estudos, eu fiz alguns cursos de Aprendizado de Máquina e me interessei pelo ângulo de visão de computador. Acho que o que é interessante sobre o ML é que está na interseção entre engenharia de software, algoritmos e matemática, e ainda parece um pouco mágico quando funciona.
Você trabalhou com aprendizado de máquina para analisar imagens de satélite por muitos anos. Qual foi seu primeiro projeto?
Minha primeira exposição a imagens de satélite foi o projeto Terra-i (para detectar desmatamento) e eu trabalhei nele durante meus estudos. Fiquei impressionado com a quantidade de dados de satélite disponíveis gratuitamente produzidos pelas agências espaciais (NASA, ESA, etc.). Você pode obter imagens regulares do planeta todos os dias ou mais, e isso é um recurso incrível para muitas aplicações científicas.
Pode compartilhar mais detalhes sobre o projeto “Terra-i”?
O projeto Terra-i (http://terra-i.org/terra-i.html) foi iniciado pelo Professor Andrez Perez-Uribe, da HEIG-VD (Suíça) e agora é liderado por Louis Reymondin, do CIAT (Colômbia). A ideia do projeto é detectar desmatamento usando imagens de satélite disponíveis gratuitamente. Na época, trabalhamos com imagens MODIS (resolução de pixel de 250m) porque forneciam uma cobertura uniforme e previsível (tanto espacial quanto temporal). Obteríamos uma medição para cada pixel a cada alguns dias, e a partir dessa série temporal de medições, você pode tentar detectar anomalias ou novidades, como chamamos em ML às vezes.
Esse projeto foi muito interessante porque a quantidade de dados foi um desafio na época, e também havia um pouco de engenharia de software para fazer funcionar em vários computadores, etc. Do lado do ML, usamos Redes Neurais Bayesianas (não muito profundas na época) para prever como a série temporal de um pixel deveria ser. Se a medição não correspondesse à previsão, então teríamos uma anomalia.
Como parte desse projeto, também trabalhei na remoção de nuvens. Usamos uma abordagem tradicional de processamento de sinais, onde você tem uma série temporal de medições e algumas delas estarão completamente fora devido a uma nuvem. Usamos uma abordagem baseada em Fourier (HANTS) para limpar a série temporal antes de detectar novidades nela. Uma das dificuldades é que, se limpássemos demais, também removeríamos novidades, então havia muitos experimentos para encontrar os parâmetros certos.
Você também projetou e implementou um sistema de aprendizado profundo para classificação de tipo de cultura a partir de imagens aéreas (de drone) de campos agrícolas. Quais foram os principais desafios na época?
Essa foi minha primeira exposição real ao Aprendizado Profundo. Na época, acho que o principal desafio era mais fazer o framework funcionar e usar corretamente uma GPU do que o próprio ML. Usamos Theano, que era um dos ancestrais do Tensorflow.
O objetivo do projeto era classificar o tipo de cultura em um campo, a partir de imagens de drone. Tentamos uma abordagem onde o modelo de Aprendizado Profundo usava histogramas de cores como entradas, em vez de apenas a imagem bruta. Para fazer isso funcionar de forma razoável, lembro-me de ter implementado uma camada personalizada do Theano, até mesmo código CUDA. Isso foi uma ótima experiência de aprendizado na época e uma boa maneira de mergulhar um pouco nos detalhes técnicos do Aprendizado Profundo.
Você é oficialmente o Líder de Software e Engenharia de Aprendizado de Máquina na Picterra. Como descreveria suas atividades diárias?
Isso realmente varia, mas grande parte disso é sobre manter um olho na arquitetura geral do sistema e do produto, e comunicar com os vários stakeholders. Embora o ML esteja no cerne do nosso negócio, você rapidamente percebe que a maior parte do tempo não é gasta com o ML em si, mas com todas as coisas ao seu redor: gerenciamento de dados, infraestrutura, UI/UX, prototipagem, entendimento dos usuários, etc. Isso é bastante diferente da Academia ou de experiências anteriores em empresas maiores, onde você está muito mais focado em um problema específico.
O que é interessante sobre a Picterra é que não apenas executamos modelos de Aprendizado Profundo para os usuários, mas também permitimos que eles treinem seus próprios modelos. Isso é diferente do fluxo de trabalho de ML típico, onde você tem a equipe de ML treinando um modelo e então publicando-o em produção. Isso significa que não podemos brincar manualmente com os parâmetros de treinamento como frequentemente se faz. Temos que encontrar um método de treinamento que funcione para todos os nossos usuários. Isso nos levou a criar o que chamamos de “estrutura de experimentos”, que é um grande repositório de conjuntos de dados que simula os dados de treinamento que os usuários criariam na plataforma. Podemos então facilmente testar alterações na nossa metodologia de treinamento contra esses conjuntos de dados e avaliar se elas ajudam ou não. Em vez de avaliar um modelo único, estamos mais avaliando uma arquitetura + metodologia de treinamento.
O outro desafio é que nossos usuários não são práticos em ML, então eles não sabem necessariamente o que é um conjunto de treinamento, o que é um rótulo, etc. Construir uma UI para permitir que não práticos em ML criem conjuntos de dados e treinem modelos de ML é um desafio constante, e há muito vaivém entre as equipes de UX e ML para garantir que os usuários sejam guiados na direção certa.
Alguns de seus responsáveis incluem prototipar novas ideias e tecnologias. Quais são alguns dos projetos mais interessantes que você trabalhou?
Acho que o mais interessante na Picterra foi o protótipo do Detector Personalizado. Há 1,5 anos, tínhamos detectores “construídos” na plataforma: esses eram detectores que treinamos nós mesmos e tornamos acessíveis aos usuários. Por exemplo, tínhamos um detector de edifícios, um detector de carros, etc.
Isso é basicamente o fluxo de trabalho de ML típico: você tem um engenheiro de ML desenvolvendo um modelo para um caso específico e então o serve aos clientes.
Mas queríamos fazer algo diferente e empurrar os limites um pouco. Então dissemos: “E se permitirmos que os usuários treinem seus próprios modelos diretamente na plataforma”? Havia alguns desafios para fazer isso funcionar: primeiro, não queríamos que isso levasse várias horas. Se você quer manter a sensação de interatividade, o treinamento deve levar apenas alguns minutos. Segundo, não queríamos exigir milhares de anotações, o que é típico para grandes modelos de Aprendizado Profundo.
Então começamos com um modelo super simples, fizemos uma série de testes no Jupyter e então tentamos integrá-lo na nossa plataforma e testar o fluxo de trabalho inteiro, com uma UI básica e assim por diante. No início, não funcionava muito bem na maioria dos casos, mas havia alguns casos onde funcionava. Isso nos deu esperança e começamos a iterar sobre a metodologia de treinamento e o modelo. Depois de alguns meses, conseguimos chegar a um ponto onde funcionava bem, e agora temos nossos usuários usando isso o tempo todo.
O que foi interessante sobre isso é o duplo desafio de manter o treinamento rápido (atualmente alguns minutos) e, portanto, o modelo não muito complexo, mas ao mesmo tempo torná-lo complexo o suficiente para que funcione e resolva os problemas dos usuários. Além disso, funciona com poucos (<100) rótulos para muitos casos.
Também aplicamos muitas das “Regras de Aprendizado de Máquina” do Google (GOOGL ), em particular as que se referem à implementação de toda a pipeline e métricas antes de começar a otimizar o modelo. Isso nos coloca no modo de “pensamento de sistema”, onde você percebe que nem todos os seus problemas devem ser tratados pelo ML central, mas alguns deles podem ser empurrados para a UI, alguns pré ou pós-processados, etc.
Quais são algumas das tecnologias de aprendizado de máquina usadas na Picterra?
Em produção, estamos atualmente usando Pytorch para treinar e executar nossos modelos. Também usamos Tensorflow de vez em quando, para alguns modelos específicos desenvolvidos para clientes. Além disso, é uma pilha de científico Python padrão (numpy, scipy) com algumas bibliotecas geoespaciais (gdal) incluídas.
Pode discutir como a Picterra funciona na parte de trás quando alguém carrega imagens e deseja treinar a rede neural para anotar objetos corretamente?
Certo, então primeiro, quando você carrega uma imagem, processamos e armazenamos em um formato “Cloud-Optimized-Geotiff” (COG) em nosso armazenamento de blobs (Armazenamento de Cloud do Google), o que nos permite acessar blocos da imagem rapidamente sem ter que baixar a imagem inteira mais tarde. Isso é um ponto-chave, porque as imagens geoespaciais podem ser enormes: temos usuários rotineiramente trabalhando com imagens de 50.000×50.000 pixels.
Então, para treinar seu modelo, você precisará criar seu conjunto de dados de treinamento por meio da nossa interface da web. Você fará isso definindo 3 tipos de áreas:
- Áreas de treinamento, nas quais você desenhará rótulos de treinamento
- Áreas de teste, onde o modelo preverá para permitir que você visualize alguns resultados
- Área de precisão, onde você desenhará rótulos, mas esses serão usados apenas para pontuação, não para treinamento
Uma vez que você criou esse conjunto de dados, pode simplesmente clicar em “Treinar” e treinaremos um detector para você. O que acontece em seguida é que enfileiramos um trabalho de treinamento, um de nossos trabalhadores de GPU pega e treina seu modelo, salva os pesos do modelo no armazenamento de blobs e, finalmente, prevê na “área de teste” para exibir na UI. A partir daí, você pode iterar sobre seu modelo. Normalmente, você notará alguns erros nas “áreas de teste” e adicionará “áreas de treinamento” para ajudar o modelo a melhorar.
Uma vez que você esteja satisfeito com a pontuação do seu modelo, pode executá-lo em escala. Do ponto de vista do usuário, isso é realmente simples: basta clicar em “Detectar” ao lado da imagem que você deseja executar. Mas é um pouco mais complicado por trás dos panos, especialmente se a imagem for grande. Para acelerar as coisas, lidar com falhas e evitar que as detecções levem várias horas, dividimos detecções grandes em células de grade e executamos um trabalho de detecção independente para cada célula. Isso nos permite executar detecções em grande escala. Por exemplo, tivemos um cliente executar detecção em todo o país da Dinamarca em imagens de 25cm, o que está na faixa de TB de dados – para um único projeto. Cobrimos um projeto semelhante nesse post no Medium.
Há algo mais que você gostaria de compartilhar sobre a Picterra?
Acho que o que é ótimo sobre a Picterra é que é um produto único, na interseção entre ML e Geoespacial. O que nos diferencia de outras empresas que processam dados geoespaciais é que equipamos nossos usuários com uma plataforma de autoatendimento. Eles podem facilmente encontrar locais, analisar padrões e detectar e contar objetos em imagens de observação da Terra. Seria impossível sem aprendizado de máquina, mas nossos usuários nem precisam de habilidades básicas de codificação – a plataforma faz o trabalho com base em algumas anotações feitas por humanos. Para aqueles que desejam mergulhar mais fundo e aprender os conceitos centrais de aprendizado de máquina no domínio geoespacial, lançamos um curso online abrangente.
O que também vale a pena mencionar é que as aplicações possíveis da Picterra são ilimitadas – detectores construídos na plataforma foram usados no gerenciamento de cidades, agricultura de precisão, gerenciamento de florestas, gerenciamento de riscos humanitários e de desastres, agricultura, etc., apenas para citar as aplicações mais comuns. Basicamente, somos surpreendidos todos os dias pelo que nossos usuários estão tentando fazer com nossa plataforma. Você pode experimentá-la e nos dizer como funcionou nas redes sociais.
Obrigado pela ótima entrevista e por compartilhar conosco como a Picterra é poderosa. Leitores que desejam saber mais devem visitar o site da Picterra.












