目标检测YOLOv5数据集怎么找?

完整的配置-标注-训练-识别在我这篇博客小白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

 四、拍照

最简单粗暴的方法

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年4月9日
下一篇 2023年4月14日

相关推荐