序言

使用yolov5训练非机动车驾驶状态的模型,检测内容为驾驶非机动车的人和车一体,单独的人或者单独的非机动车不检测,示例如下图所示:

一、数据准备

因为网上的数据集,包括coco数据集等,均没有将驾驶状态的非机动车做标注,通常都是独立的人、非机动车目标,所以这里需要重新收集数据再进行重新标注,该示例训练数据集由自己收集、标注,标注内容包括三个类:电动车(摩托车也包含在内)、三轮车、自行车;数据大部分来源于网上的监控视角(主要做监控检测),数据量5000+张,目标框标注超过20000+,数据经过精心筛选,非常适合监控下的非机动车驾驶检测,示例如下所示:

数据标注情况:

  • all gt : 20246 (所有目标)
  • bicycle gt: 5951 (自行车)
  • electric gt: 13819 (电动车or摩托)
  • tricycle gt: 476 (三轮车)

相关数据集和代码提供百度云,需要的朋友可自行下载。

链接:https://pan.baidu.com/s/1k-f61kiOiMA8yf-tqgV4GA?pwd=28hw
提取码:28hw

二、yolov5训练

这里默认已经配置好了yolov5运行所需要的环境;

首先准备一个文件夹,文件夹中内容如下,记住该文件夹绝对路径:

  • Annotations 为xml标注文件
  • images 存放训练图片
  • ImageSets 用于存放划分的train、test、val txt文件
  • labels 用于存放yolo格式标签

首先第一步划分数据集,使用如下代码:

import os
import randomtrainval_percent = 0.1
train_percent = 0.9
xmlfilepath = '上面的文件夹路径/Annotations'
txtsavepath = '上面的文件夹路径/images'
total_xml = os.listdir(xmlfilepath)num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)ftrainval = open('上面的文件夹路径/ImageSets/trainval.txt', 'w')
ftest = open('上面的文件夹路径/ImageSets/test.txt', 'w')
ftrain = open('上面的文件夹路径/ImageSets/train.txt', 'w')
fval = open('上面的文件夹路径/ImageSets/val.txt', 'w')for i in list:name = total_xml[i][:-4] + '\n'if i in trainval:ftrainval.write(name)if i in train:ftest.write(name)else:fval.write(name)else:ftrain.write(name)ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

第二步将xml转换yolo格式,使用如下代码:

import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import joinsets = ['train', 'test', 'val']classes = ['electric','bicycle','tricycle']              #  3类标注文件def convert(size, box):dw = 1. / size[0]dh = 1. / size[1]x = (box[0] + box[1]) / 2.0y = (box[2] + box[3]) / 2.0w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)def convert_annotation(image_id):in_file = open('上面的文件夹路径/Annotations/%s.xml' % (image_id),encoding='UTF-8')# print(in_file)out_file = open('上面的文件夹路径/labels/%s.txt' % (image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
print(wd)
for image_set in sets:if not os.path.exists('上面的文件夹路径/labels/'):os.makedirs('上面的文件夹路径/labels/')image_ids = open('上面的文件夹路径/ImageSets/%s.txt' % (image_set)).read().strip().split()list_file = open('上面的文件夹路径/%s.txt' % (image_set), 'w')for image_id in image_ids:# print(image_id)list_file.write('上面的文件夹路径/images/%s.jpg\n' % (image_id))try:convert_annotation(image_id)except:print(image_id)list_file.close()

第三步在yolov5/data中创建一个Nonvehicle.yaml文件,文件内容如下:

# YOLOv5 												

