Este tópico permite que os membros do Grupo de IA da UnB (Brasília) estudem coletivamente (em reuniões presenciais e on-line) a lição 1 (parte 1) do curso fastai, mas de um jeito aberto para ajudar também pelas questões, respostas e pelos recursos publicados todos os leitores em português interessados em DL.
Portanto, o idioma deste segmento é principalmente o português (o inglês quando permite evitar traduções inúteis).
Use este tópico para fazer e responder às perguntas da lição 1 (parte 1), mas antes de postar, leia o tópico “How to ask for help”.
Recursos da lição 1 - Ler a lista dos recursos sobre a lição 1 (ao final deste parágrafo)
Blog - Conselho muito de ter um blog e publicar artigos sobre o seu aprendizado do DL. Isso ajuda muito a entender e muito para se fazer conhecer ajudando no mesmo tempo as outras pessoas (no medium.com é fácil, de graças, já há uma comunidade internacional sobre o DL e é bem indexado pelo Google).
Inglês - Compreendendo o inglês dos vídeos, do fórum e dos documentos online.
Lição 1
O resultado mais importante da lição 1 é que treinamos um classificador de imagens que pode reconhecer raças de animais de estimação com precisão de ponta. A chave para esse sucesso é o uso da transferência de aprendizado (transfer learning), que será uma plataforma fundamental para grande parte deste curso. Também veremos como analisar o modelo para entender seus modos de falha. Nesse caso, veremos que os locais em que o modelo está cometendo erros estão nas mesmas áreas que mesmo os especialistas em criação de animais podem cometer erros.
Discutiremos a abordagem geral do curso, que é um tanto incomum por ser de cima para baixo em vez de de baixo para cima. Então, em vez de começar com a teoria, e apenas chegarmos a aplicações práticas mais tarde, começamos com aplicações práticas e, gradualmente, nos aprofundamos cada vez mais nelas, aprendendo a teoria conforme necessário. Essa abordagem exige mais trabalho para os professores se desenvolverem, mas foi demonstrada para ajudar muito os alunos, por exemplo, na pesquisa educacional em Harvard por David Perkins.
Também discutimos como definir o hiperparâmetro mais importante ao treinar redes neurais: a taxa de aprendizado, usando o fantástico método localizador de taxas de aprendizado de Leslie Smith.
Para alcançar uma precisão de classificação de 94% em 37 classes de imagens de gatos e cães (mas seria o mesmo com quase todos os conjuntos de dados de imagens a serem classificados), estas são as poucas linhas de código suficientes gracas ao Transfer Learning e a um Framework de DL tipo fastai.
[ EDIT 24/10/2019 ]: para baixar um dataset de uma competição Kaggle, a gente precisa cadastrar-se no site, aceitar as regras da competição e usar a API Kaggle. No início deste notebook lição3-planeta.ipynb, há todas as informações e códigos necessários por isso.
[EDIT 06/11/2019] 5 soluções (uma com código ) para usar as técnicas de Transfer Learning do fastai com imagens com mais de 3 canais (com 1 solução do Jeremy).
Para as pessoas que gostam de usar o Deep Learning no Geoespacial, existem 2 tópicos muito interessantes no fórum:
Geospatial Deep Learning resources & study group; tópico dedicado para compartilhamento de know-how, perguntas, colaborações de projetos, novas idéias para aplicar o Deep Learning com fast.ai para melhorar nossa compreensão geoespacial do mundo.
Como transferir o aprendizado com entradas diferentes: tópico dedicado sobre como usar imagens com mais de 3 canais RGB (como imagens de satélite) enquanto usar o Transfer Learning para não treinar um classificador do zero.
Além disso, existem competições interessantes no Kaggle:
No entanto, um problema recurrente com as imagens satélite é o numero de canais (band) que é geralmente mais que 3 (RGB) até 16 ou 20. Com imagens com mais de 3 canais, não é possível usar direitamente as técnicas de Transfer Learning do fastai. Como resolver isso?
A segunda ideia é de treinar modelos em paralelo a partir de imagens em 3 canais (e ai, pode usar aqui um modelo já treinado) e colocar uma rede totalmente conectada na extremidade para decidir das classes de classificação. Ainda não testei.
Exemplo: se imagens tiverem 4 canais (A, B, C, D):
Na lição 3, o Jeremy dá uma solução respondendo à questão seguinte:
Question : Some satellite images have 4 channels. How can we deal with data that has 4 channels or 2 channels when using pre-trained models? [1:59:09]
(…) For 4 channel, you probably don’t want to get rid of the 4th channel. So instead, what you’d have to do is to actually modify the model itself. So to know how to do that, we’ll only know how to do in a couple more lessons time. But basically the idea is that the initial weight matrix (weight matrix is really the wrong term, they’re not weight matrices; their weight tensors so they can have more than just two dimensions), so that initial weight tensor in the neural net, one of its axes is going to have three slices in it. So you would just have to change that to add an extra slice, which I would generally just initialize to zero or to some random numbers. So that’s the short version. But really to understand exactly what I meant by that, we’re going to need a couple more lessons to get there.
E vocês? O que pensam? Pode ser soluções para processamento das imagens satélite pelo Deep Learning?
Parabéns ao Hugo, Ivan, Richard, Matheus, a Maria, Igor, Guilherme, a Isabel e ao Rodrigo por seus posts no medium sobre seus classificadores de imagens que eles rodaram atingindo acurácias até 99,3%!!!