数据集标注
数据集标注1、数据集采集1.1、提取图像1.2、数据集路径2、Label Studio使用2.1、Label Studio安装2.2、Label Studio启动2.2.1、共享文件夹权限2.2.2、启动Label Studio2.2.3、访问Label Studio宿主机同局域网首次使用3、数据集标注3.1、创建工程3.2、工程名称3.3、导入训练集3.4、标签设置3.5、数据集标注3.6、导出数据集3.7、数据集目录框架3.8、数据集配置文件参考资料
对于识别特定的物体或提高物体的识别准确率,用户需要自己进行模型的训练,数据集的采集和标注是不可缺少的一部分。
1、数据集采集
说明:特定场合的识别,用户可以使用摄像头录制一下物体各个角度的视频,然后截取视频中的图片作为训练集
1.1、提取图像
提供一个简单的示例:每隔15帧从视频中提取一帧图像作为数据集
x import cv2 import os # Path to the input video file video_file = '/home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_video/orange.mkv' # Path to the output folder to save the frames output_folder = '/home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_pic' # Check if the output folder exists, if not, create it if not os . path . exists ( output_folder ): os . makedirs ( output_folder ) # Open the video file using OpenCV cap = cv2 . VideoCapture ( video_file ) # Get the total number of frames in the video total_frames = int ( cap . get ( cv2 . CAP_PROP_FRAME_COUNT )) # Get the frames per second (fps) of the video fps = cap . get ( cv2 . CAP_PROP_FPS ) # Frame counter to keep track of the current frame number frame_number = 0 # Define the interval for extracting frames (every 15th frame) frame_interval = 15 # Initialize a new counter for saved frames (starting from 1) saved_frame_number = 1 while True : ret , frame = cap . read () # If the frame is not successfully read, exit the loop if not ret : break # Save every 15th frame if frame_number % frame_interval == 0 : # Format the frame number starting from 1 (e.g., 1.png, 2.png) image_name = f'{saved_frame_number}.png' image_path = os . path . join ( output_folder , image_name ) # Save the current frame as a PNG image cv2 . imwrite ( image_path , frame ) print ( f'Saving frame {frame_number}/{total_frames} as {image_name}' ) # Increment the saved frame counter saved_frame_number += 1 # Increment the frame counter for the video frame_number += 1 # Release the video capture object cap . release () # Print message when processing is complete print ( "Video processing complete! Every 15th frame saved as an image!" )
1.2、数据集路径
示例视频:/home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_video/
示例图像:/home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_pic/
2、Label Studio使用
Label Studio是一个开源的数据标注平台,用于数据标注和标注任务的管理,支持各种类型的数据输入和标注格式。
2.1、Label Studio安装
xxxxxxxxxx docker pull heartexlabs/label-studio:latest

如果国内网络无法访问heartexlabs,请使用如下方法使用Label Studio
安装:pip install label-studio -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
启动:label-studio start
2.2、Label Studio启动
2.2.1、共享文件夹权限
将提前准备好的数据集共享到Label Studio对应的文件夹:
xxxxxxxxxx sudo chmod 777 -R /home/pi/ultralytics26/data/
2.2.2、启动Label Studio
xxxxxxxxxx sudo docker run -it -p 8080:8080 -v /home/pi/ultralytics/ultralytics/data:/label-studio/data heartexlabs/label-studio:latest label-studio --log-level DEBUG

2.2.3、访问Label Studio
宿主机
pi Orin系列开发板访问方式,首次进入需要自己输入用户名和密码
xxxxxxxxxx http://localhost:8080/

同局域网
同一局域网下的设备可以根据主板IP:8080进行访问
xxxxxxxxxx http://主板IP:8080/ # 例如:http://192.168.2.99:8080/

首次使用
首次使用需要自己注册和登录账号,出厂设置账号信息(账号信息是虚假的):
xxxxxxxxxx 账号:yahboom@163.com 密码:yahboom@163.com


注册完成后后,网址会自动登录:

3、数据集标注
演示的数据集在主板上,所以在主板访问Label Studio。
3.1、创建工程

3.2、工程名称
工程名称可自己随意命名,根据自己的训练集来命名:

3.3、导入训练集
手动将提前准备的数据集导入:一次不能导入过多图片,建议每次选择50-100张,然后多次导入

3.4、标签设置
我们演示的是识别橙子,所以选择”物体检测“

删除内置标签:

添加新的标签:

3.5、数据集标注
点击标注所有任务:

标注步骤:先点击标签“Orange”再使用鼠标框选图片中对应的橙子,完成后点击提交进入下一张标注

若框选的物体不是完成的橙子,可以点击款选的方框,重新调整各个边的位置:

3.6、导出数据集
选择YOLO格式进行导出,浏览器会自动下载一个压缩包


3.7、数据集目录框架
使用Label Studio导出的压缩包对应的目录框架:
xxxxxxxxxx . ├── images ├── labels ├── classes.txt └── notes.json
我们需要将Label Studio导出images、labels分成train(训练集)和val(验证集),两者比例大概8:2:train和val里面的图片和标签都需要名称一一对应。
xxxxxxxxxx . ├── classes.txt ├── notes.json ├── train │ ├── images │ └── labels └── val ├── images └── labels
3.8、数据集配置文件
包含训练集和验证集的路径,以及类别的数量和名称。
xxxxxxxxxx path: /home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_data/ train: train/images val: val/images nc: 1 # Classes names: 0: Orange
