BoT-SORT: جمعيات قوية لتتبع المشاة المتعددين
نير أهارون، روي أورفيج، بن تسيون بوبروفسكي
https://arxiv.org/abs/2206.14651
الهدف من تتبع الكائنات المتعددة (MOT) هو اكتشاف وتتبع جميع الكائنات في المشهد، مع الاحتفاظ بمعرف فريد لكل كائن. في هذه الورقة، نقدم أداة تعقب جديدة وقوية ومتطورة، يمكنها الجمع بين مزايا معلومات الحركة والمظهر، إلى جانب تعويض حركة الكاميرا، ومتجه حالة مرشح كالمان الأكثر دقة. يحتل جهازا التتبع الجديدان BoT-SORT وBoT-SORT-ReID المرتبة الأولى في مجموعات بيانات MOTChallenge [29، 11] في كل من مجموعتي اختبار MOT17 وMOT20، من حيث جميع مقاييس MOT الرئيسية: MOTA، وIDF1، وHOTA. بالنسبة إلى MOT17: تم تحقيق 80.5 MOTA و80.2 IDF1 و65.0 HOTA.
المقتفي | موتا | جيش الدفاع الإسرائيلي1 | هوتا |
---|---|---|---|
بوت-فرز | 80.6 | 79.5 | 64.6 |
بوت-فرز-ريد | 80.5 | 80.2 | 65.0 |
المقتفي | موتا | جيش الدفاع الإسرائيلي1 | هوتا |
---|---|---|---|
بوت-فرز | 77.7 | 76.3 | 62.6 |
بوت-فرز-ريد | 77.8 | 77.5 | 63.3 |
تم اختبار الكود على Ubuntu 20.04
يعتمد رمز BoT-SORT على ByteTrack وFastReID.
قم بزيارة أدلة التثبيت الخاصة بهم لمزيد من خيارات الإعداد.
الخطوة 1. قم بإنشاء بيئة Conda وتثبيت pytorch.
conda create -n botsort_env python=3.7
conda activate botsort_env
الخطوة 2. قم بتثبيت الشعلة وtorchvision المطابق من pytorch.org.
تم اختبار الكود باستخدام torch 1.11.0+cu113 وtorchvision==0.12.0
الخطوة 3. قم بتثبيت BoT-SORT.
git clone https://github.com/NirAharon/BoT-SORT.git
cd BoT-SORT
pip3 install -r requirements.txt
python3 setup.py develop
الخطوة 4. تثبيت pycocotools.
pip3 install cython ; pip3 install ' git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI '
الخطوة 5. الآخرين
# Cython-bbox
pip3 install cython_bbox
# faiss cpu / gpu
pip3 install faiss-cpu
pip3 install faiss-gpu
قم بتنزيل MOT17 وMOT20 من الموقع الرسمي. ووضعها في الهيكل التالي:
<dataets_dir>
│
├── MOT17
│ ├── train
│ └── test
│
└── MOT20
├── train
└── test
لتدريب ReID، يجب إنشاء تصحيحات الكشف على النحو التالي:
cd < BoT-SORT_dir >
# For MOT17
python3 fast_reid/datasets/generate_mot_patches.py --data_path < dataets_dir > --mot 17
# For MOT20
python3 fast_reid/datasets/generate_mot_patches.py --data_path < dataets_dir > --mot 20
ربط مجموعة البيانات export FASTREID_DATASETS=<BoT-SORT_dir>/fast_reid/datasets
. إذا تركت بدون تعيين، فإن الإعداد الافتراضي هو fast_reid/datasets
قم بتنزيل النماذج المدربة وتخزينها في مجلد "التدريب المسبق" على النحو التالي:
<BoT-SORT_dir>/pretrained
استخدمنا حديقة الحيوان النموذجية ByteTrack المتاحة للجمهور والتي تم تدريبها على MOT17 وMOT20 ودراسة الاجتثاث لاكتشاف كائن YOLOX.
يمكن تنزيل نماذج ReID المدربة لدينا من MOT17-SBS-S50، وMOT20-SBS-S50.
بالنسبة إلى MOT متعدد الفئات، استخدم YOLOX أو YOLOv7 المدربين على COCO (أو أي أوزان مخصصة).
بعد إنشاء مجموعة بيانات MOT ReID كما هو موضح في قسم "تحضير البيانات".
cd < BoT-SORT_dir >
# For training MOT17
python3 fast_reid/tools/train_net.py --config-file ./fast_reid/configs/MOT17/sbs_S50.yml MODEL.DEVICE " cuda:0 "
# For training MOT20
python3 fast_reid/tools/train_net.py --config-file ./fast_reid/configs/MOT20/sbs_S50.yml MODEL.DEVICE " cuda:0 "
ارجع إلى مستودع FastReID للحصول على شرح وخيارات الإضافة.
من خلال إرسال ملفات txt المنتجة في هذا الجزء إلى موقع MOTChallenge ويمكنك الحصول على نفس النتائج كما في الورقة.
قد يؤدي ضبط معلمات التتبع بعناية إلى أداء أعلى. نطبق في الورقة معايرة ByteTrack.
cd < BoT-SORT_dir >
python3 tools/track.py < dataets_dir/MOT 17> --default-parameters --with-reid --benchmark " MOT17 " --eval " test " --fp16 --fuse
python3 tools/interpolation.py --txt_path < path_to_track_result >
cd < BoT-SORT_dir >
python3 tools/track.py < dataets_dir/MOT 20> --default-parameters --with-reid --benchmark " MOT20 " --eval " test " --fp16 --fuse
python3 tools/interpolation.py --txt_path < path_to_track_result >
cd < BoT-SORT_dir >
# BoT-SORT
python3 tools/track.py < dataets_dir/MOT 17> --default-parameters --benchmark " MOT17 " --eval " val " --fp16 --fuse
# BoT-SORT-ReID
python3 tools/track.py < dataets_dir/MOT 17> --default-parameters --with-reid --benchmark " MOT17 " --eval " val " --fp16 --fuse
يمكن استخدام معلمات أخرى دون تمرير علامة --default-parameters.
لتقييم مجموعات التدريب والتحقق، نوصي باستخدام رمز تقييم MOTChallenge الرسمي من TrackEval.
# For all the available tracking parameters, see:
python3 tools/track.py -h
يمكن استخدام معلمات أخرى دون تمرير علامة --default-parameters.
لتقييم مجموعات التدريب والتحقق، نوصي باستخدام رمز تقييم MOTChallenge الرسمي من TrackEval.
# For all the available tracking parameters, see:
python3 tools/track_yolov7.py -h
عرض توضيحي باستخدام YOLOX المستند إلى BoT-SORT(-ReID) والفئات المتعددة.
cd < BoT-SORT_dir >
# Original example
python3 tools/demo.py video --path < path_to_video > -f yolox/exps/example/mot/yolox_x_mix_det.py -c pretrained/bytetrack_x_mot17.pth.tar --with-reid --fuse-score --fp16 --fuse --save_result
# Multi-class example
python3 tools/mc_demo.py video --path < path_to_video > -f yolox/exps/example/mot/yolox_x_mix_det.py -c pretrained/bytetrack_x_mot17.pth.tar --with-reid --fuse-score --fp16 --fuse --save_result
عرض توضيحي باستخدام BoT-SORT(-ReID) استنادًا إلى YOLOv7 ومتعدد الفئات.
cd < BoT-SORT_dir >
python3 tools/mc_demo_yolov7.py --weights pretrained/yolov7-d6.pt --source < path_to_video/images > --fuse-score --agnostic-nms (--with-reid)
تعتمد وحدة تعويض حركة الكاميرا الخاصة بنا على إصدار OpenCV contrib C++ من VideoStab Global Motion Estimation، والذي لا يحتوي حاليًا على إصدار Python.
يمكن إنشاء ملفات الحركة باستخدام مشروع C++ المسمى "VideoCameraCorrection" في مجلد GMC.
يمكن استخدام الملفات التي تم إنشاؤها من جهاز التعقب.
بالإضافة إلى ذلك، تتوفر تقنيات تقدير الحركة المعتمدة على لغة بايثون ويمكن اختيارها بالتمرير
'--cmc-method' <الملفات | الجرم السماوي | ecc> إلى demo.py أو Track.py.
@article{aharon2022bot,
title={BoT-SORT: Robust Associations Multi-Pedestrian Tracking},
author={Aharon, Nir and Orfaig, Roy and Bobrovsky, Ben-Zion},
journal={arXiv preprint arXiv:2206.14651},
year={2022}
}
يتم استعارة جزء كبير من الرموز والأفكار والنتائج من ByteTrack وStrongSORT وFastReID وYOLOX وYOLOv7. شكرا لعملهم الممتاز!