目录
设计项目案例演示地址: 链接
毕业设计代做选题指导项目方向涵盖:
1. 前言
本项目将采用深度学习的方法,搭建一个鸟类分类识别的训练和测试项目,实现一个简单的鸟类图像分类识别系统。项目收集了26种鸟类品种Bird-Dataset26,约有20000+图片数据;在鸟类数据集Bird-Dataset26上,基于ResNet18的鸟类分类识别,训练集的Accuracy在98%左右,测试集的Accuracy在95%左右,骨干网络,可支持googlenet, resnet[18,34,50], inception_v3,mobilenet_v2等常用模型。
模型input sizeTest准确率****mobilenet_v2224×22495.0000%googlenet224×22496.1538%resnet18224×22495.9615%
2. 鸟类数据集
(1)Bird-Dataset26
项目收集了多个鸟类品种的数据集,命名为Bird-Dataset26,该数据集共收集了26 种鸟类品种,包含常见的鹰,孔雀等鸟种类,总数据超过2万张图片,平均每个种类有约有700+的图片;数据分为train和test,其中训练集train共有20000+张鸟类图像,测试集test共有500+张鸟类图像,可满足深度学习鸟类品种分类识别的需求。
Bird-Dataset26,部分数据是通过网上爬取的,存在部分错误的图片,尽管鄙人已经清洗一部分了,但还是建议你,训练前,再次清洗数据集,不然会影响模型的识别的准确率。鸟类图片数据,可以在这里检索:中国观鸟记录中心
Bird-Dataset26包含的26种鸟类品种,类别名称分别是:
八色鸫
白鹡鸰
白胸翡翠
白胸苦恶鸟
斑头绿拟啄木
赤颈鹤
赤麻鸭
赤胸拟啄木鸟
丛林鸫鹛
戴胜鸟
凤头麦鸡
灰鹡鸰
灰犀鸟
家八哥
家鸦
孔雀
蓝胸佛法僧
绿喉蜂虎
牛背鹭
普通翠鸟
普通缝叶莺
普通朱雀
肉垂麦鸡
山鹡鸰
鹰
棕腹树鹊
(2)自定义数据集
如果需要新增类别数据,或者需要自定数据集进行训练,可以如下进行处理:
- Train和Test数据集,要求相同类别的图片,放在同一个文件夹下;且子目录文件夹命名为类别名称,如
- 类别文件:一行一个列表:?class_name.txt? (最后一行,请多回车一行)
- 修改配置文件的数据路径:?config.yaml?
3. 鸟类分类识别模型训练
本项目以Bird-Dataset26鸟类数据集为训练和测试样本。
(1)项目安装
整套工程基本框架结构如下:
项目依赖python包请参考requirements.txt,使用pip安装即可:
(2)准备Train和Test数据
下载鸟类品种分类数据集,Train和Test数据集,要求相同类别的图片,放在同一个文件夹下;且子目录文件夹命名为类别名称。
数据增强方式主要采用:** 随机裁剪,随机翻转,随机旋转,颜色变换**等处理方式
(4)开始训练
整套训练代码非常简单操作,用户只需要将相同类别的数据放在同一个目录下,并填写好对应的数据路径,即可开始训练了。
训练完成后,在鸟类品种数据集Bird-Dataset26上,训练集的Accuracy在98%左右,测试集的Accuracy在95%左右,骨干网络,可支持googlenet, resnet[18,34,50], inception_v3,mobilenet_v2等常用模型,用户可以自行选择模型训练。
模型input sizeTest准确率****mobilenet_v2224×22495.0000%googlenet224×22496.1538%resnet18224×22495.9615%
(5)可视化训练过程
训练过程可视化工具是使用Tensorboard,使用方法,在终端输入:
可视化效果
?
?
(6)一些优化建议
如果想进一步提高准确率,可以尝试:
- 最重要的: 清洗数据集,鸟类品种数据集Bird-Dataset26,大部分数据是通过网上爬取的,存在部分错误的图片,尽管鄙人已经清洗一部分了,但还是建议你,训练前,再次清洗数据集,不然会影响模型的识别的准确率。+ 使用不同backbone模型,比如resnet50或者更深,参数量更大的模型+ 增加数据增强: 已经支持:** 随机裁剪,随机翻转,随机旋转,颜色变换等数据增强方式,可以尝试诸如mixup,CutMix**等更复杂的数据增强方式+ 样本均衡: 建议进行样本均衡处理,避免长尾问题+ 调超参: 比如学习率调整策略,优化器(SGD,Adam等)+ 损失函数: 目前训练代码已经支持:交叉熵,LabelSmoothing,可以尝试FocalLoss等损失函数
(7) 一些运行错误处理方法:
- 项目不要出现含有中文字符的目录文件或路径,否则会出现很多异常!!!!!!!! + cannot import name ‘load_state_dict_from_url’
由于一些版本升级,会导致部分接口函数不能使用,请确保版本对应
torch==1.7.1
torchvision==0.8.2
或者将对应python文件将
修改为:
4. 鸟类分类识别模型测试效果
demo.py文件用于推理和测试模型的效果,填写好配置文件,模型文件以及测试图片即可运行测试了
运行测试结果:
pred_index:[‘灰犀鸟’],pred_score:[0.5273883]