以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号− 海量资源。 \color{blue}{ 海量资源}。 海量资源。
目标检测00-00:mmdetection(Foveabox为例)-目录-史上最新无死角讲解
该系列博客主要以 Foveabox 为例
注意,本人编写该博客的时间为 2020 / 09 / 02 ,也就是说,你现在下载的作者代码或许和 \color{red}{注意,本人编写该博客的时间为2020/09/02,也就是说,你现在下载的作者代码或许和} 注意,本人编写该博客的时间为2020/09/02,也就是说,你现在下载的作者代码或许和 本人的代码不一样(如果作者有更新过)还有就是,本人调试该代码为 u b u n t u 18.04 系统 \color{red}{本人的代码不一样(如果作者有更新过)还有就是,本人调试该代码为ubuntu18.04系统} 本人的代码不一样(如果作者有更新过)还有就是,本人调试该代码为ubuntu18.04系统 即下面的报错使用 u b u n t u 18.04 报错的过程,以及解决办法 \color{red}{即下面的报错使用ubuntu18.04报错的过程,以及解决办法} 即下面的报错使用ubuntu18.04报错的过程,以及解决办法
anconda环境搭建请安装合适 c u d a 版本的 p y t o r c h ,不要直接复制 \color{red}{请安装合适cuda版本的pytorch,不要直接复制} 请安装合适cuda版本的pytorch,不要直接复制
# mmdetection-root表示从github下载项目的根目录
cd ${mmdetection-root}
conda create -n 09.mmdetection-pytorch1.5-py3.6 -y python=3.6
conda activate 09.mmdetection-pytorch1.5-py3.6
pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements/build.txt
python setup.py develop
pip install mmcv -i https://pypi.douban.com/simple
数据处理,模型下载
数据摆放 上一篇博客已经给出 COCO 数据的下载链接,下载下来之后本人摆放如下(没有的目录请自行创建):
# $MMPOSE表示项目(从githubu下载)的根目录
cd ${mmdetection-root}
# 创建软连接。注意 ../../Dataset data 需要替换成你本人Dataset路径
ln -s ../../Dataset data
其中 annotations 文件夹存在如下文件(有些东西是非必要的,根据上篇博客的提示下载即可):
模型下载 根据如下网址:https://github.com/open-mmlab/mmdetection/tree/master/configs/foveabox 下载: 下载的 fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth 与 fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json 文件存放在 mmdetection-root/checkpoints(如果不存在该文件夹,请自行创建)。
指令1
# $MMPOSE表示项目(从githubu下载)的根目录
cd ${mmdetection-root}
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth --show
指令2
# fovea_r50_fpn_4x4_2x_coco 表示你想保存测试图片的目录
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth --show-dir fovea_r50_fpn_4x4_2x_coco
如果执行第一个测试指令。图片会在桌面展示出来,本人如下: 如果执行第二条指令。其结果测试结果会保存在 fovea_r50_fpn_4x4_2x_coco 文件夹之中。
指令3:mAP评估
# proposal 可以省略,相关资料可以
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth --eval bbox proposal
本人显示如下: 我们还可以查看每个类别的mAP值,执行指令如下:
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth --eval-options 'classwise=True' --eval bbox proposal
指令4:测试结果转换为json文件:
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth --format-only --eval-options "jsonfile_prefix=./fovea_r50_fpn_4x4_2x_coco"
在项目根目录会生成 fovea_r50_fpn_4x4_2x_coco.bbox.json 文件。
模型训练
执行训练命令(单GPU):
# $MMPOSE表示项目(从githubu下载)的根目录
cd ${mmdetection-root}
python tools/train.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py
如果训练多个GPU:
# 2表示两个GPU(多个则把2替换即可)
python tools/train.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py 2
分布式训练其他的等请查看:https://github.com/open-mmlab/mmdetection/blob/master/docs/getting_started.md
报错1
File "/my_app/anaconda3/envs/09.-pytorch1.5-py3.6/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'mmcv._ext'
执行:
pip uninstall mmcv
pip install mmcv-full -i https://pypi.douban.com/simple
报错2
File "/work/2.ChiPeak/5.OpenMMLab/4.mmdetection/1.mmdetection/1.mmdetection-init-master/mmdet/datasets/coco.py", line 47, in load_annotations
self.cat_ids = self.coco.get_cat_ids(cat_names=self.CLASSES)
AttributeError: 'COCO' object has no attribute 'get_cat_ids'
执行
pip uninstall pycocotools
pip install "git+https://gitee.com/ztdztd/cocoapi.git#subdirectory=pycocotools"
报错3
RuntimeError: CUDA out of memory. Tried to allocate 66.00 MiB (GPU 0; 5.81 GiB total capacity; 4.89 GiB already allocated; 56.62 MiB free; 5.01 GiB reserved in total by PyTorch)
修改 configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py 文件,在文件最后添加:
total_epochs = 24
data = dict(samples_per_gpu=2, workers_per_gpu=2)
成功训练之后被人打印如下:
demo使用
测试单张图片
python demo/image_demo.py demo/demo.jpg configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth --device cuda
本人显示如下: 通过摄像头测试
python demo/webcam_demo.py demo/demo.jpg configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth
这里就不粘贴效果图片了。
实用代码
分析loss_cls 执行代码:
python tools/analyze_logs.py plot_curve checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json --keys loss_cls --legend loss_cls
本人打印如下: 或者
python tools/analyze_logs.py plot_curve checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json --keys loss_cls loss_bbox --out losses.pdf
在项目根目录可以看到 losses.pdf 文件,本人显示如下: 计算mAP
python tools/analyze_logs.py plot_curve checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json --keys bbox_mAP --legend run
本人打印如下: 可以多个.log.json 文件进行对比,如下指令:
python tools/analyze_logs.py plot_curve log1.json log2.json --keys bbox_mAP --legend run1 run2
其余工具
等等。还有其他很多实用的工具,具体的介绍查看 https://github.com/open-mmlab/mmdetection/blob/master/docs/getting_started.md