Этот репозиторий служит пакетом трансферного обучения. Цель состоит в том, чтобы легко выполнить трансферное обучение, используя любую встроенную модель классификации изображений Keras! Любые предложения по улучшению этого репозитория или любые новые функции, которые вы хотели бы видеть, приветствуются!
Вы также можете ознакомиться с моим пакетом семантической сегментации.
Доступны все встроенные модели Keras:
Модель | Размер | Топ-1 Точность | Топ-5 точности | Параметры | Глубина |
---|---|---|---|---|---|
ВГГ16 | 528 МБ | 0,715 | 0,901 | 138 357 544 | 23 |
ВГГ19 | 549 МБ | 0,727 | 0,910 | 143 667 240 | 26 |
Реснет50 | 99 МБ | 0,759 | 0,929 | 25 636 712 | 168 |
Xception | 88 МБ | 0,790 | 0,945 | 22 910 480 | 126 |
НачалоV3 | 92 МБ | 0,788 | 0,944 | 23 851 784 | 159 |
НачалоResNetV2 | 215 МБ | 0,804 | 0,953 | 55 873 736 | 572 |
МобилНет | 17 МБ | 0,665 | 0,871 | 4 253 864 | 88 |
DenseNet121 | 33 МБ | 0,745 | 0,918 | 8 062 504 | 121 |
DenseNet169 | 57 МБ | 0,759 | 0,928 | 14 307 880 | 169 |
Плотная сеть201 | 80 МБ | 0,770 | 0,933 | 20 242 984 | 201 |
NASNetMobile | 21 МБ | NA | NA | 5 326 716 | NA |
NASNetLarge | 342 МБ | NA | NA | 88 949 818 | NA |
main.py: режим обучения и прогнозирования.
utils.py: Вспомогательные служебные функции.
контрольные точки: файлы контрольных точек для каждой эпохи во время обучения.
Прогнозы: Результаты прогнозов
Этот проект имеет следующие зависимости:
Numpy sudo pip install numpy
OpenCV Python sudo apt-get install python-opencv
TensorFlow sudo pip install --upgrade tensorflow-gpu
Керас sudo pip install keras
Единственное, что вам нужно сделать для начала, это настроить папки в следующей структуре:
├── "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
| | ├── .....
Тогда вы можете просто запустить main.py
! Проверьте необязательные аргументы командной строки:
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