一、github官方网址

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文件:

import json
import os # 标签名称,labelme做了几个标签这里就填几个
name2id = {'fruit': 0} def convert(img_size, box):
dw = 1. / (img_size[0])
dh = 1. / (img_size[1])
x = (box[0] + box[2]) / 2.0 - 1
y = (box[1] + box[3]) / 2.0 - 1
w = box[2] - box[0]
h = box[3] - box[1]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return (x, y, w, h) def decode_json(json_floder_path, json_name):
txt_name = 'E:\\***\\***\\目标检测\\labels\\' + json_name[0:-5] + '.txt'
# 存放txt文件夹的绝对路径
txt_file = open(txt_name, 'w') json_path = os.path.join(json_floder_path, json_name)
data = json.load(open(json_path, 'r', encoding='gb2312')) img_w = data['imageWidth']
img_h = data['imageHeight'] for i in data['shapes']: label_name = i['label']
if (i['shape_type'] == 'rectangle'):
x1 = int(i['points'][0][0])
y1 = int(i['points'][0][1])
x2 = int(i['points'][1][0])
y2 = int(i['points'][1][1]) bb = (x1, y1, x2, y2)
bbox = convert((img_w, img_h), bb)
txt_file.write(str(name2id[label_name]) + " " + " ".join([str(a) for a in bbox]) + '\n') if __name__ == "__main__":
# 存放json文件夹的绝对路径
json_floder_path = 'E:\\***\\***\\目标检测\\20220808json'
json_names = os.listdir(json_floder_path)
for json_name in json_names:
decode_json(json_floder_path, json_name)

四、训练集train和验证集valid

train或者valid中保存的images和labels中的文件名是一一对应的
 

五、代码修改

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

num_workers=0

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

fruittest.yaml代码:

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

六、开始训练

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

七、预测

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    

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. jar包下不下来

    1.maven中的settings.xml文件中的镜像资源配置 <mirror> <id>alimaven</id> <name>aliyun mave ...

  2. python_类 对象 属性

    1, 类 (class) 类的概念表示某种对象的集合,用于表示某一种相同对象的模板.例如:人作为一个类 由这个"人"类定义出来的内容就是这个类定义出来的对象,类还拥有属性和功能,属 ...

  3. QT中文显示乱码

    1. 环境:VS2015+QT5.10 解决:在头文件中声明  #pragma  execution_character_set("utf-8") 2. QT5.10中控件显示中文 ...

  4. spring mvc问题:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示

    HTTP状态 404 - 未找到 类型 状态报告 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示. 我的问题:spring mvc无法访问到映射的controller,页面显 ...

  5. vue element ui table 自动无限滚动组件

    <template>   <el-table     class="tableList"     ref="rw_table"     hei ...

  6. es的核心原理 (一)

    搜索引擎 搜索引擎的分类 全文搜索:谷歌.百度.必应:这种搜索过程到底搜索啥,不知道,有可能是个帖子,也有可能是个门户网站 垂直搜索:视频网站.各大电商:这种搜索内容是固定的,比如在懂车帝,你搜索的一 ...

  7. env_config

    import sys import os root_path = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__f ...

  8. jQuery 中 remove删除了某个div 再添加回来

    用下面的例子吧删除之前先保存dom<div id="div1"><div id="div2"></div></div& ...

  9. webapi fromurl frombody

    https://blog.csdn.net/QiGary/article/details/113979877 在做后台api接口时,常常涉及到Http方法访问问题,其中最基础也是最核心的就是传参问题. ...

  10. postman脚本语法大全,不包括插件语法

    官方语法例子:https://learning.postman.com/docs/writing-scripts/script-references/test-examples/ 官方语法库:http ...