使用TrackEval和Easier_To_Use_TrackEval对多目标追踪结果进行评估

使用TrackEval和Easier_To_Use_TrackEval对多目标追踪结果进行评估

环境准备:

TrackEval: https://github.com/JonathonLuiten/TrackEval

Easier_To_Use_TrackEval: https://github.com/JackWoo0831/Easier_To_Use_TrackEval

下载这两个项目并解压,将Easier_To_Use_TrackEval整个文件夹移动到TrackEval中

# 创建虚拟环境
conda create -n TrackEval python=3.9
# 激活环境
conda activate TrackEval
# 进入到TrackEval文件夹下
cd TrackEval

在安装依赖包之前,把requirements.txt 中软件包的版本号删除,否则按照提供的版本号安装会报错
img

# 安装环境依赖
pip install -r requirements.txt 

TrackEval与新版本numpy不兼容,需要将np.float64改为float,np.int改为int,执行以下指令

# on datasets  后面的路径是需要替换的文件列表
sed -i 's/np\.float/float/g' trackeval/datasets/mot_challenge_2d_box.py trackeval/datasets/kitti_2d_box.py 
sed -i 's/np\.int/int/g' trackeval/datasets/mot_challenge_2d_box.py trackeval/datasets/kitti_2d_box.py 

# on metrics
sed -i 's/np\.float/float/g' trackeval/metrics/hota.py 
sed -i 's/np\.int/int/g' trackeval/metrics/identity.py 

TrackEval

1.下载TrackEval提供的GT文件( https://omnomnom.vision.rwth-aachen.de/data/TrackEval/data.zip ),解压放到TrackEval文件夹下。

img

2.进行评估

2D多目标追踪运行的是这个文件run_mot_challenge.py,需要通过命令行传入一些参数。

最简单的用法:

在解压后的data/trackers文件夹下找到需要评估的数据集文件夹(如MOT17),将在这个文件夹下新建一个track方法文件夹(这里新建了一个mytrack方法)

img

再把追踪结果txt文件拷贝到这个文件夹(需要在mot_challenge_2d_box.py文件中将TRACKER_SUB_FOLDER参数需要设置为' ',即追踪结果直接存放在track方法文件夹下)

img

python scripts/run_mot_challenge.py --BENCHMARK MOT17 --TRACKERS_TO_EVAL mytrack --METRICS HOTA CLEAR Identity --USE_PARALLEL True --NUM_PARALLEL_CORES 8 

其中:

--TRACKERS_TO_EVAL是刚刚新建的mytrack方法文件夹名称,其他参数后面介绍。

这种方法只需要指定 --TRACKERS_TO_EVAL一个参数,其他保持默认即可,但是每次都需要新建文件夹,然后拷贝追踪结果。

注意:这里使用的是MOT17的整个训练集进行评估,如果要评估验证集,需要将验证集的gt文件放到data/gt的指定数据集下,并修改文件中的GT_LOC_FORMAT格式为验证集gt命名格式,例如:'GT_LOC_FORMAT': '{gt_folder}/{seq}/gt/gt_val_half.txt'

img

img

复杂一点的用法:

若在dancetrack上评估

python scripts/run_mot_challenge.py --SPLIT_TO_EVAL val  --METRICS HOTA CLEAR Identity  --GT_FOLDER /home/czh/work/MOT/datasets/DanceTrack/val --SEQMAP_FILE /home/czh/work/MOT/datasets/DanceTrack/val_seqmap.txt --SKIP_SPLIT_FOL True   --TRACKERS_TO_EVAL '' --TRACKER_SUB_FOLDER ''  --USE_PARALLEL True --NUM_PARALLEL_CORES 8 --PLOT_CURVES False --TRACKERS_FOLDER /home/czh/work/MOT/ByteTrack/YOLOX_outputs/yolox_x/track_results

其中,

--SPLIT_TO_EVAL选定需要评估训练集还是验证集 ,值可以取'train', 'val',对应对应数据集的存放文件夹名称;

img

--METRICS是选择需要评估的指标,包括:'HOTA', 'CLEAR', 'Identity';

--GT_FOLDER是真实值存放的路径;

--SEQMAP_FILE数据集提供的数据映射文件,若为None,seqmap文件在 GT_FOLDER/seqmap;

--SKIP_SPLIT_FOL跳过中间的 "benchmark-split "文件夹, False(默认):路径为 GT_FOLDER/BENCHMARK-SPLIT/序列/...True:跳过该层,直接 GT_FOLDER/序列/...

--PLOT_CURVES是否绘制结果曲线;

--TRACKERS_FOLDER追踪器运行结果存放的文件夹;

--USE_PARALLEL是否在多个核上并行运行评估;

--NUM_PARALLEL_CORES并行核数,并行运行时使用的核数量;

--SPLIT_TO_EVAL val指定要评估划分的哪个数据集,包括'train', 'test', 'all',如果评估的GT,seqmap都是使用TrackEval外面的文件,可以不设置;

--TRACKERS_TO_EVAL 如果评估的GT,seqmap都是使用TrackEval外面的文件,这个参数设置为空 '';

--TRACKER_SUB_FOLDER 追踪结果文件夹(--TRACKERS_FOLDER )下是否还有子文件夹,如果追踪结果文件夹下直接是txt,那就设置为空'';

--GT_LOC_FORMA 设置gt文件的位置格式,在评估验证集和训练集的时候需要进行修改。

不常用参数:

'OUTPUT_FOLDER': None设置为None,评估结果和追踪结果存在一个文件夹下。

'CLASSES_TO_EVAL': ['pedestrian']评估类别。

在MOT代码中嵌入评估代码:

os.system(f"python ./TrackEval/scripts/run_mot_challenge.py  \
                                    --SPLIT_TO_EVAL train  \
                                    --METRICS HOTA CLEAR Identity\
                                    --GT_FOLDER {gt_folder_path}   \
                                    --SEQMAP_FILE {val_map_path}  \
                                    --SKIP_SPLIT_FOL True   \
                                    --TRACKERS_TO_EVAL '' \
                                    --TRACKER_SUB_FOLDER ''  \
                                    --USE_PARALLEL True  \
                                    --NUM_PARALLEL_CORES 8  \
                                    --PLOT_CURVES False   \
                                    --TRACKERS_FOLDER  {self.config.save_dir}  \
                                    --GT_LOC_FORMA {val_type}")

Easier_To_Use_TrackEval

之后有时间更新

posted @ 2025-05-31 15:52  panorama_16  阅读(164)  评论(0)    收藏  举报