Deep Learning::PyTorch & fast.ai

flat,550x550,075,f

Página de Material sobre PyTorch

Tutoriais

Instalando PyTorch em Linux

PyTorch é ultrafácil de instalar, por isso não vamos dedicar uma página à instalação: simplesmente vá para https://pytorch.org/ e selecione sua configuração. O site gerará uma linha de comando de instalação adequada.

Eu, por exemplo, se eu tenho Ubuntu 16.04 atualizadíssimo, com Python 3.6 e Cuda 9.2, a linha de comando será:

conda install pytorch torchvision cuda92 -c pytorch

Se você já  instalou Ubuntu 16.04 com Python 3.5 e Cuda 9.0 para compatibilidade com TensorFlow, então a sua linha de comando será:

conda install pytorch torchvision cuda90 -c pytorch

pytorch2

Para processamento de imagens e Visão Computacional com PyTorch estremos utilizando dois conjuntos de recursos:

Vamos ver adiante o que é cada um:

Torchvision

torchvision é um pacote de PyTorch que consiste de uma coleção de datasets populares, arquiteturas de diversos modelos, prontas para uso e uma biblioteca de transformações sobre imagens úteis para treinar CNNs para Visão Computacional.

  1. Página principal de torchvision
  2. Modelos prontos em torchvision. Atualmente torchvision (v.0.4.1 – Outubro de 2018) tem os seguntes modelos implementados:
    1. AlexNet
    2. VGG
    3. ResNet
    4. SqueezeNet
    5. DenseNet
    6. Inception v3

Fast.AI

fast.ai – “Making neural nets uncool again”, segundo seus criadores, Jeremy Howard e Rachel Thomas, é uma iniciativa dedicada a tornar o poder do Aprendizado Profundo acessível a todos. Para tanto, argumentam que, para esse potencial ser atingido, a tecnologia tem de ser muito mais acessível, intuitiva e fácil de usar do que é hoje. Para isso fast.ai oferece um framework eduicacional de DL e uma biblioteca de alto nível, baseada em PyTorch que objetiva tornar muito mais fácil desenvolver novas aplicações em DL.

Material:

  1. fastai v1 for PyTorch: Fast and accurate neural nets using modern best practices
  2. Introduction to Machine Learning for Coders: Launch
  3. Documentação: http://docs.fast.ai/
    1. Mostra como treinar um dataset MNIST usando resnet18 
    2. Github com o Jupyter do exemplo acima: https://github.com/fastai/fastai/blob/master/examples/vision.ipynb
  4. fast.ai implementa vários modelos que não estão à disposição na biblioteca de modelos padrão do PyTorch: http://docs.fast.ai/vision.models.html
    1. Darknet architecture, which is the base of Yolo v3
    2. Unet (segmentação para a áea médica!) architecture based on a pretrained model. The original unet is described here, the model implementation is detailed in models.unet
    3. Wide resnets architectures, as introduced in this article.

Hiromi Suenaga publicou uma série de comentários e toques adicionais sobre os dois capítulos do Curso de Deep Learning com Jupyters de fast.ai. Possuem muitos insights e toques úteis, além de discutir detalhes da implementação de fast.ai que não estão nas aulas originais:

  1. Medium::Deep Learning 2: Part 1 Lesson 1
  2. Medium::Deep Learning 2: Part 2 Lesson 8

Tutoriais de Aplicações com Pytorch

  1. PyTorch Official Tutorials
  2. fast.ai: Recognizing cats and dogs
    1. Parte do 2018 edition of fast.ai’s 7 week course, Practical Deep Learning For Coders
  3. Day 24: How to build a Deep Learning Image Classifier for Game of Thrones dragons
  4. Towards Data Science: ResNet for Traffic Sign Classification With PyTorch

Links

Model Zoos e Redes Prontas

  1. PyTorch – pretrained torchvision examples
  2. Model Zoo com Pretrained ConvNets for pytorch: NASNet, ResNeXt, ResNet, InceptionV4, InceptionResnetV2, Xception, DPN, etc:

Segmentação:

UNet:

SegNet:

DeepLab:

FCN:

ENet:

DilatedNet:

…e vários outros. Você vai achar uma compilação aqui: https://github.com/mrgloom/awesome-semantic-segmentation

 

Copyright © 2018 Aldo von Wangenheim/INCoD/Universidade Federal de Santa Catarina

Sobre o Autor

possui graduação em Ciências da Computação pela Universidade Federal de Santa Catarina (1989) e Doutorado Acadêmico (Dr. rer.nat.) em Ciências da Computação pela Universidade de Kaiserslautern (1996). Atualmente é professor Titular da Universidade Federal de Santa Catarina, onde é professor do Programa de Pós-graduação em Ciência da Computação e dos cursos de graduação em Ciências da Computação e Sistemas de Informação. Tem experiência nas áreas de Informática em Saúde, Processamento e Análise de Imagens e Engenharia Biomédica, com ênfase em Telemedicina, Telerradiologia, Sistemas de Auxílio ao Diagnóstico por Imagem e Processamento de Imagens Médicas, com foco nos seguintes temas: analise inteligente de imagens, DICOM, CBIR, informática médica, visão computacional e PACS. Coordena o Instituto Nacional de Ciência e Tecnologia para Convergência Digital - INCoD. Foi o criador e primeiro Coordenador do Núcleo de Telessaúde de Santa Catarina no âmbito do Programa Telessaúde Brasil do Ministério da Saúde e da OPAS - Organização Pan-Americana de Saúde e criador do Núcleo Santa Catarina da RUTE - Rede Universitária de Telemedicina.