导读
对不起,我说谎了~~~什么百万年薪架构师开发的,这是我瞎扯的,当然我也很严谨的使用号称,我自己号称的。。。不过点进来你就赚了,因为这个真的是干货,实战项目必备,简单容易好上手而且易懂,能使用多个模型进行训练方便对比各种模型的效果!!!
好了,再bb要被喷了。。。
主要参考:https://github.com/GeorgeSeif/Transfer-Learning-Suite
修改了几个bug
图像分类:
顾名思义,是一个输入图像,输出对该图像内容分类的描述的问题。它是计算机视觉的核心,实际应用广泛。图像分类的传统方法是特征描述及检测,这类传统方法可能对于一些简单的图像分类是有效的,但由于实际情况非常复杂,传统的分类方法不堪重负。现在,我们不再试图用代码来描述每一个图像类别,决定转而使用机器学习的方法处理图像分类问题。主要任务是给定一个输入图片,将其指派到一个已知的混合类别中的某一个标签。
图像分类的过程
目标
使用内置的keras图像分类模型轻松地迁移到自己的模型
1、简单,易上手
2、清晰,易懂
文件结构
为了方便理解用了两种方式展示:
(1)
(2)
文件说明:
checkpoints:用于保存输出模型
data:用于放置数据(训练集和验证集——图片格式,以文件名为标签)
training_logs:用于存在训练日记
main.py:用于模型训练和图片的测试
utils.py:存储着一些基本的功能
使用:
1、使用前可以先看一下之前的文章,方便理解代码内容
2、操作:
(1)在命令行或终端中输入(这个是最简易的操作)
python3 main.py --num_epochs 5 --dataset test --model InceptionV3
# 输入 训练的epoch数目,数据集目录名字 test,训练的模型InceptionV3
(2)如有其他定制要求可以参看如下(help里面有完整说明):
parser = argparse.ArgumentParser()
parser.add_argument('--num_epochs', type=int, default=5, help='Number of epochs to train for')
parser.add_argument('--mode', type=str, default="train", help='Select "train", or "predict" mode. \
Note that for prediction mode you have to specify an image to run the model on.')
parser.add_argument('--image', type=str, default=None, help='The image you want to predict on. Only valid in "predict" mode.')
parser.add_argument('--continue_training', type=str2bool, default=False, help='Whether to continue training from a checkpoint')
parser.add_argument('--dataset', type=str, default="Pets", help='Dataset you are using.')
parser.add_argument('--resize_height', type=int, default=224, help='Height of cropped input image to network')
parser.add_argument('--resize_width', type=int, default=224, help='Width of cropped input image to network')
parser.add_argument('--batch_size', type=int, default=32, help='Number of images in each batch')
parser.add_argument('--dropout', type=float, default=1e-3, help='Dropout ratio')
parser.add_argument('--h_flip', type=str2bool, default=False, help='Whether to randomly flip the image horizontally for data augmentation')
parser.add_argument('--v_flip', type=str2bool, default=False, help='Whether to randomly flip the image vertically for data augmentation')
parser.add_argument('--rotation', type=float, default=0.0, help='Whether to randomly rotate the image for data augmentation')
parser.add_argument('--zoom', type=float, default=0.0, help='Whether to randomly zoom in for data augmentation')
parser.add_argument('--shear', type=float, default=0.0, help='Whether to randomly shear in for data augmentation')
parser.add_argument('--model', type=str, default="MobileNet", help='Your pre-trained classification model of choice')
(3)可选的训练模型有:
VGG16
VGG19
ResNet50
InceptionV3
Xception
InceptionResNetV2
MobileNet
DenseNet121
DenseNet169
DenseNet201
NASNetLarge
NASNetMobile
(4)测试图片
python3 main.py --mode predict --image test.jpg --dataset test --model InceptionV3
(5)输出训练和验证的准确率
最后,希望大家继续支持我哈,前段时间互推和送书有点多,实在很抱歉,掉了很多粉丝,难受啊~~忘记附上源码对不起
如果可以的话,也请大家多帮忙点点这些互推的文章,感谢啦,只有你们的支持,才让我一直努力的写下去,因为我知道有人在等我,哈哈哈,凑不要脸的。。。死鬼