기본 콘텐츠로 건너뛰기

[Python] TrackEval

    목차
run_mot_challenge.py 실행 관련

개요


설치 및 환경설정

  1. Git URL에서 Master 브랜치에 있는 코드(Download ZIP)를 다운로드 받고 압축 해제.
  2. Conda를 이용하여 가상환경을 생성 및 실행합니다. (Python 3.7 버전 이상)
  3. 프롬프트 내에서 TrackEval-master 디렉토리로 경로를 변경합니다.
  4. 아래의 패키지 들을 설치합니다. (run_mot_challenge.py 실행하는데는 충분함)
    • numpy==1.18.1 (버전 주의)
      • numpy 1.20 부터 numpy.float 에 Warning
      • numpy 1.24 부터 numpy.float 에 Error
    • scipy==1.4.1
    • matplotlib==3.2.1

테스트 코드 실행해보기


테스트 코드 적용해보기


테스트 데이터 폴더 구조

(파라미터 수정 없음. mot_challenge\MOT17-train 부분만 출력)


E:\TRACKEVAL-MASTER\DATA
├─gt
│  └─mot_challenge
│      ├─MOT17-train
│      │  ├─MOT17-02-DPM
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-02-FRCNN
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-02-SDP
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-04-DPM
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-04-FRCNN
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-04-SDP
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-05-DPM
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-05-FRCNN
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-05-SDP
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-09-DPM
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-09-FRCNN
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-09-SDP
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-10-DPM
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-10-FRCNN
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-10-SDP
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-11-DPM
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-11-FRCNN
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-11-SDP
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-13-DPM
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  ├─MOT17-13-FRCNN
│      │  │  │  seqinfo.ini
│      │  │  │  
│      │  │  └─gt
│      │  │          gt.txt
│      │  │          
│      │  └─MOT17-13-SDP
│      │      │  seqinfo.ini
│      │      │  
│      │      └─gt
│      │              gt.txt
│      │              
│      └─seqmaps
│              MOT17-all.txt
│              MOT17-test.txt
│              MOT17-train.txt
│              
└─trackers
    └─mot_challenge
        └─MOT17-train
            └─MPNTrack
                │  pedestrian_detailed.csv ← 코드 실행 후 출력 결과물
                │  pedestrian_plot.pdf ← 코드 실행 후 출력 결과물
                │  pedestrian_plot.png ← 코드 실행 후 출력 결과물
                │  pedestrian_summary.txt ← 코드 실행 후 출력 결과물
                │  
                └─data
                        MOT17-02-DPM.txt
                        MOT17-02-FRCNN.txt
                        MOT17-02-SDP.txt
                        MOT17-04-DPM.txt
                        MOT17-04-FRCNN.txt
                        MOT17-04-SDP.txt
                        MOT17-05-DPM.txt
                        MOT17-05-FRCNN.txt
                        MOT17-05-SDP.txt
                        MOT17-09-DPM.txt
                        MOT17-09-FRCNN.txt
                        MOT17-09-SDP.txt
                        MOT17-10-DPM.txt
                        MOT17-10-FRCNN.txt
                        MOT17-10-SDP.txt
                        MOT17-11-DPM.txt
                        MOT17-11-FRCNN.txt
                        MOT17-11-SDP.txt
                        MOT17-13-DPM.txt
                        MOT17-13-FRCNN.txt
                        MOT17-13-SDP.txt
                        

실행 결과


아래 이미지들은 아래 명령어(ReadMe에 있는 명령 그대로)를 입력하여 나온 결과
(여기서 MOT17-train의 경우 "TrackEval-master\data\trackers\mot_challenge\MOT17-train\MPNTrack" 폴더 내에 결과 파일 4개가 생성된다.)
  
  python scripts/run_mot_challenge.py --BENCHMARK MOT17 --SPLIT_TO_EVAL train --TRACKERS_TO_EVAL MPNTrack --METRICS HOTA CLEAR Identity VACE --USE_PARALLEL False --NUM_PARALLEL_CORES 1  











중요 Parameter 해석

각 python 코드에 설명되어 있다고 한다. 각 파라미터 오른쪽에 있는 값들은 따로 입력하지 않으면 자동으로 설정되는 값을 의미 한다.

주의 사항

  • 파라미터 입력시 앞에 대시(--) 두개를 입력 해야됨.
  • True, False 입력 시 앞부분은 대문자로 입력해야 된다.
    • 예 : --TIME_PROGRESS False

Eval Config


LOG_ON_ERROR : E:\TrackEval-master\error_log.txt


각 Metric 실행 결과를 출력한다. (HOTA, MOTA 값 등) 

True로 설정되면, 종합된 값에 대해서만 실행 결과를 출력한다. (각 데이터의 값들에 대해서는 출력하지 않음). 단, PRINT_RESULTS 값이 False로 설정되면 출력되지 않음.

