【自制数据集自动标注】yolo目标检测 voc格式 单调无遮挡背景单个物体自制数据集自动标注

垃圾分类目标检测数据集准备

数据集背景:

参加全国大学生工程训练综合能力竞赛智能生活垃圾分类赛道时深感采集制作数据集过分彰显“有多少人工,就有多少智能”的惨痛,为了不辛苦麻烦身边小伙伴放暑假也要被邀请来做枯燥的快捷键+“拉枪”操作(此处再次对为我们参赛提供支持与帮助以及提出建议的小伙伴大伙伴们表示深沉的感谢~),自动化乃大势所趋。

新手小白,代码实现有许多不足,参考了许多文章,欢迎指点

主要思路

​ 1.录视频采集目标物体视频

​ 2.视频抽帧获得命名好的jpg图片

​ 3.使用opencv找到目标物体在图片中的xy坐标框位置

​ 4.将xy坐标框、名字、物体类别等信息按voc格式写入xml文件,文件命名与图片相同

采集数据集

1.录制目标物体的视频

拍摄场景

​ 尽量还原应用场景的背景、光照、高度

采集设备

​ 手机或相机什么的都可以

采集方式

​ 需要多角度多亮度拍摄

​ 我们采用的是黑绒布作为背景进行目标物体的数据集采集,因为应用场景固定为黑绒布下检测目标物体,故我们主要考虑降低光照、清晰度、部分遮挡带来的影响。在采集期间不断点击手机相机对焦,随机对焦到物体或绒布上,对焦黑绒布时可以带来过曝效果,对接物体可以得到更清晰的物体图片,以此增加数据集的情况多样性,从而提高训练出来的模型的稳定性。

举例子:
在这里插入图片描述

2.视频抽帧获得命名好的jpg图片(图片命名开头要带数字)

使用python代码抽帧获取图片

import cv2
import os.path
from tqdm import tqdm

file_path = r"D:\\SE\\program\\garbagedetection\\dataset\\datavediotopicture\\workplace\\"
path_dir = os.listdir(file_path)  # 返回文件夹中的文件名
save_path = r"D:\\SE\\program\\garbagedetection\\dataset\\datavediotopicture\\raw_corn\\"
count = 1
name_count = 1
for allDir in tqdm(path_dir):
    video_path = file_path + allDir
    video = cv2.VideoCapture(video_path)  # 读入视频文件
    if video.isOpened():  # 判断是否正常打开
        rval, frame = video.read()
    else:
        rval = False

    timeF = 4  # 视频帧计数间隔频率

    while rval:  # 循环读取视频帧
        rval, frame = video.read()
        if (count % timeF == 0):  # 每隔timeF帧进行存储操作
            # cv2.imshow('pic',frame)
            cv2.imwrite(save_path+allDir.split('.')[0]+'_'+str(name_count) + '.jpg', frame)  # imwrite在py3中无法保存中文路径
            # cv2.imencode('.jpg', frame)[1].tofile(save_path + str(count) + '.jpg')  # 存储为图像
            # print('E:\Dataset\file\数据\image/' + '%06d' % c + '.jpg')
            name_count = name_count + 1
        count = count + 1
        cv2.waitKey(1)

得到的图片诸如

在这里插入图片描述

yolo目标检测单调无遮挡背景下单个目标数据集处理

任务分解:

​ 1.得到目标检测框的xmin、ymin、xmax、ymax

​ 2.能够生成xml文件

​ 3.代码合并

​ 4.批量化

1.采用opencv的数据采集

此处源码参考一位csdn博主的文章

# coding=utf-8
import cv2
erodenum=5#腐蚀,清除小白点
dilatenum=20#膨胀,把想要连起来的线连起来方便框取
# step1:加载图片,转成灰度图
import numpy as np

image = cv2.imread("D:\SE\program\garbagedetection\dataset\mydataadd\\0cell194\\2cell_27_21.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# step2:用Sobel算子计算x,y方向上的梯度,之后在x方向上减去y方向上的梯度,通过这个减法,我们留下具有高水平梯度和低垂直梯度的图像区域。
gradX = cv2.Sobel(gray, ddepth=cv2.CV_32F, dx=1, dy=0, ksize=-1)
gradY = cv2.Sobel(gray, ddepth=cv2.CV_32F, dx=0, dy=1, ksize=-1)

# subtract the y-gradient from the x-gradient
gradient = cv2.subtract(gradX, gradY)
gradient = cv2.convertScaleAbs(gradient)
cv2.imshow('gradient', gradient)

# step3:去除图像上的噪声。首先使用低通滤泼器平滑图像(9 x 9内核),这将有助于平滑图像中的高频噪声。低通滤波器的目标是降低图像的变化率。如将每个像素替换为该像素周围像素的均值。这样就可以平滑并替代那些强度变化明显的区域。
# 然后,对模糊图像二值化。梯度图像中不大于90的任何像素都设置为0(黑色)。 否则,像素设置为255(白色)。
# blur and threshold the image
blurred = cv2.blur(gradient, (9, 9))
(_, thresh) = cv2.threshold(blurred, 90, 255, cv2.THRESH_BINARY)
cv2.imshow('blurred', blurred)

# step4:在上图中我们看到蜜蜂身体区域有很多黑色的空余,我们要用白色填充这些空余,使得后面的程序更容易识别昆虫区域,这需要做一些形态学方面的操作。
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (25, 25))
closed = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
cv2.imshow('closed', closed)

# step5:从上图我们发现图像上还有一些小的白色斑点,这会干扰之后的轮廓检测,要把它们去掉。分别执行4次形态学腐蚀与膨胀。
# perform a series of erosions and dilations
closed = cv2.erode(closed, None, iterations=erodenum)
closed = cv2.dilate(closed, None, iterations=dilatenum)
cv2.imshow
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测图片已标注YOLO格式数据集可以在以下地方进行下载: 1. Kaggle(https://www.kaggle.com/):Kaggle是一个数据科学竞赛平台,提供各种数据集供用户下载。在Kaggle的数据集页面上,你可以通过搜索相关关键词或者浏览不同的目录来找到YOLO格式数据集。选择适合你需求的数据集后,你可以通过点击下载按钮来获取数据集。 2. GitHub(https://github.com/):GitHub是一个源代码托管平台,很多开发者和研究者会在上面分享自己的数据集。你可以在GitHub上搜索关键词加上"YOLO dataset"或者"YOLO format dataset"来查找相应的数据集。当找到合适的仓库时,你可以在仓库的页面上找到数据集的下载链接或者通过克隆仓库来获取数据集。 3. Open Images Dataset(https://storage.googleapis.com/openimages/web/index.html):Open Images Dataset是一个由Google提供的大规模图像数据集,其中包括了一些已经标注目标检测数据。你可以在官方网站上找到YOLO格式数据集,并通过点击下载按钮来获取数据集。 4. 研究论文和竞赛网站:一些研究论文或者目标检测竞赛网站会提供YOLO格式数据集供用户下载。常见的论文网站有arXiv(https://arxiv.org/)和CVPR(https://openaccess.thecvf.com/CVPR2021)。常见的竞赛网站有COCO数据集(http://cocodataset.org/)和ImageNet(http://www.image-net.org/)。你可以在这些网站上找到相关的数据集下载链接。 需要注意的是,不同的数据集可能具有不同的许可证要求,所以在下载和使用数据集时,请查阅相关的许可证信息,并遵守相关的规定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值