YOLO_Tracking 实践 (环境搭建 & 案例测试)

前言:本文讲述搭建mikel-brostrom作者的yolo_tracking项目,该项目主要用于分割、物体检测和姿态估计模型。本文主要实现其跟踪车辆过程。

1、环境搭建

原作者要求搭建Python>=3.8,但我建议直接大于等于3.9,因为3.8会报一些错误。

# 默认系统配置了conda环境
conda create -n yolo_tracking python=3.9
# 激活当前环境
conda activate yolo_tracking
# 拷贝yolo_tracking项目
git clone https://github.com/mikel-brostrom/yolo_tracking.git
# 来到yolo_tracking目录下
cd yolo_tracking
# 安装peotry模块,poetry 是一个用于管理 Python 项目依赖关系和构建工具的工具,包括虚拟环境管理
pip install poetry
# 安装boxmot + yolo 依赖
poetry install --with yolo 
# 激活依赖
poetry shell

# 另外,如果你想只要跟踪模块,可以执行下方语句
pip install boxmot

2、运行例子

2.1、运行目标检测,分割,姿态检测

# 前提要下载对应的模型。如果没下载的话,默认去谷歌云盘下载模型。
python tracking/track.py --yolo-model yolov8n       # bboxes only
python tracking/track.py --yolo-model yolo_nas_s    # bboxes only
python tracking/track.py --yolo-model yolox_n       # bboxes only
                                      yolov8n-seg   # bboxes + segmentation masks
                                      yolov8n-pose  # bboxes + pose estimation

2.2、运行跟踪

# 根据不同方法名,下载不同的跟踪模型
python tracking/track.py --tracking-method deepocsort
                                           strongsort
                                           ocsort
                                           bytetrack
                                           botsort

2.3、检测不同内容

python tracking/track.py --source 0                               # webcam  摄像头
                                  img.jpg                         # image 图片
                                  vid.mp4                         # video 视频
                                  path/                           # directory 目录
                                  path/*.jpg                      # glob
                                  'https://youtu.be/Zgi9g1ksQHc'  # YouTube
                                  'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream

2.4、运行ReID模型

一些跟踪方法在跟踪过程中结合了外观描述和运动。对于那些使用外观的人,你可以根据自己的需求从这个ReID模型库中选择一个ReID模型。你可以根据自己的需求结合reid_export.py脚本优化这些模型。

python tracking/track.py --source 0 --reid-model lmbn_n_cuhk03_d.pt               # lightweight
                                                 osnet_x0_25_market1501.pt
                                                 mobilenetv2_x1_4_msmt17.engine
                                                 resnet50_msmt17.onnx
                                                 osnet_x1_0_msmt17.pt
                                                 clip_market1501.pt               # heavy
                                                 clip_vehicleid.pt
                                                   ...

2.5、过滤跟踪类别

默认情况下,跟踪器跟踪所有MS COCO类。如果你想跟踪你建模预测的类的子集,请在类标志后添加相应的索引。

coco数据集官网

python tracking/track.py --source 0 --yolo-model yolov8s.pt --classes 16 17  # COCO yolov8 model. Track cats and dogs, only

# coco类别 注意官网序号从1开始
# 特别注意:mikel-brostrom作者训练的yolo_tracking项目的序号是从0开始的!!
['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light','fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow','elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee','skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard','tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple','sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch','potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven', 'toaster', 'sink','refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear','hair drier', 'toothbrush','hair brush'] 

2.6、符合MOT格式

# Can be saved to your experiment folder runs/track/exp*/ by
python tracking/track.py --source ... --save-mot

2.7、综合测试

# 检测并跟踪车辆
python tracking/track.py --source video/MOT16-13.mp4 --yolo-model ./weights/yolov8s.pt  --classes 1 2 3 5 6 7  --tracking-method deepocsort --save  

3、遇到问题

requests.exceptions.ConnectionError: HTTPSConnectionPool(host=‘drive.google.com’)

原因:如果没有提前下载模型,则默认从谷歌云盘下载对应的模型(yolo模型,tracking模型,ReID模型),但谷歌云盘默认不对中国开放。