yolov5训练高精度非机动车驾驶检测相关推荐

  1. 使用yolov5训练自己的目标检测数据集

    使用yolov5训练自己的目标检测数据集 yolov4出来后不久,又出现了yolov5,没有论文.虽然作者没有放上和yolov4的直接测试对比,但在COCO数据集的测试效果还是很可观的.很多人考虑到Y ...

  2. yolov5训练步骤及安全帽检测

    环境部署问题.训练后无法识别问题都有介绍注意事项 一.说明 系统uname -ar:ubuntu18.0.4(Linux ubuntu 5.4.0-122-generic) 64bit 显卡lspci ...

  3. YOLOv5训练自己的数据集实现视频的识别

    写在前面 我本来是使用这个模型进行手写签名的定位,但是因为比赛的主办方原因,数据不允许公开,所以我使用动物世界的一段开头视屏来制作我的数据集.这整个模型跑通的过程中,我参考了很多不错的博客,写这篇博客 ...

  4. yolov5 训练crowded human 【visible body detection】

    0 前言 我使用的GPU平台:https://cloud.videojj.com/auth/register?inviter=18452&activityChannel=student_inv ...

  5. 目标检测-使用YOLOV5搭建自己的目标检测平台(手把手)

    鄙人刚接触目标检测,将自己的心得体会写出来,希望对大家有帮助 文章目录 一.说在前面 二.实验步骤 1.搭建实验环境 2.数据集的标注与划分 3.使用YOLOV5训练自己的目标检测模型 三.参考文章 ...

  6. 使用 YOLOv5 训练自动驾驶目标检测网络

    本文会详细介绍YOLO V5的网络结构及组成模块,并使用YOLO V5s在BDD100K自动驾驶数据集上进行迁移学习,搭建属于自己的自动驾驶交通物体对象识别网络. 本文来源:知乎-自动驾驶全栈工程师 ...

  7. yolov7训练BDD100k自动驾驶环境感知2D框检测模型

    文章目录 数据集的选取 bdd100k数据集介绍.下载 标签格式转换 BDD转COCO COCO转YOLO 参考链接 数据集的选取 自动驾驶相关的数据集有很多,这里需要的是做目标检测.比较常用的数据集 ...

  8. 基于深度学习的高精度家禽猪检测识别系统(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于深度学习的高精度家禽猪检测识别系统可用于日常生活中或野外来检测与定位家禽猪目标,利用深度学习算法可实现图片.视频.摄像头等方式的家禽猪目标检测识别,另外支持结果可视化与图片或视频检测结果的导 ...

  9. 驾驶员困倦检测危险驾驶检测抽烟喝水打电话检测yolov5

    驾驶员困倦检测危险驾驶检测抽烟喝水打电话检测yolov5 训练我的笔记本还是16年买的,GPU是Nvidia 950M,垃圾的很,用来跑这个不太行,所以我专门租了个云服务器,2.6元一小时,不过也没办 ...

最新文章

  1. [转]设计高效SQL: 一种视觉的方法
  2. [ffmpeg]安装
  3. 电脑模拟器哪个好_《英雄聯盟:激鬥峽谷》电脑版哪个安卓模拟器好用?《英雄聯盟:激鬥峽谷》手游电脑版怎么玩...
  4. 后台获取前台runat=server的select的值
  5. 《中国人工智能学会通讯》——11.34 基于近似动态规划的优化控制研究及 在电力系统中的应用...
  6. java自动类型提升_Java中的基本数据类型转换(自动、强制、提升)
  7. 将查询出来的数据按照一个字段分组且排序过程中,遇到的一些有关group的问题(分组排序应该使用partition by)
  8. 二十五、JAVA多线程(四、生产者和消费者问题)
  9. oracle dnfs 配置,配置 Oracle Direct NFS (dNFS)
  10. 自动驾驶 2-4 环境表示 Environment Representation
  11. Ubuntu安装 Killer Wireless-AC 1550 Wireless 无线网卡驱动
  12. Using Beyond Compare with Version Control Systems(ZZ)
  13. 卸载vuecli3_针对遇到安装或卸载vue-cli失败的解决方案
  14. 通过VBA实现FTP自动下载及关键字检索等功能
  15. 思科ccnp网络工程师必看SDh工作原理
  16. 如何释放计算机的ip地址,电脑执行释放DNS和更新IP的命令是什么?怎么执行
  17. chrome浏览器完整保存整个网页 可离线访问
  18. 剑指Offer面试题11(Java版):数值的整数次方
  19. [CF632E] Thief in a Shop
  20. 乐动手环app下载安装_乐动手环app下载安装

热门文章

  1. ssm+jsp计算机毕业设计NN皮草销售网店的设计与实现8pq8z(程序+LW+源码+远程部署)
  2. 读书笔记——《拥有,其实是另一种失去》
  3. VC6 安装错误 javasign.dll 不能在系统中注册
  4. 2016年中国微型计算机,2016年全国计算机一级考试试题带答案
  5. 码云新建仓库上传电脑本地代码
  6. 怎么将系统升级到Win7旗舰版
  7. 马航飞机失踪最新消息
  8. python正则表达式详解 pandas_Python pandas计算正则表达式与字符串中复合词的匹配...
  9. vue.js 获取当前屏幕的宽度_vue 获取当前屏幕的宽度,图片等比例缩放,动态设置css样式...
  10. 【JS 逆向百例】你没见过的社会主义核心价值观加密