Skip to content

huhuzwxy/keras_classfication

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

这是一个完整的keras图像分类应用,网络结构为EfficientNet,另外也可调用其他的resnet, densenet等其他的网络结构,文件包含了训练测试推理到flask云端部署的整个过程

这个代码项目包含了数据集格式的转换,数据集生成提取,图像增广,label_smoothing, 单gpu或者多gpu的训练,模型的保存,模型保存格式的准换,单gpu或cpu的推理预测,模型的评估,还有带warmup的cosine学习率。最后还提供使用flask进行模型云端部署的代码文件。

另外添加了卷积注意力机制的CBAM模块

添加双线性卷积Bilinear pooling,增强模型的识别能力

解决keras多gpu训练模型的保存与读取问题

另外添加数据集类别不均衡时多类别分类的focal loss的keras实现

数据集的均值与方差的计算

数据集类别数目分析

混淆矩阵的keras实现

还有一些数据集格式转换的文件,破损图像文件删除代码文件

首先介绍各个代码文件或者文件夹的内容

run.py

这是训练,测试与推理预测的启动文件,定义很多参数

data_gen_label.py

这是一个进行数据集提取的代码文件,其中进行了label_smoothing操作,还有一些数据增强操作

random _eraser.py

这是一个进行随机擦除图像增广处理的代码文件

train.py 与 multigpu_tain.py

这两个文件是训练使用的代码文件,其中train.py是进行单gpu的训练,而multigpu_train.py是进行多gpu的训练,二者的主要差别在于模型的保存上的差别,在多gpu训练时,为了模型在预测能够在单gpu或者cpu上进行预测,对多gpu训练的文件进行一些修改,多gpu训练保存的pb格式的模型文件在单gpu与cpu上进行预测均测试通过

warmup_cosine_decay_scheduler.py

这是一个带有warmup的余弦学习率调整的代码文件

save_model.py 与save_multigpu_model.py

这两个文件是将训练保存的h5格式的文件,保存为pb格式,同样为了在cpu与单gpu上进行预测,将二者进行差别区分

eval.py

这是用来评估训练得到的模型的准确度的代码文件。

inference.py

这是进行单张图片预测的模型文件

CBAM.py

卷积注意力机制模块的CBAMkeras实现

bilinear_pooling.py

用于细粒度分类的双线性池化模块

Groupnormalization.py

组归一化的keras实现

other_model.py

存储调用其他模型利用resnet,densenet等一些其他的方法。

label.json

存放类别字典

efficientnet文件夹

这个文件夹下存放efficientnet的模型代码文件

deployment 文件夹

server.py 是进行模型云端部署的代码文件 client.py 是本地调用云端模型的代码文件

other 文件夹

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 数据集各类别数目统计柱状图显示

log_file 文件夹

用于存放训练中日志文件,tensorboard格式的文件

save_h5_model 文件夹

用于存放模型训练过程中保存的h5文件与保存的pb模型文件

sh 文件夹

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 文件夹下的参数直接运行即可。

About

利用keras实现简单的图像分类算法

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • Shell 0.1%