目录
背景
做目标追踪,目前找了一圈开源工具,发现DarkLabel还是很好用的,提供自动目标跟踪,标注很方便。
由于目标追踪我用的是bytetrack,官网是用mot17数据集训练的,我想看下官方数据集,以便于自己打标
导入效果
MOT17数据集说明
MOT官方地址https://motchallenge.net/data/MOT17/
用于目录跟踪的数据集
mot17 gt数据集介绍
gt:包含检测物体的标注信息,图片对应帧数、对象id、接下来4个代表Bounding box、目标轨迹是否进入考虑范围内的标志、分类类型、可见程度
DarkLabel
https://github.com/darkpgmr/DarkLabel 官网地址
修改darklable.yml,用来符合MOT17数据集的格式
format2: # MOT (predefined format]
fixed_filetype: 1 # if specified as true, save setting isn't changeable in GUI
data_fmt: [fn, id, x1, y1, w, h, c=-1, c=-1, c=-1, c=-1]
gt_file_ext: "txt" # if not specified, default setting is used
gt_merged: 1 # if not specified, default setting is used
classes_set: "coco_classes" # if not specified, default setting is used
name: "MOT"
data_fmt 和上述MOT17数据集的说明一致,由于我的是bytetrack,所以我的格式为 [fn, id, x1, y1, w, h, c=-1, c=-1, c=-1, c=-1] ,后面4个训练用不到,填写-1
导入视频
由于官网提供的视频尺寸是不对的,所以我用代码通过图片目录生成视频
代码如:
import cv2
import os
# 设置图片目录和视频输出文件名
image_folder = 'E://code//ByteTrack-main//datasets//mot//train//MOT17-02-DPM//img1' # 替换为你的图片目录
video_output = 'output_video.mp4'
# 获取目录下的所有图片文件,并按帧顺序排序
images = [img for img in os.listdir(image_folder) if img.endswith(".png") or img.endswith(".jpg")]
images.sort() # 确保按顺序排序
# 设置视频参数
frame_width = 1920
frame_height = 1080
fps = 30
# 创建视频写入对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 使用 mp4 编码
video = cv2.VideoWriter(video_output, fourcc, fps, (frame_width, frame_height))
# 逐帧读取图片并写入视频
for image in images:
img_path = os.path.join(image_folder, image)
frame = cv2.imread(img_path)
# 调整图片大小
frame = cv2.resize(frame, (frame_width, frame_height))
# 写入视频文件
video.write(frame)
# 释放视频写入对象
video.release()
cv2.destroyAllWindows()
print(f'视频已生成: {video_output}')
导入gt文件
从https://motchallenge.net/ 官网下载好训练数据后,通过DarkLabel导入gt文件
最后就可以实现导入mot17的数据集了