각 Metric 코드에서 활용하는 파라미터 정보를 출력한다. 근데 False로 설정해도 "CLEAR" 모듈은 출력된다. 

TIME_PROGRESS : True

코드 진행사항 (경과시간)을 출력한다. 

DISPLAY_LESS_PROGRESS : False

코드 진행사항 (경과시간)을 시퀀스 단위로 출력한다. [TIME_PROGRESS] 값이 False면 무시된다.

OUTPUT_SUMMARY : True

코드 실행 후, "[CLASSES_TO_EVAL]_summary.txt" 파일을 출력한다.

OUTPUT_EMPTY_CLASSES : True


OUTPUT_DETAILED : True

코드 실행 후, "[CLASSES_TO_EVAL]_detailed.csv" 파일을 출력한다.

PLOT_CURVES : True

코드 실행 후, "[CLASSES_TO_EVAL]_plot.png" 파일 및 "[CLASSES_TO_EVAL]_plot.pdf" 파일을 출력한다. (이겨서는 "pedestrian_plot.png", "pedestrian_plot.pdf" 파일이 된다.)

MotChallenge2DBox Config


GT_FOLDER : E:\TrackEval-master\data/gt/mot_challenge/

GT 파일이 있는 루트 디렉토리 경로를 설정한다. 경로 해석은 [GT_LOC_FORMAT] 부분에서 해석

TRACKERS_FOLDER : E:\TrackEval-master\data/trackers/mot_challenge/

Track 파일 (테스트 파일)이 있는 루트 디렉토리 경로

  • 경로 분석 : E:\TrackEval-master\data\trackers\mot_challenge\MOT17-train\MPNTrack\data\시퀀스명.txt
    • [TRACKERS_FOLDER] : E:\TrackEval-master\data\trackers\mot_challenge\
    • [BENCHMARK]-[SPLIT_TO_EVAL] : MOT17-train
    • [TRACKERS_TO_EVAL] : MPNTrack
    • [TRACKER_SUB_FOLDER] : data
    • 시퀀스명 : MOT17-train.txt 파일 내용에 정의

OUTPUT_FOLDER : None

None일 경우, [TRACKERS_FOLDER] 값을 따른다고 한다.
건들지 말자. 변경하면 오류 뜬다...

TRACKERS_TO_EVAL : [‘MPNTrack’]


CLASSES_TO_EVAL : [‘pedestrian’]

검출할 객체의 종류 담당하는 파라미터. 여기서는 그냥 유지 할 것. (다른 코드에서는 "Car", "bus" 등 여러 종류를 선택할 수 있는 듯 함.)

BENCHMARK : MOT17

테스트할 데이터 이름이라고 생각하면 된다. [SPLIT_TO_EVAL] 파라미터와 같이 사용된다.
[BENCHMARK]-[SPLIT_TO_EVAL] : "MOT17-train"

SPLIT_TO_EVAL : train

'all', 'test', 'train' 입력 가능하지만, 'train'으로 그냥 유지하는 것이 좋음. [BENCHMARK] 파라미터와 같이 쓰인다.


DO_PREPROC : True


TRACKER_SUB_FOLDER : data


OUTPUT_SUB_FOLDER :


TRACKER_DISPLAY_NAMES : None


SEQMAP_FOLDER : None

정의 하지 않으면 [GT_FOLDER]\seqmaps 경로로 설정
주의! 파라미터 입력 값을 list로 취급하기 때문에 사용하기 위해서는 None → ''로 수정해야됨

SEQMAP_FILE : None

정의하지 않으면 [SEQMAP_FOLDER]\[BENCHMARK]-[SPLIT_TO_EVAL].txt 파일로 설정
주의! 파라미터 입력 값을 list로 취급하기 때문에 사용하기 위해서는 None → ''로 수정해야됨

SEQ_INFO : None



GT_LOC_FORMAT : {gt_folder}/{seq}/gt/gt.txt

  • 경로 분석 : E:\TrackEval-master\data\gt\mot_challenge\MOT17-train\MOT17-02-DPM\gt\gt.txt
    • {gt_folder} : [GT_FOLDER]\"[BENCHMARK]-[SPLIT_TO_EVAL]"
    • {seq} : seqmaps 폴더 내 [BENCHMARK]-[SPLIT_TO_EVAL].txt 파일 내에 명시

SKIP_SPLIT_FOL : False

True로 설정될 경우 gt데이터, track데이터 경로를 판단할 때 중간에 들어가는 "[BENCHMARK]-[SPLIT_TO_EVAL]" 이름의 폴더를 생략하게 된다.


CLEAR Config

METRICS : [‘HOTA’, ‘CLEAR’, ‘Identity’, ‘VACE’]

실행할 Metric 정보. "CLEAR" 를 입력하면 MOTA, MOTP가 출력된다.

THRESHOLD : 0.5

허용 가능한 IOU 최댓값?





































댓글