Welcome to Jetson AGX Thor repository
09.Dataset Annotation
Dataset Annotation
Dataset Annotation1、Dataset Collection1.1、Extract Images1.2、Dataset Paths2、Label Studio Usage2.1、Label Studio Installation2.2、Label Studio Startup2.2.1、Shared Folder Permissions2.2.2、Start Label Studio2.2.3、Access Label StudioHost MachineLocal Area NetworkFirst Use3、Dataset Annotation3.1、Create Project3.2、Project Name3.3、Import Training Set3.4、Label Settings3.5、Dataset Annotation3.6、Export Dataset3.7、Dataset Directory Structure3.8、Dataset Configuration FileReferences
For recognizing specific objects or improving object recognition accuracy, users need to train their own models, and dataset collection and annotation are indispensable parts.
1、Dataset Collection
Description: For recognition in specific scenarios, users can use a camera to record videos of objects from various angles, then extract images from the videos as training sets
1.1、Extract Images
Provide a simple example: Extract one frame image from the video every 15 frames as a dataset
ximport cv2import os# Path to the input video filevideo_file = '/home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_video/orange.mkv'# Path to the output folder to save the framesoutput_folder = '/home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_pic'# Check if the output folder exists, if not, create itif not os.path.exists(output_folder):os.makedirs(output_folder)# Open the video file using OpenCVcap = cv2.VideoCapture(video_file)# Get the total number of frames in the videototal_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))# Get the frames per second (fps) of the videofps = cap.get(cv2.CAP_PROP_FPS)# Frame counter to keep track of the current frame numberframe_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 = 1while True:ret, frame = cap.read()# If the frame is not successfully read, exit the loopif not ret:break# Save every 15th frameif 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 imagecv2.imwrite(image_path, frame)print(f'Saving frame {frame_number}/{total_frames} as {image_name}')# Increment the saved frame countersaved_frame_number += 1# Increment the frame counter for the videoframe_number += 1# Release the video capture objectcap.release()# Print message when processing is completeprint("Video processing complete! Every 15th frame saved as an image!")
1.2、Dataset Paths
Example video: /home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_video
Example images: /home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_pic
2、Label Studio Usage
Label Studio is an open-source data annotation platform for data annotation and annotation task management, supporting various types of data input and annotation formats.
2.1、Label Studio Installation
xxxxxxxxxxdocker pull heartexlabs/label-studio:latest

2.2、Label Studio Startup
2.2.1、Shared Folder Permissions
Share the prepared dataset to the corresponding folder of Label Studio:
xxxxxxxxxxsudo chmod 777 /home/jetson/ultralytics/ultralytics/data/
2.2.2、Start Label Studio
xxxxxxxxxxsudo docker run -it -p 8080:8080 -v /home/jetson/ultralytics/ultralytics/data:/label-studio/data heartexlabs/label-studio:latest label-studio --log-level DEBUG

Note:
If port 8080 is occupied, please modify the port mapping function, change the first 8080 in the -p parameter to 8081 or other suitable ports.
After modifying the port, access the new port address in the browser to access Label Studio, such as http://localhost:8081/
2.2.3、Access Label Studio
Host Machine
Jetson series development board access method, first entry requires entering username and password yourself
xxxxxxxxxxhttp://localhost:8081/

Local Area Network
Devices under the same local area network can access according to the board IP:8081
xxxxxxxxxxhttp://Board IP:8081/# Example: http://192.168.2.114:8081/

First Use
First-time use requires registering and logging into an account yourself, factory-set account information (account information is fake):
xxxxxxxxxxAccount: yahboom@163.comPassword: yahboom@163.com


After registration is complete, the website will automatically log in:

3、Dataset Annotation
The demonstration dataset is on the board, so access Label Studio on the board.
3.1、Create Project

3.2、Project Name
Project name can be named arbitrarily, name it according to your training set:

3.3、Import Training Set
Manually import the prepared dataset: Cannot import too many images at once, it is recommended to select 50-100 images each time, then import multiple times

3.4、Label Settings
We are demonstrating orange recognition, so select "Object Detection".

Delete built-in labels:

Add new label:

3.5、Dataset Annotation
Click Annotate All Tasks:

Annotation steps: First click the label "Orange" then use the mouse to select the corresponding orange in the image, and click submit after completion to enter the next annotation

If the selected object is not a complete orange, you can click the selected box to readjust the position of each edge:

3.6、Export Dataset
Select YOLO format for export, the browser will automatically download a compressed package


3.7、Dataset Directory Structure
Directory structure corresponding to the compressed package exported by Label Studio:
xxxxxxxxxx.├── images├── labels├── classes.txt└── notes.json
We need to separate the images and labels exported by Label Studio into train (training set) and val (validation set), with a ratio of approximately 8:2: The images and labels in both train and val need to correspond in name.
xxxxxxxxxx.├── classes.txt├── notes.json├── train│ ├── images│ └── labels└── val├── images└── labels
3.8、Dataset Configuration File
Contains paths to training and validation sets, as well as the number and names of classes.
xxxxxxxxxxpath: /home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_datatrain: train/imagesval: val/imagesnc: 1# Classesnames:0: Orange
