向AI转型的程序员都关注了这个号👇👇👇
机器学习AI算法工程 公众号:datayx
目标检测yolov5 v6.0版,pytorch实现,包含了目标检测数据标注,数据集增强,训练自定义数据集全流程。
Python >= 3.7 Pytorch >= 1.7.x二.标注工具
pip install labelImg ==1.8.6
安装完毕后,键入命令:
labelImg
或者下载工具 labelImg.exe
项目全部代码,数据集,标注工具,预训练模型 获取方式:
关注微信公众号 datanlp 然后回复 鱼苗 即可获取。
半自动标注
如果数据集较多,可以先手动标注少量,然后训练出初版模型,然后用初版模型预测进行预标注,最后人工检查。
1.将待标注图像放入auto_label/images
2.修改auto_label.py的第62至65行如下的内容:
path = r"auto_label/images" #待标注图片路径 xml_path = r"auto_label/images" #输出的xml标注文件保存路径 yolo_model_weight= './weight/IDCard_v6x_best.pt' #模型文件路径 data_conf = './data/custom_data.yaml' #数据集配置文件路径3.运行auto_label.py
三.数据集增强
1.将标注数据集的标签(xml文件)放入./DataAugForObjectDetection/data/Annotations
2.将标注数据集的图片放入./DataAugForObjectDetection/data/images
3.修改./DataAugForObjectDetection/DataAugmentForObejctDetection.py/中的need_aug_num,即每张图片需要扩增的数量,然后运行./DataAugForObjectDetection/DataAugmentForObejctDetection.py
注意:DataAugmentForObejctDetection_pool.py 是多进程增强版本,耗时较少。代码中的process不宜设置过大否则可能会报错,默认即可。
四.数据集格式转换
将
VOC
的数据集转换成
YOLOv5
训练需要用到的格式。
1.将标注数据集的标签(xml文件)放入./datasets/Annotations
2.将标注数据集的图片放入./datasets/images
3.将voc_to_coco.py中的class_names改为数据集中标注的类别名称,运行 voc_to_coco.py
需要生成每个图片对应的
.txt
文件,其规范如下:
class x_center y_center width height
格式
x_center
和
width
除以图像宽度,将
y_center
和
height
除以图像高度。
生成的
.txt
例子:
如果数据标签没生成正确,则会报错
mlc = int (np.concatenate(dataset.labels, 0 )[:, 0 ]. max ()) # max label class File "D:\app\anaconda3\lib\site-packages\numpy\core\_methods.py", line 40 , in _amax return umr_maximum(a, axis, None , out , keepdims, initial , where ) ValueError: zero - size array to reduction operation maximum which has no identity六.聚类得出先验框(Yolov5 内部已做适配,可选)
1.将
./gen_anchors/clauculate_anchors.py
的CLASS_NAMES改为数据集中标注的类别名称
2.运行
./gen_anchors/clauculate_anchors.py
跑完会生成一个文件
anchors.txt
,里面有得出的建议先验框:
七.修改模型配置文件
在文件夹
./models
下选择一个你需要的模型然后复制一份出来(选择的预训练模型pt文件模型名称必须与模型配置文件yaml对应,否则加载模型会报错),将文件开头的
nc =
修改为数据集的分类数,修改第六步获取的先验框anchors(可选)。
比如,预训练模型是yolov5s.pt,就需要复制一份
./models/yolov5s.yaml
,重命名为custom_yolov5.yaml。
然后修改custom_yolov5.yaml中的 nc和anchors(可选)。
nc: 1 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
八.开始训练
1.将预训练模型下载放置在weight目录下;
2.修改train.py中的第454行weights预训练模型的路径;
3.修改train.py中的第455行cfg模型配置文件路径
4.修改train.py中的第455行batch-size
5.运行train.py
注意 workers=0 #必须为0
如果代码是 从github 重新clone下来的,需要
注释掉 utils/loggers/init.py 的wandb,不然程序会提示你需要注册wandb用户
修改如下:
try: import wandb assert hasattr(wandb, '__version__' ) # verify package import not local dir if pkg.parse_version(wandb.__version__) >= pkg.parse_version( '0.12.2' ) and RANK in [0, -1]: try: wandb_login_success = wandb.login( timeout =30) except wandb.errors.UsageError: # known non-TTY terminal issue wandb_login_success = False if not wandb_login_success: wandb = None except (ImportError, AssertionError): wandb = None wandb = Nonetrain.py开头添加
os .environ[ 'CUDA_VISIBLE_DEVICES' ] = '0' File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/module.py" , line 1102 , in _call_impl return forward_call(* input , **kwargs) File "/data/disk2/pact/yolov5_v6.0/models/common.py" , line 47 , in forward return self.act(self.bn(self.conv(x))) File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/module.py" , line 1102 , in _call_impl return forward_call(* input , **kwargs) File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/conv.py" , line 446 , in forward return self._conv_forward( input , self.weight, self.bias) File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/conv.py" , line 443 , in _conv_forward self.padding, self.dilation, self.groups) RuntimeError: Unable to find a valid cuDNN algorithm to run convolution批量预测步骤:
1.修改predict.py 内第218行weights 模型文件.pt路径,219行source 待预测图像路径,220行data 数据集配置文件路径
2.其他参数可默认,运行predict.py
单张预测步骤:
1.修改detect_image_only.py内第97行至100行的模型路径,数据集配置文件路径等内容
2.运行detect_image_only.py
部署代码简化:
yolo5_inference目录下是清理掉无关代码后的模型部署推理代码,只需关注某几个参数即可。
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
基于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