目标检测数据集构建指南
目标概述: 当前项目旨在创建一个专注于灭火器的单一类别目标检测数据集。
数据集搜集策略
2.接着找到图片下面的链接,排除广告链接,需要找到图片网站的链接。
3.点进去发现又是一个可以搜集图片的网站。循环往复可以搜集到很多可以爬取图片的网站。
一,搜集目前已存在的数据集:利用知名数据集平台,搜集与灭火器相关的图像资源。
1.Kaggle数据集(kaggle)
2.谷歌数据集(谷歌)
3.Amazon数据集(Amazon)
4.UCI机器学习资源库(UCI)
5.微软数据集(微软)
二,爬虫大法
- 初始阶段,通过百度、Bing、搜狗等主流搜索引擎进行图片搜集。
- 若现有资源不足,可采用以下进阶方法:
- 细化搜索关键词,提高图片搜集的针对性和效率。
- 考虑使用专业的图像搜索工具或平台,以获取更高质量的图片资源。
1.首先在网站上搜索图片:
2.接着找到图片下面的链接,排除广告链接,需要找到图片网站的链接。
3.点进去发现又是一个可以搜集图片的网站。循环往复可以搜集到很多可以爬取图片的网站。
4.使用爬虫对网站进行爬取。
技术资源分享
在构建目标检测数据集的过程中,我已经整理了一系列高效的网络爬虫代码,它们能够从多个知名平台抓取所需的图片资源。以下是支持的平台列表:
- 百度图片搜索
- Bing图片搜索
- Hipopx(一个提供高分辨率图片的网站)
- XSJ.699pic(一个图片分享平台)
如果您在数据搜集阶段需要技术支持或希望提高搜集效率,欢迎随时与我联系。我将乐于分享这些代码资源,并提供必要的帮助与指导。
三,整理并且标注图片
1. 图片整理阶段:
- 筛选与删除: 首先,对搜集到的图片进行筛选,移除不符合条件的图片。
- 重命名与格式转换: 将图片名称进行统一重命名,并确保所有图片都以
.jpg
格式存储,以便于后续处理。 - 颜色空间转换: 对于非RGB颜色空间的图片,进行必要的转换,确保它们能够被标注工具
labelme
正常使用。
import os
import shutil
from datetime import datetime
# 源文件夹路径
source_folder = 'Fire_Extinguisher8/images_ori'
# 目标文件夹路径
target_folder = 'Fire_Extinguisher8/images'
# 确保目标文件夹存在
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 初始化计数器
counter = 0
# 遍历源文件夹中的所有文件
for filename in os.listdir(source_folder):
# 检查文件是否是图片(这里假设图片扩展名为.jpg,可以根据需要添加其他格式)
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
# 构造源文件的完整路径
source_path = os.path.join(source_folder, filename)
# 生成基于当前时间的新文件名
timestamp = datetime.now().strftime('%Y%m%d%H%M%S%f')[:17]
new_filename = f"{timestamp}_{counter}{os.path.splitext(filename)[1]}"
if new_filename[-3:] == 'png':
new_filename = new_filename.replace('.png', '.jpg')
# 构造目标文件的完整路径
target_path = os.path.join(target_folder, new_filename)
# 复制文件
shutil.copy2(source_path, target_path)
print(f'Copied {filename} to {new_filename}')
counter += 1
print('All images have been copied and renamed.')
def rgba_to_rgb(path_in, path_out):
# 批量更改图片格式
file_in = os.listdir(path_in)
for name in file_in:
old_img_dir = os.path.join(path_in, name)
new_img_dir = os.path.join(path_out, name)
# 取决于自己的图片命名方式
img = Image.open(old_img_dir)
print(img.mode)
if img.mode != "RGB":
img = img.convert('RGB')
print(old_img_dir)
img.save(new_img_dir)
2. 图片标注阶段:
- 使用Labelme标注: 利用
labelme
工具对图片进行标注,确保目标对象被准确识别。 - 筛选标注结果: 在标注过程中,可能会遇到一些无法标注的图片。对于这些图片,我们将不予保留,只将成功标注的图片转移到新的文件夹中。
- 格式转换: 将标注完成后生成的
.json
文件转换为YOLO
格式,以满足目标检测模型的训练需求。
def label_to_image(txt_dir, old_img_dir, new_img_dir):
# 存在label的图片将被复制到新文件夹
for name in os.listdir(txt_dir):
img_name = name[:-4] + 'jpg'
old = os.path.join(old_img_dir, img_name)
new = os.path.join(new_img_dir, img_name)
shutil.copy(old, new)
数据集标注质量检查
在完成数据集的整理和标注工作后,为了确保标注的准确性和一致性,我们建议进行可视化检查。这一步骤至关重要,因为它可以帮助我们直观地评估标注结果,并及时修正任何可能的错误。
可视化检查流程:
- 使用可视化工具: 利用专门的可视化函数或软件,对标注的图片进行展示,以便进行质量评估。
- 评估标注质量: 通过可视化结果,检查目标对象的边界框是否准确,以及标签是否正确无误。
- 修正与优化: 如果在检查过程中发现问题,及时进行修正,以确保数据集的质量。
技术支持: 如果您需要进一步的技术支持或希望获取可视化检查的代码示例,欢迎随时与我联系。我将提供必要的帮助和指导,以确保您的数据集标注工作达到最佳效果。
数据集构建与标注流程总结
在进行目标检测项目的数据集构建时,我们采取了以下步骤确保数据的质量和标注的准确性:
-
数据搜集:从多个知名数据集平台和网络爬虫技术搜集灭火器图片,确保了数据的多样性和丰富性。
-
数据整理:
- 筛选并删除不符合要求的图片。
- 对图片进行重命名,并统一转换为
.jpg
格式。 - 将非RGB颜色空间的图片转换为RGB,以适配标注工具。
-
数据标注:
- 使用
labelme
工具对图片进行精确标注。 - 对标注结果进行筛选,仅保留成功标注的图片,并创建新的文件夹存储。
- 将
.json
标注文件转换为YOLO
格式,以满足特定模型的训练需求。
- 使用
-
质量检查:
- 采用可视化工具对标注结果进行质量检查。
- 评估标注的准确性,并及时修正发现的问题。