一、github官方网址

  1. https://github.com/ultralytics/yolov5/tree/v6.1

二、labelme标记数据集:

(1)、进入虚拟环境

(2)、pip install labelme

(3)、labelme打开

(4)、注意选择自动保存

注:labelme 支持jpg等格式,不支持HEIC格式,图片格式转化网址(一次只支持转化10张图片):HEIC转JPG - 免费在线将HEIC文件转换成JPG (cdkm.com)

三、json转为txt

labelme保存的是json文件,需要将json文件转化为txt文件,用于label标签

可用python代码批量转化json文件:

  1. import json
  2. import os
  3.  
  4. # 标签名称,labelme做了几个标签这里就填几个
  5. name2id = {'fruit': 0}
  6.  
  7. def convert(img_size, box):
  8. dw = 1. / (img_size[0])
  9. dh = 1. / (img_size[1])
  10. x = (box[0] + box[2]) / 2.0 - 1
  11. y = (box[1] + box[3]) / 2.0 - 1
  12. w = box[2] - box[0]
  13. h = box[3] - box[1]
  14. x = x * dw
  15. w = w * dw
  16. y = y * dh
  17. h = h * dh
  18. return (x, y, w, h)
  19.  
  20. def decode_json(json_floder_path, json_name):
  21. txt_name = 'E:\\***\\***\\目标检测\\labels\\' + json_name[0:-5] + '.txt'
  22. # 存放txt文件夹的绝对路径
  23. txt_file = open(txt_name, 'w')
  24.  
  25. json_path = os.path.join(json_floder_path, json_name)
  26. data = json.load(open(json_path, 'r', encoding='gb2312'))
  27.  
  28. img_w = data['imageWidth']
  29. img_h = data['imageHeight']
  30.  
  31. for i in data['shapes']:
  32.  
  33. label_name = i['label']
  34. if (i['shape_type'] == 'rectangle'):
  35. x1 = int(i['points'][0][0])
  36. y1 = int(i['points'][0][1])
  37. x2 = int(i['points'][1][0])
  38. y2 = int(i['points'][1][1])
  39.  
  40. bb = (x1, y1, x2, y2)
  41. bbox = convert((img_w, img_h), bb)
  42. txt_file.write(str(name2id[label_name]) + " " + " ".join([str(a) for a in bbox]) + '\n')
  43.  
  44. if __name__ == "__main__":
  45. # 存放json文件夹的绝对路径
  46. json_floder_path = 'E:\\***\\***\\目标检测\\20220808json'
  47. json_names = os.listdir(json_floder_path)
  48. for json_name in json_names:
  49. decode_json(json_floder_path, json_name)

四、训练集train和验证集valid

  1. train或者valid中保存的imageslabels中的文件名是一一对应的
 

五、代码修改

(1)yolov5-6.1/utils/dataset.py

  1. num_workers=0

(2)yolov5-6.1\data\fruittest.yaml 修改训练数据

fruittest.yaml代码:

  1. train: ../train/images
  2. val: ../valid/images
  3.  
  4. # Classes
  5. nc: 1 # number of classes
  6. names: ['fruit'] # class names

六、开始训练

  1. python train.py --data fruittest.yaml --cfg yolov5s.yaml --weights '' --batch-size 32 --epoch 300

七、预测

  1. python detect.py --source data\vedio --weights runs\train\exp5\weights\best.pt --data data\fruittest.yaml 

纯绿色火龙果检测结果:https://live.csdn.net/v/230691

八、问题与反思

(1)、问题描述:AttributeError: 'NoneType' object has no attribute '_free_weak_ref'

    解决办法:修改yolov5-6.1/utils/dataset.py中num_workers    

  1. num_workers=0

九、详细内容详见:

https://blog.csdn.net/qq_42051389/article/details/126248773?spm=1001.2014.3001.5502

