这个代码项目包含了数据集格式的转换,数据集生成提取,图像增广,label_smoothing, 单gpu或者多gpu的训练,模型的保存,模型保存格式的准换,单gpu或cpu的推理预测,模型的评估,还有带warmup的cosine学习率。最后还提供使用flask进行模型云端部署的代码文件。
另外添加了卷积注意力机制的CBAM模块
添加双线性卷积Bilinear pooling,增强模型的识别能力
解决keras多gpu训练模型的保存与读取问题
另外添加数据集类别不均衡时多类别分类的focal loss的keras实现
数据集的均值与方差的计算
数据集类别数目分析
混淆矩阵的keras实现
还有一些数据集格式转换的文件,破损图像文件删除代码文件
这是训练,测试与推理预测的启动文件,定义很多参数
这是一个进行数据集提取的代码文件,其中进行了label_smoothing操作,还有一些数据增强操作
这是一个进行随机擦除图像增广处理的代码文件
这两个文件是训练使用的代码文件,其中train.py是进行单gpu的训练,而multigpu_train.py是进行多gpu的训练,二者的主要差别在于模型的保存上的差别,在多gpu训练时,为了模型在预测能够在单gpu或者cpu上进行预测,对多gpu训练的文件进行一些修改,多gpu训练保存的pb格式的模型文件在单gpu与cpu上进行预测均测试通过
这是一个带有warmup的余弦学习率调整的代码文件
这两个文件是将训练保存的h5格式的文件,保存为pb格式,同样为了在cpu与单gpu上进行预测,将二者进行差别区分
这是用来评估训练得到的模型的准确度的代码文件。
这是进行单张图片预测的模型文件
卷积注意力机制模块的CBAMkeras实现
用于细粒度分类的双线性池化模块
组归一化的keras实现
存储调用其他模型利用resnet,densenet等一些其他的方法。
存放类别字典
这个文件夹下存放efficientnet的模型代码文件
server.py 是进行模型云端部署的代码文件 client.py 是本地调用云端模型的代码文件
confusion_matrix.py 模型训练完成之后,计算混淆矩阵,分析错误样本的原因
data_del.py 对于破损或者错误图像的删除
data_reconstruction_dir2txt.py 与 data_reconstruction_txt2dir.py
这两个文件是进行两种数据集格式的转换文件,一种数据集格式为 一个文件夹下的图像数据为同一类。另一种数据集格式为,所有的图像放置在同一个文件夹下,图像的类别利用与图像同名的txt文件表示。
focal_loss.py 多类别分类应对数据集类别不均衡的focal loss实现
mean_std.py 数据集的均值与方差的计算
statistics_visual.py 数据集各类别数目统计柱状图显示
用于存放训练中日志文件,tensorboard格式的文件
用于存放模型训练过程中保存的h5文件与保存的pb模型文件
convert_pb.sh 终端命令,用于保存pb模型 eval.sh 终端命令, 用于评估模型准确度 train.sh 终端命令, 用于训练模型
模型适用的数据集格式为 所有图像放置在同一个文件夹下,标识图像类别的txt文件与图像放置在同一个文件夹下,txt文件的格式为: limg_1.jpg, 0
每个txt文件只有一行,标识同名图像文件的类别。配合label.json就可以得到实际的类别。 可以使用提供的data_recnstructon.py文件进行数据集格式的转换。
数据集放置在前一级文件夹下,命名为datasets/train_datasets,与datasets/val_datasets,然后修改终端命令 sh 文件夹下的参数直接运行即可。