目标检测yolov5检测火龙果
一、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检测火龙果的更多相关文章
- PointRCNN: 点云的3D目标生成与检测
PointRCNN: 点云的3D目标生成与检测 PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud 论文地址 ...
- 【python+opencv】直线检测+圆检测
Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...
- 目标检测 — one-stage检测(二)
one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLO,S ...
- 目标检测 — one-stage检测(一)
总结的很好:https://www.cnblogs.com/guoyaohua/p/8994246.html 目前主流的目标检测算法主要是基于深度学习模型,其可以分成两大类:two-stage检测算法 ...
- 目标检测 — two-stage检测
目前主流的目标检测算法主要是基于深度学习模型,其可以分成两大类:two-stage检测算法:one-stage检测算法.本文主要介绍第一类检测算法,第二类在下一篇博文中介绍. 目标检测模型的主要性能指 ...
- 目标检测——深度学习下的小目标检测(检测难的原因和Tricks)
小目标难检测原因 主要原因 (1)小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素 ...
- OpenCVSSDpython目标探测对象检测
1.请参考大牛博客链接 https://www.aiuai.cn/aifarm822.html
- 车脸检测 Adaboost 检测过程
上一节中我介绍了如何使用Opencv自带的opencv_traincascade.exe来做训练,接下来介绍如何使用训练生成的cascade.xml模型文件来检测车脸. 首先需要说明的是我这里的训练数 ...
- 使用Python基于VGG/CTPN/CRNN的自然场景文字方向检测/区域检测/不定长OCR识别
GitHub:https://github.com/pengcao/chinese_ocr https://github.com/xiaofengShi/CHINESE-OCR |-angle 基于V ...
- 学习OpenCV——行人检测&人脸检测(总算运行出来了)
之前运行haar特征的adaboost算法人脸检测一直出错,加上今天的HOG&SVM行人检测程序,一直报错. 今天总算发现自己犯了多么白痴的错误——是因为外部依赖项lib文件没有添加完整,想一 ...
随机推荐
- vue.js----之router详解(三)
在vue1.0版本的超链接标签还是原来的a标签,链接地址由v-link属性控制 而vue2.0版本里超链接标签由a标签被替换成了router-link标签,但最终在页面还是会被渲染成a标签的 至于为什 ...
- 靶机练习5: Sar
靶机地址 https://www.vulnhub.com/entry/sar-1,425/ 信息收集阶段 进行全端口扫描,枚举目标的端口和服务 nmap -n -v -sS --max-retries ...
- Java笔记_this关键字_HomeWork(5 - 9 题)
第五题 /** * @ClassName HomeWork05 * @Description TODO * @Author Orange * @Date 2021/4/25 10:09 * @Vers ...
- ES5 绑定 this 的方法
this的动态切换,固然为 JavaScript 创造了巨大的灵活性,但也使得编程变得困难和模糊.有时,需要把this固定下来,避免出现意想不到的情况.JavaScript 提供了call.apply ...
- python菜鸟学习: 13. excel文件编辑openpyxl使用
#1. xls文件转换成xlsx文件,需要使用到 win32com from win32com import client as wc filepath = "D:\\python\\liy ...
- SQL Server修改表的时候出现错误:未更新任何行,未删除任何行
无论点击什么,一直报错:未更新任何行,未删除任何行,就差点砸电脑啦. 参考这个大神才解决的问题: https://blog.csdn.net/weixin_44690047/article/detai ...
- 性能测试-dstat以及sar(网络相关数据查看)
1.dstat参数说明 # 安装 yum install dstat -y dstat命令不加任何参数时,会收集CPU.磁盘.网络.分页.系统的数据信息,每秒收集一次.缺省参数时相当于dstat -c ...
- 重新安装office原版本没卸载干净
先在设置--卸载界面确保已经卸载 在键盘上按"win+R",在运行窗口里面输入"regedit",回车 ,进入注册表编辑器 找到products 删除与offi ...
- G1 垃圾回收详解
引用: https://www.cnblogs.com/ciel717/p/16190562.html
- 2023Hgame
2023Hgame Shared Diary 源代码先放一下 const express = require('express'); const bodyParser = require('body- ...