一个完整的pytorch预训练实现图像分类,模型融合
向AI转型的程序员都关注了这个号???
机器学习AI算法工程 公众号:datayx
利用pytorch实现图像分类,其中包含的densenet,resnext,mobilenet,efficientnet, resnet等图像分类网络,可以根据需要再行利用torchvision扩展其他的分类算法
实现功能
基础功能利用pytorch实现图像分类
包含带有warmup的cosine学习率调整
warmup的step学习率优调整
多模型融合预测,加权与投票融合
利用flask实现模型云端api部署
使用tta测试时增强进行预测
添加label smooth的pytorch实现(标签平滑)
添加使用cnn提取特征,并使用SVM,RF,MLP,KNN等分类器进行分类。
更新添加了模型蒸馏的的训练方法
添加中间层可视化
更新模型部署(采用flask+Redis的方法)
c++ libtorch进行模型部署的简单demo
代码运行教程 获取:
关注微信公众号 datayx 然后回复 图像分类 即可获取。
AI项目体验地址 https://loveai.tech
运行环境
python3.7
pytorch 1.1
torchvision 0.3.0
代码仓库的使用
数据集形式
原始数据集存储形式为,同个类别的图像存储在同一个文件夹下,所有类别的图像存储在一个主文件夹data下。
利用preprocess.py将数据集格式进行转换(个人习惯这种数据集的方式)
python ./data/preprocess.py
转换后的数据集为,将训练集的路径与类别存储在train.txt文件中,测试机存储在val.txt中. 其中txt文件中的内容为
模型介绍
仓库中模型densenet,mobilenet,resnext 模型来自于torchvision
训练
在
cfg.py
中修改合适的参数,并在train.py中选择合适的模型
预测
在cfg.py中TRAINED_MODEL
参数修改为指定的权重文件存储位置,在predict文件中可以选定是否使用tta
python predict.py
当训练完成多模型之后生成多个txt文件之后,利用
ensamble
文件夹中的kaggle_vote.py
进行投票融合或者加权投票融合。
将每个模型生成的csv文件,移动到ensamble/samples/
然后将每个文件命名为method1.py
,method2.py
. 然后运行如下命令进行投票融合
python ./kaggle_vote.py "./samples/method*.csv" "./samples/vote.csv"
cnn + svm
代码存在于cnn_ml.py
中, 利用训练好的cnn特征提取器,将得到的特征保存为pkl文件,然后训练svm分类器, 并将分类器模型保存,然后读取预测
主要需要修改的就是根据不同模型的输出特征向量的大小在cnn_ml.py
中修改NB_features
对应的大小
flask云端部署
将训练存储好的权重文件,存储在flask_deployment
文件夹中
然后修改server.py
中路径运行即可 利用client.py
进行调用
阅读过本文的人还看了以下文章:
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
机大数据技术与机器学习工程
搜索公众号添加: datanlp
长按图片,识别二维码