目标检测yolov5检测火龙果的更多相关文章

  1. PointRCNN: 点云的3D目标生成与检测

    PointRCNN: 点云的3D目标生成与检测 PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud 论文地址 ...

  2. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

  3. 目标检测 — one-stage检测(二)

    one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLO,S ...

  4. 目标检测 — one-stage检测(一)

    总结的很好:https://www.cnblogs.com/guoyaohua/p/8994246.html 目前主流的目标检测算法主要是基于深度学习模型,其可以分成两大类:two-stage检测算法 ...

  5. 目标检测 — two-stage检测

    目前主流的目标检测算法主要是基于深度学习模型,其可以分成两大类:two-stage检测算法:one-stage检测算法.本文主要介绍第一类检测算法,第二类在下一篇博文中介绍. 目标检测模型的主要性能指 ...

  6. 目标检测——深度学习下的小目标检测(检测难的原因和Tricks)

    小目标难检测原因 主要原因 (1)小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素 ...

  7. OpenCVSSDpython目标探测对象检测

    1.请参考大牛博客链接 https://www.aiuai.cn/aifarm822.html

  8. 车脸检测 Adaboost 检测过程

    上一节中我介绍了如何使用Opencv自带的opencv_traincascade.exe来做训练,接下来介绍如何使用训练生成的cascade.xml模型文件来检测车脸. 首先需要说明的是我这里的训练数 ...

  9. 使用Python基于VGG/CTPN/CRNN的自然场景文字方向检测/区域检测/不定长OCR识别

    GitHub:https://github.com/pengcao/chinese_ocr https://github.com/xiaofengShi/CHINESE-OCR |-angle 基于V ...

  10. 学习OpenCV——行人检测&人脸检测(总算运行出来了)

    之前运行haar特征的adaboost算法人脸检测一直出错,加上今天的HOG&SVM行人检测程序,一直报错. 今天总算发现自己犯了多么白痴的错误——是因为外部依赖项lib文件没有添加完整,想一 ...

随机推荐

  1. vue.js----之router详解(三)

    在vue1.0版本的超链接标签还是原来的a标签,链接地址由v-link属性控制 而vue2.0版本里超链接标签由a标签被替换成了router-link标签,但最终在页面还是会被渲染成a标签的 至于为什 ...

  2. 靶机练习5: Sar

    靶机地址 https://www.vulnhub.com/entry/sar-1,425/ 信息收集阶段 进行全端口扫描,枚举目标的端口和服务 nmap -n -v -sS --max-retries ...

  3. Java笔记_this关键字_HomeWork(5 - 9 题)

    第五题 /** * @ClassName HomeWork05 * @Description TODO * @Author Orange * @Date 2021/4/25 10:09 * @Vers ...

  4. ES5 绑定 this 的方法

    this的动态切换,固然为 JavaScript 创造了巨大的灵活性,但也使得编程变得困难和模糊.有时,需要把this固定下来,避免出现意想不到的情况.JavaScript 提供了call.apply ...

  5. python菜鸟学习: 13. excel文件编辑openpyxl使用

    #1. xls文件转换成xlsx文件,需要使用到 win32com from win32com import client as wc filepath = "D:\\python\\liy ...

  6. SQL Server修改表的时候出现错误:未更新任何行,未删除任何行

    无论点击什么,一直报错:未更新任何行,未删除任何行,就差点砸电脑啦. 参考这个大神才解决的问题: https://blog.csdn.net/weixin_44690047/article/detai ...

  7. 性能测试-dstat以及sar(网络相关数据查看)

    1.dstat参数说明 # 安装 yum install dstat -y dstat命令不加任何参数时,会收集CPU.磁盘.网络.分页.系统的数据信息,每秒收集一次.缺省参数时相当于dstat -c ...

  8. 重新安装office原版本没卸载干净

    先在设置--卸载界面确保已经卸载 在键盘上按"win+R",在运行窗口里面输入"regedit",回车 ,进入注册表编辑器 找到products 删除与offi ...

  9. G1 垃圾回收详解

    引用: https://www.cnblogs.com/ciel717/p/16190562.html

  10. 2023Hgame

    2023Hgame Shared Diary 源代码先放一下 const express = require('express'); const bodyParser = require('body- ...