基于YOLOv5实现中药饮⽚识别(含源码)【⽬标检测项⽬】
⼀. 项⽬背景
中医药⽂化是中华民族传统⽂化的瑰宝之⼀,历史源远流长。中药饮⽚是中药材在中医药理论指导下,结合药材⾃⾝性质及调剂、制剂要求,按照特定炮制⽅法加⼯⽽成,是中医临床开⽅施治的基础。但中药种类繁多,单凭⾁眼难以长时间⾼效准确地对其识别与分类。
近年来,深度学习技术在图像识别领域取得较⼤进展,其特征学习⽅法和深层结构可⾃动学习图像⾼层语义信息,拟合复杂模型的能⼒增强。结合YOLOv5,我们可以实现中药饮⽚实时⽬标检测。
⼆. 项⽬环境配置
⼯具版本
操作系统Windows 10 家庭中⽂版
IDE PyCharm 2019.1.1(Professional Edition)
Python Anaconda Python 3.8
Pytorch torch 1.7.1+cu101
CUDA V11.0.194
cuDNN8.0.5
显卡NVIDIA GeForce MX 150
附上虚拟环境所需的所有的模块:
(yolov5)C:\Users\Tianle Hu>pip list Package                Version
-------------------------------------------absl-py                0.12.0
cachetools            4.2.1
certifi                2020.6.20
chardet                4.0.0
cycler                0.10.0
Cython                0.29.22
future                0.18.2
google-auth            1.28.0
google-auth-oauthlib  0.4.3
grpcio                1.36.1
idna                  2.10
kiwisolver            1.3.1
labelImg              1.8.5
lxml                  4.6.3
Markdown              3.3.4
matplotlib            3.3.4
numpy                  1.20.1
oauthlib              3.1.0
opencv-python          4.5.1.48
pandas                1.2.3
Pillow                8.1.2
pip                    21.0.1
protobuf              3.15.6
pyasn1                0.4.8
pyasn1-modules        0.2.8 pycocotools            2.0.2
pyparsing              2.4.7
PyQt5                  5.15.4
PyQt5-Qt5              5.15.2
PyQt5-sip              12.8.1
python-dateutil        2.8.1
pytz                  2021.1
PyYAML                5.4.1
requests              2.25.1
requests-oauthlib      1.3.0
rsa                    4.7.2
scipy                  1.6.2
seaborn                0.11.1
setuptools            52.0.0.post20210125 sip                    4.19.13
six                    1.15.0
tensorboard            2.4.1 tensorboard-plugin-wit 1.8.0
thop                  0.0.31.post2005241907 torch                  1.7.1+cu101 torchaudio            0.7.2
torchvision            0.8.2+cu101
tqdm                  4.59.0
typing-extensions      3.7.4.3
urllib3                1.26.4
Werkzeug              1.0.1
wheel                  0.36.2
wincertstore          0.2
python处理xml文件三. 制作数据集
1. 通过爬⾍爬取164类中药饮⽚图像,以每⼀类中药名命名该⽂件夹,如下图所⽰(仅展⽰了前10类中药饮⽚):
这⾥我们取⼗味中药作为我们⽬标检测的对象:
2. 我们将这⼗味中药放置到data⽂件夹下⾯的images中,格式均为.jpg
项⽬⽂件夹架构如下:
data⽬录下包含Annotations, images, ImageSets, labels 四个⽂件夹:
⽂件夹名备注
Annotation存储 xml ⽂件
images存储 jpg 格式图⽚
ImageSets存储 txt 格式⽂件,包含分类和检测的数据集分割⽂件
labels存储 txt 格式⽂件,包含label标注信息
ImageSets⽂件夹包含四个 txt ⽂件:
⽂件夹名备注
<包含训练集图像名称
<包含验证集图像名称
<包含训练集和验证集的合集图像名称
<包含测试集图像名称
3. 数据集标注
采⽤LabelImg进⾏标注,如果带yolo转换格式的就直接⽤该格式进⾏标注,如果没有的话可以选择PascalVOC格式,然后再进⾏转换即可。
即可。
下图展⽰的是对艾叶图像数据集的标注:
images⽂件夹下包含原始中药图像数据集:
如果是使⽤PascalVOC进⾏图像数据集标注的话会⽣成xml⽂件,我们将其保存到data⽂件夹下的Annotations⽂件夹进⾏保存:
如果是直接使⽤了yolo格式进⾏图像数据集标注的话则可以在data⽂件夹下的labels的⽂件夹下得到 .txt ⽂件:
第⼀列的 0 表⽰类别,后⾯四列数据表⽰标注时候的bunding框的信息。
4. 运⾏makeTxt.py将数据集按照8:1:1的⽐例来划分训练集、验证集、测试集(随即分类)
5. 运⾏voc_label.py将图⽚数据集标注后的xml⽂件中的标注信息读取出来并写⼊txt⽂件,运⾏后在labels⽂件夹中出现所有图⽚数据集
的标注信息