Este repositório serve como um Transfer Learning Suite. O objetivo é ser capaz de realizar facilmente a aprendizagem por transferência usando qualquer modelo de classificação de imagens Keras integrado! Qualquer sugestão para melhorar este repositório ou quaisquer novos recursos que você gostaria de ver são bem-vindos!
Você também pode conferir meu Conjunto de Segmentação Semântica.
Todos os modelos Keras integrados estão disponíveis:
Modelo | Tamanho | Precisão principal | Precisão dos 5 principais | Parâmetros | Profundidade |
---|---|---|---|---|---|
VGG16 | 528MB | 0,715 | 0,901 | 138.357.544 | 23 |
VGG19 | 549MB | 0,727 | 0,910 | 143.667.240 | 26 |
ResNet50 | 99MB | 0,759 | 0,929 | 25.636.712 | 168 |
Xcepção | 88MB | 0,790 | 0,945 | 22.910.480 | 126 |
InícioV3 | 92MB | 0,788 | 0,944 | 23.851.784 | 159 |
InícioResNetV2 | 215MB | 0,804 | 0,953 | 55.873.736 | 572 |
MobileNet | 17MB | 0,665 | 0,871 | 4.253.864 | 88 |
DenseNet121 | 33MB | 0,745 | 0,918 | 8.062.504 | 121 |
DenseNet169 | 57MB | 0,759 | 0,928 | 14.307.880 | 169 |
DenseNet201 | 80MB | 0,770 | 0,933 | 20.242.984 | 201 |
NASNetMobile | 21 MB | N / D | N / D | 5.326.716 | N / D |
NASNetLarge | 342MB | N / D | N / D | 88.949.818 | N / D |
main.py: modo de treinamento e previsão
utils.py: Funções do utilitário auxiliar
pontos de verificação: arquivos de pontos de verificação para cada época durante o treinamento
Previsões: resultados de previsão
Este projeto possui as seguintes dependências:
Numpy sudo pip install numpy
OpenCV Python sudo apt-get install python-opencv
TensorFlow sudo pip install --upgrade tensorflow-gpu
Keras sudo pip install keras
A única coisa que você precisa fazer para começar é configurar as pastas na seguinte estrutura:
├── "dataset_name"
| ├── train
| | ├── class_1_images
| | ├── class_2_images
| | ├── class_X_images
| | ├── .....
| ├── val
| | ├── class_1_images
| | ├── class_2_images
| | ├── class_X_images
| | ├── .....
| ├── test
| | ├── class_1_images
| | ├── class_2_images
| | ├── class_X_images
| | ├── .....
Então você pode simplesmente executar main.py
! Confira os argumentos opcionais da linha de comando:
usage: main.py [-h] [--num_epochs NUM_EPOCHS] [--mode MODE] [--image IMAGE]
[--continue_training CONTINUE_TRAINING] [--dataset DATASET]
[--resize_height RESIZE_HEIGHT] [--resize_width RESIZE_WIDTH]
[--batch_size BATCH_SIZE] [--dropout DROPOUT] [--h_flip H_FLIP]
[--v_flip V_FLIP] [--rotation ROTATION] [--zoom ZOOM]
[--shear SHEAR] [--model MODEL]
optional arguments:
-h, --help show this help message and exit
--num_epochs NUM_EPOCHS
Number of epochs to train for
--mode MODE Select "train", or "predict" mode. Note that for
prediction mode you have to specify an image to run
the model on.
--image IMAGE The image you want to predict on. Only valid in
"predict" mode.
--continue_training CONTINUE_TRAINING
Whether to continue training from a checkpoint
--dataset DATASET Dataset you are using.
--resize_height RESIZE_HEIGHT
Height of cropped input image to network
--resize_width RESIZE_WIDTH
Width of cropped input image to network
--batch_size BATCH_SIZE
Number of images in each batch
--dropout DROPOUT Dropout ratio
--h_flip H_FLIP Whether to randomly flip the image horizontally for
data augmentation
--v_flip V_FLIP Whether to randomly flip the image vertically for data
augmentation
--rotation ROTATION Whether to randomly rotate the image for data
augmentation
--zoom ZOOM Whether to randomly zoom in for data augmentation
--shear SHEAR Whether to randomly shear in for data augmentation
--model MODEL Your pre-trained classification model of choice