使用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 中软件包的版本号删除,否则按照提供的版本号安装会报错

# 安装环境依赖
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文件夹下。

2.进行评估
2D多目标追踪运行的是这个文件run_mot_challenge.py,需要通过命令行传入一些参数。
最简单的用法:
在解压后的data/trackers文件夹下找到需要评估的数据集文件夹(如MOT17),将在这个文件夹下新建一个track方法文件夹(这里新建了一个mytrack方法)

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

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'


复杂一点的用法:
若在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',对应对应数据集的存放文件夹名称;

--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
之后有时间更新

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号