如何实现Mask Track RCNN
2026/4/29 10:41:19 网站建设 项目流程

一、配置环境

1. 环境选择的是pytorch 2.0.1+cuda118

conda env list #查看当前环境 conda create --name openmmlab python=3.8 -y conda activate openmmlab pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118 --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple

2. 其次安装 MMEngine 、MMCV

pip install -U openmim mim install mmengine mim install "mmcv>=2.0.0" mim install "mmdet>=3.0.0"

3. 之后安装MMdetection

git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection pip install -v -e . # "-v" means verbose, or more output # "-e" means installing a project in editable mode, # thus any local modifications made to the code will take effect without reinstallation.

二、数据准备

将labelme标注出来的文件(image+json)转换成YoutubeVIS 2019格式

python tools/dataset_converters/labelme2video.py

将YoutubeVIS 2019数据集转化成COCO 视频格式

python ./tools/dataset_converters/youtubevis2coco.py -i ./data/youtube_vis_2019 -o ./data/youtube_vis_2019/annotations --version 2019

三、模型训练

实验中跑了ResNet50、ResNet101、RexNet101,三种backbone下的模型。batchsize=2,epoch=50.

#训练代码 4块GPU #ResNet50 bash tools/dist_train.sh configs/masktrack_rcnn/ME_masktrack_inial.py 4 #ResNet101 bash tools/dist_train.sh configs/masktrack_rcnn/ME_masktrack_101.py 4 #RexNet101 bash tools/dist_train.sh configs/masktrack_rcnn/ME_masktrack_x101.py 4 #如果要使用随机数种子的话,命令变成: bash tools/dist_train.sh configs/masktrack_rcnn/ME_masktrack_inial.py 4 \ --seed 0 \ --work-dir work_dirs/ME_masktrack_round2_seed0

四、推理

(一)显示图像:

#使用mot_demo.py,输入的数据有视频、config配置、模型权重、保存成哪个mp4、fps设置。 python /hy-tmp/demo/mot_demo.py data/youtube_vis_2019me/test/JPEGImages/new_downcell3 configs/masktrack_rcnn/masktrack-rcnn_mask-rcnn_r50_fpn_8xb1-12e_youtubevis2019.py --checkpoint /hy-tmp/work_dirs/masktrack-rcnn_r50/epoch_50.pth --show --out visbool_cell2.mp4 --fps 5

(二)计算mAP和mAR(重点!)

#将评估数据先打印出一个json文件(result.json,以压缩包的形式放在里面) python tools/test_tracking.py configs/masktrack_rcnn/ME_masktrack_inial.py --checkpoint work_dirs/masktrack-rcnn_r50_round1/epoch_50.pth --work-dir youtube_vis_R50 #其次将result.json下载到本地,使用Google Colab运行代码输出mAP和mAR

result.json下载到本地,使用Google Colab计算mAP和mAR,计算的代码如下:

(这段代码在seqformer_refine中)

import matplotlib.pyplot as plt from pycocotools.ytvos import YTVOS from pycocotools.ytvoseval import YTVOSeval import pylab import numpy as np # 强行给 numpy 加上 float 属性,欺骗旧代码 np.float = float np.int = int # 顺手把 int 也补上,以防万一 # --------------------- vita ------------------ pylab.rcParams['figure.figsize'] = (10.0, 8.0) annType = 'bbox' # 放valid.json annFile = '/content/test.json' visGt = YTVOS(annFile) #initialize vis detections api resFile = '/content/results_maskrcnn_final.json' visDt = visGt.loadRes(resFile) vidIds = sorted(visGt.getVidIds()) # vidIds = vidIds[0:53] # vidIds = vidIds[np.random.randint(53)] # running evaluation visEval = YTVOSeval(visGt,visDt,annType) visEval.params.vidIds = vidIds visEval.evaluate() visEval.accumulate() visEval.summarize()

四、Baseline与SOTA

Baseline选择使用去掉Tracking Head的部分,训练baseline的命令行为:

#训练代码 bash tools/dist_train.sh /hy-tmp/configs/mask_rcnn/my_baseline_r50.py 4 --seed 1717 --work-dir /hy-tmp/work_dirs_baseline/R50 #推理代码(将图像的结果拼接成视频的结果,然后再放到Google Colab里面去计算) python tools/inference_to_ytvis.py

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询