# 出错代码
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='drive.google.com', port=443): Max retries exceeded with url: /uc?id=1sSwXSUlj4_tHZequ_iZ8w_Jh0VaRQMqF (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x2b22546043d0>: Failed to resolve 'drive.google.com' ([Errno -2] Name or service not known)"))

1、我们可以在 boxmot\appearance\backbones\osnet.py中找到要下载的预加载模型。

pretrained_urls = {
    "osnet_x1_0": "https://drive.google.com/uc?id=1LaG1EJpHrxdAxKnSCJ_i0u-nbxSAeiFY",
    "osnet_x0_75": "https://drive.google.com/uc?id=1uwA9fElHOk3ZogwbeY5GkLI6QPTX70Hq",
    "osnet_x0_5": "https://drive.google.com/uc?id=16DGLbZukvVYgINws8u8deSaOqjybZ83i",
    "osnet_x0_25": "https://drive.google.com/uc?id=1rb8UN5ZzPKRc_xvtHlyDh-cSz88YX9hs",
    "osnet_ibn_x1_0": "https://drive.google.com/uc?id=1sr90V6irlYYDd4_4ISU2iruoRG8J__6l",
}

2、我们可以在 boxmot\appearance\reid_model_factory.py中找到要下载的ReID模型。

__trained_urls = {
    # resnet50
    "resnet50_market1501.pt": "https://drive.google.com/uc?id=1dUUZ4rHDWohmsQXCRe2C_HbYkzz94iBV",
    "resnet50_dukemtmcreid.pt": "https://drive.google.com/uc?id=17ymnLglnc64NRvGOitY3BqMRS9UWd1wg",
    "resnet50_msmt17.pt": "https://drive.google.com/uc?id=1ep7RypVDOthCRIAqDnn4_N-UhkkFHJsj",
    "resnet50_fc512_market1501.pt": "https://drive.google.com/uc?id=1kv8l5laX_YCdIGVCetjlNdzKIA3NvsSt",
    "resnet50_fc512_dukemtmcreid.pt": "https://drive.google.com/uc?id=13QN8Mp3XH81GK4BPGXobKHKyTGH50Rtx",
    "resnet50_fc512_msmt17.pt": "https://drive.google.com/uc?id=1fDJLcz4O5wxNSUvImIIjoaIF9u1Rwaud",
    # mlfn
    "mlfn_market1501.pt": "https://drive.google.com/uc?id=1wXcvhA_b1kpDfrt9s2Pma-MHxtj9pmvS",
    "mlfn_dukemtmcreid.pt": "https://drive.google.com/uc?id=1rExgrTNb0VCIcOnXfMsbwSUW1h2L1Bum",
    "mlfn_msmt17.pt": "https://drive.google.com/uc?id=18JzsZlJb3Wm7irCbZbZ07TN4IFKvR6p-",
    # hacnn
    "hacnn_market1501.pt": "https://drive.google.com/uc?id=1LRKIQduThwGxMDQMiVkTScBwR7WidmYF",
    "hacnn_dukemtmcreid.pt": "https://drive.google.com/uc?id=1zNm6tP4ozFUCUQ7Sv1Z98EAJWXJEhtYH",
    "hacnn_msmt17.pt": "https://drive.google.com/uc?id=1MsKRtPM5WJ3_Tk2xC0aGOO7pM3VaFDNZ",
    # mobilenetv2
    "mobilenetv2_x1_0_market1501.pt": "https://drive.google.com/uc?id=18DgHC2ZJkjekVoqBWszD8_Xiikz-fewp",
    "mobilenetv2_x1_0_dukemtmcreid.pt": "https://drive.google.com/uc?id=1q1WU2FETRJ3BXcpVtfJUuqq4z3psetds",
    "mobilenetv2_x1_0_msmt17.pt": "https://drive.google.com/uc?id=1j50Hv14NOUAg7ZeB3frzfX-WYLi7SrhZ",
    "mobilenetv2_x1_4_market1501.pt": "https://drive.google.com/uc?id=1t6JCqphJG-fwwPVkRLmGGyEBhGOf2GO5",
    "mobilenetv2_x1_4_dukemtmcreid.pt": "https://drive.google.com/uc?id=12uD5FeVqLg9-AFDju2L7SQxjmPb4zpBN",
    "mobilenetv2_x1_4_msmt17.pt": "https://drive.google.com/uc?id=1ZY5P2Zgm-3RbDpbXM0kIBMPvspeNIbXz",
    # osnet
    "osnet_x1_0_market1501.pt": "https://drive.google.com/uc?id=1vduhq5DpN2q1g4fYEZfPI17MJeh9qyrA",
    "osnet_x1_0_dukemtmcreid.pt": "https://drive.google.com/uc?id=1QZO_4sNf4hdOKKKzKc-TZU9WW1v6zQbq",
    "osnet_x1_0_msmt17.pt": "https://drive.google.com/uc?id=112EMUfBPYeYg70w-syK6V6Mx8-Qb9Q1M",
    "osnet_x0_75_market1501.pt": "https://drive.google.com/uc?id=1ozRaDSQw_EQ8_93OUmjDbvLXw9TnfPer",
    "osnet_x0_75_dukemtmcreid.pt": "https://drive.google.com/uc?id=1IE3KRaTPp4OUa6PGTFL_d5_KQSJbP0Or",
    "osnet_x0_75_msmt17.pt": "https://drive.google.com/uc?id=1QEGO6WnJ-BmUzVPd3q9NoaO_GsPNlmWc",
    "osnet_x0_5_market1501.pt": "https://drive.google.com/uc?id=1PLB9rgqrUM7blWrg4QlprCuPT7ILYGKT",
    "osnet_x0_5_dukemtmcreid.pt": "https://drive.google.com/uc?id=1KoUVqmiST175hnkALg9XuTi1oYpqcyTu",
    "osnet_x0_5_msmt17.pt": "https://drive.google.com/uc?id=1UT3AxIaDvS2PdxzZmbkLmjtiqq7AIKCv",
    "osnet_x0_25_market1501.pt": "https://drive.google.com/uc?id=1z1UghYvOTtjx7kEoRfmqSMu-z62J6MAj",
    "osnet_x0_25_dukemtmcreid.pt": "https://drive.google.com/uc?id=1eumrtiXT4NOspjyEV4j8cHmlOaaCGk5l",
    "osnet_x0_25_msmt17.pt": "https://drive.google.com/uc?id=1sSwXSUlj4_tHZequ_iZ8w_Jh0VaRQMqF",
    # osnet_ain | osnet_ibn
    "osnet_ibn_x1_0_msmt17.pt": "https://drive.google.com/uc?id=1q3Sj2ii34NlfxA4LvmHdWO_75NDRmECJ",
    "osnet_ain_x1_0_msmt17.pt": "https://drive.google.com/uc?id=1SigwBE6mPdqiJMqhuIY4aqC7--5CsMal",
    # lmbn
    "lmbn_n_duke.pt": lmbn_loc + "lmbn_n_duke.pth",
    "lmbn_n_market.pt": lmbn_loc + "lmbn_n_market.pth",
    "lmbn_n_cuhk03_d.pt": lmbn_loc + "lmbn_n_cuhk03_d.pth",
    # clip
    "clip_market1501.pt": "https://drive.google.com/uc?id=1GnyAVeNOg3Yug1KBBWMKKbT2x43O5Ch7",
    "clip_duke.pt": "https://drive.google.com/uc?id=1ldjSkj-7pXAWmx8on5x0EftlCaolU4dY",
    "clip_veri.pt": "https://drive.google.com/uc?id=1RyfHdOBI2pan_wIGSim5-l6cM4S2WN8e",
    "clip_vehicleid.pt": "https://drive.google.com/uc?id=168BLegHHxNqatW5wx1YyL2REaThWoof5"
}

3、下方提供本文测试的模型和视频

# 成功运行,显示代码
| SUCCESS  | boxmot.appearance.reid_model_factory:load_pretrained_weights:207 - Successfully loaded pretrained weights from "weights/osnet_x0_25_msmt17.pt"

4、参考文章

5、目标检测系列文章

  1. YOLOv5s网络模型讲解(一看就会)

  2. 生活垃圾数据集(YOLO版)

  3. YOLOv5如何训练自己的数据集

  4. 双向控制舵机(树莓派版)

  5. 树莓派部署YOLOv5目标检测(详细篇)

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值