yolo入门使用

yoloV4

依赖环境

opencv4.5.4
CUDA11.2
cuDNN11.2(v8.1.1.33) 要求和CUDA的版本一致
VS2019

训练

  • 编译。

    主要编译darknet.slnyolo_console_dll.slnyolo_cpp_dll.sln

    \build\darknet\x64下主要生成darknet.exeyolo_console_dll.exe和动态静态库yolo_cpp_dll.lib,yolo_cpp_dll.dll

  • 简单体验

    • 用作者训练好的权重文件进行简单体验。下载权重文件yolov4.weights

    • cmd运行:darknet.exe detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights

  • 训练自己的数据

    • 数据标注。工具labelimg,将标注文件.txt和图像数据.jpg放在同一个目录下,并且名字要相同

    • 下载预训练权重文件:yolov4.conv.137

    • 创造一份.cfg文件,可以从yolov4-custom.cfg拷贝一份出来。根据自己的数据集情况修改cfg。具体修改内容见官方readme

      • 查找[yolo],[yolo]子项里的classes改成实际类别的数目;紧挨着[yolo]子项的上一个[convolutional]子项里的filters改成:(实际类别数+5)*3
    • 创建一个train.txt文件,用于存放训练的数据集路径。当然,也需要创建一个test.txt文件,用于验证,同样用于存放验证的数据集路径。两个文件的路径存放在obj.data中。

    • 创造 obj.namesobj.data.格式固定。

    • cmd运行:

      darknet.exe detector train dataHat/hat.data cfg/yolo-hat.cfg cfg/yolov4.conv.137

      darknet.exe detector train dataHat/hat.data cfg/yolo-hat.cfg cfg/yolov4.conv.137 -map

