Aula 1 — Classificador de células sanguíneas
O dataset do Kaggle que eu decidi utilizar é o de células sanguíneas, que estão divididas em 4 tipos: eosinófilos, linfócitos, monócitos e neutrófilos. O dataset possui 9962 imagens de treinamento e 2492 imagens de validação.
Para fazer a classificação, utilizei o Google Colaboratory e tomei como base o notebook usado na Aula 1, sobre pets, e adaptei ao meu dataset mudando a criação do ImageDataBunch. Com a troca do método ‘from_name_re’ para ‘from_folder’ de ‘ImageDataBunch’, e adaptando os parâmetros, que são facilmente encontrados no Google, criei meu novo ImageDataBunch, que pode ser visualizado com o método ‘show_batch’:
Treinei meu modelo a partir de ‘Transfer Learning’ usando ‘resnet34’, e realizei 4 épocas de treinamento com o método ‘fit_one_cycle()’. Após o término do treinamento, usei ‘unfreeze()’ para treinar novamente. Então, carreguei o resultado anterior ao ‘unfreeze()’ e procurei melhorar a performance observando a curva de ‘learning rate’ do meu modelo.
Com os parâmetros ajustados, realizei um novo ‘unfreeze()’ e realizei mais 5 épocas de treinamento, obtendo um valor final de ‘error rate’ de aproximadamente 10.8%, resultando em uma acurácia de aproximadamente 89.2%.
Olhando alguns dos resultados de outras pessoas no Kaggle, observei que as acurácias variam desde 85% até 92% aproximadamente.
Ao observar a matriz de confusão:
pode-se observar que o classificador teve muita dificuldade em distinguir monócitos de neutrófilos , que pode ser confirmado pelos ‘top_losses’:
no qual todos são erros que classificam monócitos como neutrófilos.
O notebook que utilizei pode ser visualizado no GitHub a partir deste link.