DarkLabel2.4版本导入MOT17数据集

目录

背景

做目标追踪,目前找了一圈开源工具,发现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的数据集了