预测

  • 单张验证

    darknet.exe detector test dataHat\hat.data cfg\yolo-hat.cfg backup\yolo-hat_last.weights

  • 验证集验证

    • -test 预测验证集,结果保存在result.txt中,打印关注的主要内容为:

      Enter Image Path:  Detection layer: 139 - type = 28 
      Detection layer: 150 - type = 28 
      Detection layer: 161 - type = 28 
      dataHat/image/test/000304.jpg: Predicted in 17.006000 milli-seconds.
      hat: 100%	(left_x:   47   top_y:  121   width:  101   height:  109)
      hat: 100%	(left_x:  156   top_y:   81   width:  100   height:  117)
      hat: 100%	(left_x:  300   top_y:   47   width:  116   height:  
      .........
      

      darknet.exe detector test dataHat\hat.data cfg\yolo-hat.cfg backup\yolo-hat_last.weights -dont_show -ext_output <dataHat/test.txt> dataHat\result.txt

    • -vaild 预测验证集,结果保存在results\文件夹中。注意需要创建一个result\文件夹。里面的文件按照names进行分类为单独的.txt,打印关注的主要内容为:

      与上面👆预测的数据集是一样的,都是<dataHat/test.txt>里保存的数据集合,但是预测结果的打印不同,上面的是置信度、左上点横坐标、左上点纵坐标、宽度、高度。而下面的是置信度左上点横坐标、左上点纵坐标、右下点横坐标、右下点纵坐标

      000304 0.996757 300.785461 47.688496 416.700073 172.940399
      000304 0.998327 48.145359 121.596817 149.044846 230.569717
      000304 0.997714 157.131287 82.440903 256.731842 199.660233
      000304 0.001116 87.656288 39.449989 330.453796 245.229797
      000304 0.001022 1.000000 80.614876 216.206879 262.445404
      .........
      

      darknet.exe detector valid dataHat\hat.data cfg\yolo-hat.cfg backup\yolo-hat_last.weights -out "prefix_"

    • -recall

      darknet.exe detector recall dataHat\hat.data cfg\yolo-hat.cfg backup\yolo-hat_last.weights

yoloV7

依赖环境

opencv4.5.4
CUDA11.2
cuDNN11.2(v8.1.1.33) 要求和CUDA的版本一致
VS2019
Cmake3.21.5
python3.7.0
Anaconda匹配python3.7.0的版本
Pytorch与cuda匹配的版本

环境搭建、训练、预测和部署

参考:YOLOv7(目标检测)入门教程详解—环境安装

YOLOv7(目标检测)入门教程详解—检测,推理,训练

YOLOv7(目标检测)入门教程详解—C++部署

照着步骤做就行

参考指令:

  • 训练

python train.py --weights weights/yolov7_training.pt --cfg cfg/training/yolov7_dicom.yaml --data data/dicom.yaml --device 0 --batch-size 8 --epoch 10 --workers 2

  • 验证/预测

python detect.py --weights runs/train/exp/weights/best.pt --source datasets/test --device 0

  • 导出onnx模型

python export.py --weights runs/train/exp/weights/best.pt --device 0

可能会遇到的问题

其他

脚本工具
  • 批量提取Dicom中的定位片dicom的脚本

    见项目中Tool文件夹下的FindLocalizerDicom

  • 批量jpg格式的图像锐化处理的脚本

    见项目中Tool文件夹下的ImageSharpen

  • 统计各个标签的样本集总数

    见项目中Tool文件夹下的LabelCounter

dicom转jpg

将所有定位片dicom导入MicroDicom工具,然后照如下导出jpg

image-20230209114945411
批量修改文件名
  1. cmd 运行 dir /b>rename.xls
  2. A列原名,B列重命名,C列输入公式="ren "&""""&A1&""""&" "&B1
  3. 将C列copy到新的txt文件夹中,并修改后缀名.bat
获取文件路径
  • 获取当前目录及子目录下的所有文件 dir /s /b > list.txt
  • 只获取当前目录的所有文件 dir /b > list.txt
  • 只获取当前目录与子目录下的jpg文件 dir *.jpg /s /b > list.txt
  • 只获取当前目录下的jpg文件 dir *.jpg /b > list.txt
标注
  1. 使用labelimg,用pip install labelimg安装
  2. 标注前先建一个predefined_classes.txt的文件,里面写自己要训练的识别类型
  3. cmd运行labelimg D:\yolo-test\image\.BodyPart\HEAD\picture D:\yolo-test\image\.BodyPart\predefined_classes.txt,这样就把要标注的文件夹和预设置的识别类型文件导入进去了
  4. 点击Change Save Dir选择标注文件保存的路径,一般与图片集放在同一个目录下。该操作每次启动labelimg都需要做,否则已经标注的txt及其标注框不会在labelimg中显示出来
  5. w打开标注尺,点d保存当前的标注并跳到下一张
opencv配置

vs2017及以下选择vc14,vs2019及以上选择vc15

  • 环境变量

    1. 新建变量名:OpenCV_DIR,变量值:D:\SoftTool\opencv-4.5.4\opencv\build
    2. 在path变量中,添加变量值:D:\SoftTool\opencv-4.5.4\opencv\build\x64\vc15\binD:\SoftTool\opencv-4.5.4\opencv\build\x64\vc14\bin
  • 文件拷贝

    1. 拷贝.\opencv\build\x64\vc15\binopencv_world454.dllopencv_world454d.dllC:\Windows\SysWOW64
    2. 拷贝.\opencv\build\x64\vc15\binopencv_videoio_ffmpeg454_64.dllopencv_world454.dllC:\Windows\System32
  • 项目

    1. C/C++ > 常规 > 附加包含目录 $(OPENCV_DIR)\includeOpenCV_DIR\include\opencv2

    2. 链接器 > 常规 > 附加库目录 $(OPENCV_DIR)\x64\vc15\lib

    3. 链接器 > 输入 > 附加依赖项 opencv_world454.libopencv_world454d.lib

      也可以在代码中写:#pragma comment(lib, "opencv_world454d.lib")

    1. 一般使用 C/C++链接器下面的设置,而一般不建议使用VC++目录下面的设置

    2. 包含目录:修改了系统的include宏的值,是全局的;
      附加包含目录:用于当前项目,对其他项目没有影响。 (库目录和附加库目录的区别同上)

    3. 库文件:编译的时候只需要静态库(即链接阶段),动态库是在运行的时候才需要;静态库在 附加库目录附加依赖项配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值