数据集的标注
1. 视频转图片
-
方法一
-
PotPlayer 64bit下载
-
通过PotPlayer打开相应视频
-
Ctrl+G 打开连续截取画面设置
-
如,一段视频中 采集数量:200,按时间 每毫秒 3000
-
-
获取合适数量的图片
-
检查数据集质量
-
-
方法二
-
import cv2 video = r"path\to\ur\video\1.mp4" #需要分割的视频地址 cap = cv2.VideoCapture(video) frame_id = 0 gap = 1 # 每gap帧取一张图片 while (cap.isOpened()): ret, frame = cap.read() if ret==True: if frame_id%gap==0: cv2.imwrite('./1/'+'1_'+str(frame_id)+'.jpg',frame) #图片保存地址,要先创建 frame_id+=1 else: cap.release()
2. 标注工具Labelimg使用
-
创建python3.9的环境
-
conda create -n labelimg python=3.9 conda activate labelimg
-
-
安装labelimg
-
conda install labelimg
-
-
设置labelimg
-
设置两个文件夹,一个txt
-
images存放获取的图片
-
labels存放将要得到的标签
-
predefined_classes.txt存放标注的类别,用于快速标注
-
-
Anaconda命令行输入
-
labelimg .\images\ .\predefined_classes.txt
-
-
Change Save Dir设置为保存标签的路径,labels
-
标注模式选择为 yolo
-
标注前设置:View,选择
-
Auto Save mode
:切换到下一张图片时,就会自动把上一张标注的图片标签自动保存下来 -
Display Labels
:标注好图片之后,会把框和标签都显示出来
-
-
快捷键
-
W:调出标注十字架 A:切换上一张图片 D:切换 下一张图片 del:删除标注的矩形框
-
训练Yolo
-
训练集的架构如图
-
labels.cache是训练后产生的文件
-
配置data.yaml文件如下
-
path : human_target train: images val: images test: # number of classes nc: 2 # class names names: ['human', 'target']
-
-
通过CLI语句训练
-
yolo detect train data=datasets/human_target/data.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=100 batch=4 lr0=0.01 resume=True
-
-
训练好的模型在runs\detect\train[num]\weights\best.pt
-
通过CLI语句将.pt转换为.onnx
yolo export model=yolov8n.pt format=onnx opset=12
-
通过trtexec.exe将.onnx转换为.trt
-