目标检测之数据标注
1.前言
做数据预测,首先要做的就是数据标注。
- VOC标签格式,保存为xml文件。
- yolo标签格式,保存为txt文件。
- createML标签格式,保存为json格式。
【1】.【YOLO】YOLOv8训练自定义数据集(4种方式) images 下包含 train、val 文件夹,这两个文件夹下包含此次需要的 图片信息,labels 下包含 train、val 文件夹,这两个文件夹下包含此次需要的 对应图片的标注信息,test_images 下包含的是提供测试的数据集。模型训练(四种方式)1.参数重写;2.重写配置文件;3.python命令;4.python文件调用
【2】.YOLOv8制作自定义数据集并训练 我根据这篇文章进行了测试:1、建立相应文件夹;2、下载图片;3、为图片打标签;4.按比例移动自定义数据集中的内容;5.按比例移动自定义数据集中的内容;6.在文件夹中添加yaml文件。
【3】.yolov8-pytorch 这是一个yolov8-pytorch的仓库,可以用于训练自己的数据集。
【4】.15个值得推荐的开源免费图像标注工具 1.Makesense.ai;2.Labelme;3.Xtreme1;4.Label Studio;5.LOST;6.CVAT;7.Gromit-MPX;8.MyVision;9.LabelImg;10.Coco Annotator;11.Universal Data Tool;12.RectLabel;13.OpenLabeling;14.bbox-visualizer;15.PixelAnnotationTool。
2.数据收集
1.工作目的:准备AI训练用的图片,后期还需要进行数据标注,主要就是画矩形框并标明类别。
2.工作目标:尽可能多的收集各种问题类型的图片,比如:秸秆焚烧、裸土未覆盖等。
3.数据来源:可以从网上下载,也可以从历史视频中截取。在使用历史视频中的图片的时候,可以借助播放器的连续快照功能进行截图。
4.数据说明:
- 一张图片上可以有一类或者多类问题;
- 视频截取图片应从不同角度截图,远景近景等;
- 每类图片最好有1000+张,多多益善;
- 图片后缀应为.jpg;
- 图片命名应为英文+数字,可用拼音代替,可按类别进行递增编号,方便查找;
- 数据尺寸暂时不做要求
- 图片中要包含多种要素,不能只有一个物体,比如整个框都是一个待检测的物体。
【3】.yolov8数据集图片大小 对于基础模型 YOLOv8-s,推荐分辨率是640x640或者更小。
【4】.yolov8目标检测的图片输入尺寸及预处理问题 1.保持图像的宽高比,将图像缩放到模型的输入尺寸(例如640x640)中较短的一边。2.对缩放后的图像进行填充,以达到所需的输入尺寸,通常填充的是图像的右侧和底部。3.对缩放后的图像进行填充,以达到所需的输入尺寸,通常填充的是图像的右侧和底部。
3.视频数据
如何从视频中获取大量数据,首先就要将视频转为图片,可以采用人工截图的方式,另外还可以使用程序自动处理。
(1)ffmpeg
1 | ## ffmpeg -i 视频 -r 每秒帧数 -q:v 图片质量参数 -f 图片命名格式 |
(2)这里提供了一个视频文件抽帧的代码,
1 | import cv2 |
【1】.关于如何将 MP4 转换为 JPG 的详细说明 [已解决] 使用 Vidmore 视频转换器将 MP4 转换为 JPG,它具有连续快照功能,可以完美获取所有喜爱的场景。使用 VLC 将 MP4 转换为 JPG。
【2】.MP4转JPG - 在线转换图像文件
【3】.视频标注已上线,支持视频分类、多目标检测|ModelWhale 版本更新 ModelWhale这个工具好像包含视频标注,但是需要钱。
【4】.十个最常用深度学习图像/视频数据标注工具
【5】.Windows下 ffmpeg + labelImg 提取视频帧 得到图片集 并 标注图片 来 构造数据集 安装了 ffmpeg ,然后使用ffmpeg进行了视频截取,截取之后,然后对产生的文件进行了标注。
【6】.利用FFmpeg将视频按帧截取保存为图片 -r: 指定抽取的帧 即从视频中每秒抽取的图片数量 5:代表每秒抽取5帧
【7】.FFMPEG获取视频关键帧并保存成jpg图像 这里还提供了c代码,提取I帧
1 | ffmpeg -i input.mp4 -an -vf select='eq(pict_type\,I)' -vsync 2 -s 720*480 -f image2 dstPath/image-%03d.jpg |
【8】.FFmpeg 实用命令
【9】.ffmpeg缩放视频尺寸 这里使用 scale 进行了视频缩放。1.简单重新缩放,scale = 320:240。2.保持宽高比,scale = 320:-1。3.使用变量,scale = iw * 2:ih,iw =输入宽度,ih =输入高度。4.指定缩放算法,-sws_flags选项指定用于调整大小的算法。
4.建立文件夹
建立文件夹如下,images 文件夹下存放全部待标注图片,classes.txt里面写入需要进行标注的分类,一个行一个类,比如:汽车、狗、猫
1 | labeldata |
5.标注工具
借助于标注工具,可以进行图像标注,常用的标注工具有:labelimg、VoTT、Label Studio、Make Sense、CVAT,我分别使用了 labelimg、Label Studio和CVAT,解决了很多的问题,最后我选择了 Label Studio进行标注。
6.标注规范
(1)标注框的形状和大小
对于不同大小的物体,标注框应完全包含住物体。并且标注框的形状尽可能接近物体形状。(2)标注框的位置和方向
标注框尽可能地包围目标物体,而且标注框的位置和方向应标与实际场景中的位置和方向一致。(3)标签的准确性和唯一性
每个目标物体应尽可能地被正确地标注,并且标注的标签应该与目标物体相对应。(4)去除冗余信息
在标注数据时,应该去除冗余的信息,例如背景重复的物体等,以提高目标检测算法的准确性和效率。(5)数据集的平衡和扩充
对于不同类别的目标物体应该平衡数据集的数量和分布,避免出现类别不平衡的情况。同时,可以通过数据扩充技术,例如翻转、旋转等操作,增加数据集的数量和多样性。(6)人眼难以分辨的不要标
对于人眼难以分辨的目标,可以不进行标注,避免误导模型(7)不框规则
图像模糊不清、太暗、曝光过度或不符合项目特殊规则的不框(8)重叠规则
当两个目标物体有重叠时,只要不是遮挡超过一半的就可以框。允许两个框有重叠的部分,这样模型可以学会处理重叠情况
【1】.在目标检测的图框标注中注意一下几点 1.标注框的形状和大小.2.标注框的位置和方向.3.标签的准确性和唯一性。4.去除冗余信息。5.数据集的平衡和扩充
【2】.目标检测标注原则 标注方框大小合适、标注方框位置合适、需要丰富多视角的素材、目标被遮挡也要标注、小目标也不能漏掉、人眼分不清是啥的不要标
【3】.目标检测的标注注意事项 通用规则:1.贴边规则;2.重叠规则;3.独立规则;4.不框规则;5.边界检查;6.小目标规则;
【4】.自训练数据集打标签注意事项及使用工具推荐 打标签规则:1.标签一一对应:每个数据集的标签标号要一致,否则会混淆。2.贴边规则:标注框需紧贴目标物体的边缘进行画框标注,不可框小或框大。3.目标被遮挡也要标注:即使目标物体被其他物体遮挡,也需要进行标注。4.人眼难以分辨的不要标:对于人眼难以分辨的目标,可以不进行标注,避免误导模型。5.重叠规则:当两个目标物体有重叠时,只要不是遮挡超过一半的就可以框。允许两个框有重叠的部分,这样模型可以学会处理重叠情况。6.独立规则:每一个目标物体均需要单独标框。7.不框规则:图像模糊不清、太暗、曝光过度或不符合项目特殊规则的不框。8.边界检查:确保框坐标不在图像边界上,防止载入数据或数据扩展时出现越界报错。9.小目标规则:对于不同算法对小目标的检测效果不同,但只要人眼能分清,都应该标出来。根据算法需求,决定是否启用这些样本参与训练。10.小于10X10或20X20像素的目标不方便标记可以忽略。11.对于边界模糊、连片处理,标为一个样本框。12.对于模糊、遮挡、有拖影的样本,最好单独建立样本库,有选择地启用。13.宽高比极端不是好样本:过长的宽高比可能会影响模型的识别效果,因此需要特别注意。
【5】.目标检测工作经验(1)–数据标注时的一些小技巧1(工作经验) 1.数据采集部分。2.数据标注部分:遮挡对象是否要标注、模糊对象是否要标注、只有一半大小的对象是否要标注、大目标包含小目标,大目标是否要标注、标注时标签的确定;一定要提前确定好,不然会做很多重复功。使用YOLO V5做多目标检测的自动标注。在单目标跟踪上面,我们使用了SiamRPN++做我们单目标跟踪的自动标注工具。
【6】.目标检测任务的标注标准(以火焰和烟雾的数据集标注为例) 1.容易标注的图片 注意 标注的边框在目标外,不要压线。2.小于10X10或者20X20像素的目标不方便标记可以忽略。3.文件命名保持在6个字符以上。4.宽高比 极端不是好样本。5.对与边界模糊、连片的处理。6.火焰的倒影之类的具备特征的也算是火焰,这种有明显间隔的可以算多个。7.对于模糊、遮挡、有拖影的样本 最好单独建立样本库,有选择的启用。
【7】.数据标注技能分享丨图像标注规范及注意事项 图像获取->图像预处理->图像标注->结果输出