完整的配置-标注-训练-识别在我这篇博客小白YOLOv5全流程-训练+实现数字识别_yolov5数字识别_牛大了2022的博客-CSDN博客 模型部分剖析可以看我每周深度学习笔记部分。关于训练的数据集怎么搞很多人问过我,我在这篇文章给大家一点我的经验和建议。
数据集是什么
简单来说图像集(.png .jpg)等图片,标注后是图像数据集(.xml)形式,在我上面放的文章链接中有专门画框标注生成.xml的程序。后者是训练时用到训练集。
一、寻找开源的数据集网站
一般百度或者谷歌搜索就行,有的网站上会有打包好的供用户下载。一般训练2 3k张就能达到比较好的效果。(因为我还在读本科,用到的目标检测不追求准确率能演示就行,一般训练几百张)
这种方法适合找常规的、被很多人用的检测数据集,比如行人、火焰、汽车等。
比如m6z.cn/6fzn0f 该数据集由早期火灾和烟雾的图像数据集组成。数据集由在真实场景中使用手机拍摄的早期火灾和烟雾图像组成。提供了大约有7000张图像数据。
但如果有特殊diy需求,一般没法从网上找到现成的数据集。就要考虑接下来的方法。
二、爬虫爬取
爬虫爬取图片的python代码很多,这里放置一个供参考。忘了从哪个大佬那里copy的了(仅供参考侵删) 里面 ’地面‘ 是搜索词,替换即可,倒数第三行改一下存放路径即可。
import time import requests import urllib page = input("请输入要爬取多少页:") page = int(page) + 1 # 确保其至少是一页,因为 输入值可以是 0 header = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36' } n = 0 # 图片的前缀 如 0.png pn = 1 # pn是从第几张图片获取 百度图片下滑时默认一次性显示30张 for m in range(1, page): url = 'https://image.baidu.com/search/acjson?' param = { 'tn': 'resultjson_com', 'logid': '8846269338939606587', 'ipn': 'rj', 'ct': '201326592', 'is': '', 'fp': 'result', 'queryWord': '地面', 'cl': '2', 'lm': '-1', 'ie': 'utf-8', 'oe': 'utf-8', 'adpicid': '', 'st': '-1', 'z': '', 'ic': '', 'hd': '', 'latest': '', 'copyright': '', 'word': '地面', 's': '', 'se': '', 'tab': '', 'width': '', 'height': '', 'face': '0', 'istype': '2', 'qc': '', 'nc': '1', 'fr': '', 'expermode': '', 'force': '', 'cg': 'girl', 'pn': pn, 'rn': '30', 'gsm': '1e', } page_info = requests.get(url=url, headers=header, params=param) page_info.encoding = 'utf-8' # 确保解析的格式是utf-8的 page_info = page_info.json() # 转化为json格式在后面可以遍历字典获取其值 info_list = page_info['data'] # 观察发现data中存在 需要用到的url地址 del info_list[-1] # 每一页的图片30张,下标是从 0 开始 29结束 ,那么请求的数据要删除第30个即 29为下标结束点 img_path_list = [] for i in info_list: img_path_list.append(i['thumbURL']) for index in range(len(img_path_list)): print(img_path_list[index]) # 所有的图片的访问地址 time.sleep(1) urllib.request.urlretrieve(img_path_list[index], "D:/Awangyefu/" + str(n) + '.jpg') n = n + 1 pn += 29
例如我想做一个魔方的目标检测,我那上面的程序爬取的百度图片(但上面的代码爬取速度有点慢,1k张好像爬了好几个小时)
但是也有很少一部分物体,百度图片爬取的可能千奇百怪(比如海面石油)黑的红的黄的都有,不适合进行目标检测训练(我菜也是一方面)自己一张张找也不现实,就要用到最后的方法了。
三、视频抽帧图片集
需要用到Adobe Premiere Pro,一款视频剪辑后期软件,网上一搜一大把破解的,下文称为pr。
视频的每一秒都是由图片组成的,又称为帧,一般我们看的视频都是30帧60帧每秒。所以每个视频转成图片就是庞大的数据集。
首先上b站油管等找到自己需要的视频,录下来或者通过第三方网站下载下来。
进入pr,新建项目,左下角导入刚才准备好的视频。再将左下角的视频拖入中间框,可以进行简单的长度裁剪
上图中间键选择第四个小刀片就可以裁剪了。
格式选择png(图片),帧速率就是一秒会生成几张图片,比如1分钟的视频,帧速率为6,则一共会生成360张图片。
生成后去生成路径里找图片就行了,然后就是痛苦的标注time
四、拍照
最简单粗暴的方法