新手及无显卡苦逼人士——MMDetection学习(踩坑)笔记(一)


前言

老师近日给了我一个关于mmdetection的学习任务,我之前接触过YOLOV5,但研究不算深入,简单的跑了下代码。这次mmdetection学习的任务如下:
目标:在VEDAI数据库上进行车辆检测实验,并生成报告书。
数据集:https://downloads.greyc.fr/vedai/
实验要求:
1)实验在mmdetection框架下进行
2)调用框架中的8-10个baseline,且其中至少有2个是可以检测旋转角度的(这一步完成了可以先和我确认下选择哪几个模型)
3)设置不同的数据增强方式

于是我便抱着学习和研究的心态开始了mmdetection的学习(折磨)之旅。


一、选择服务器(有显卡的同志可以略过)

首先,我自己的电脑配置比较垃圾,是联想小新Air15,没有独显,因此只能靠连接外部服务器来测试代码。我选择的服务器是阿里云GPU服务器,这是我老师推荐的,然后选了穷鬼套餐(可以自由选择配置,看各位财力了,系统推荐选ubuntu18.04):
服务器选购
没办法,电脑垃圾又暂时没钱更换,只能靠一小时2块钱左右的服务器才能维持得了科研学习这样子,话又说回来这种方式还是能一定程度上遏制我的偷懒行为的,毕竟服务器开着就在烧钱啊o(╥﹏╥)o

至于终端工具我选择了Finalshell(有了这玩意就可以在服务器上进行操作了),它免费好用,功能强大,当然也偶尔有点小毛病,总之瑕不掩瑜。

FinalShell是一款国人开发的SSH客户端工具,多平台支持Windows,Mac OS
X,Linux。主要用于一体化服务器管理,软件支持shell和sftp同屏显示,并同步切换目录,不止如此,而且软件带有命令自动提示,让您的命令输入更加简单、便捷,另外,软件带有加速的功能,可以提高访问服务器的速度。

至于怎么连接GPU服务器可以看这篇教程,讲的很清楚,要确认购买的是GPU服务器,别用阿里云给的免费ECS云服务器(我刚开始没搞清楚,在这个没显卡的服务器上折腾了一整天,直接白忙活,人都麻了)

二、环境安装及测试——跟着官方文档走(三四天痛苦挣扎得到的血与泪的教训)

家人们谁懂啊,我这个愣头青一边在官网下载了最新版的mmdetection,一边看着旧版本的教程安装环境,结果可想而知——连续好几天电脑里红红的报错,屏幕前冷冷的心。经历过的报错大部分都是由于pytorch和mmdet以及mmengine和mmcv之间版本不兼容引起的,经过不断的搜索和试探,我才发现官方文档是唯一真神,跟着官方文档走就不会遇到报错了,最后成功跑了测试代码:
请添加图片描述


官方文档主要步骤(有所简略):

步骤 0. 从官方网站下载并安装 Miniconda
步骤 1. 创建并激活一个 conda 环境。

conda create --name openmmlab python=3.8 -y
conda activate openmmlab

步骤 2. 基于 PyTorch 官方说明安装 PyTorch。

在 GPU 平台上:

conda install pytorch torchvision -c pytorch

在 CPU 平台上:

conda install pytorch torchvision cpuonly -c pytorch

步骤 3. 使用 MIM 安装 MMEngine 和 MMCV。

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"
**注意:** 在 MMCV-v2.x 中,mmcv-full 改名为 mmcv,如果你想安装不包含 CUDA 算子精简版,可以通过 mim install "mmcv-lite>=2.0.0rc1" 来安装。

步骤 4. 安装 MMDetection。

方案 a:如果你开发并直接运行 mmdet,从源码安装它(我是采用这个方案,当然用git下载可能速度较慢,于是我在Github官网上下载了这个包然后解压到工作目录):

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
"-v" 指详细说明,或更多的输出
"-e" 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效,从而无需重新安装。

方案 b:如果你将 mmdet 作为依赖或第三方 Python 包,使用 MIM 安装:

mim install mmdet

然后开始验证安装

步骤 5. 下载配置文件和模型权重文件。

mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .

下载将需要几秒钟或更长时间,这取决于你的网络环境。完成后,你会在当前文件夹中发现两个文件 rtmdet_tiny_8xb32-300e_coco.py 和 rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth。

步骤 6. 推理验证。

方案 a:如果你通过源码安装的 MMDetection,那么直接运行以下命令进行验证(我采用这个方案,成功运行):

python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu

你会在当前文件夹中的 outputs/vis 文件夹中看到一个新的图像 demo.jpg,图像中包含有网络预测的检测框。

方案 b:如果你通过 MIM 安装的 MMDetection,那么可以打开你的 Python 解析器,复制并粘贴以下代码:

from mmdet.apis import init_detector, inference_detector

config_file = 'rtmdet_tiny_8xb32-300e_coco.py'
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'
model = init_detector(config_file, checkpoint_file, device='cpu')  # or device='cuda:0'
inference_detector(model, 'demo/demo.jpg')

你将会看到一个包含 DetDataSample 的列表,预测结果在 pred_instance 里,包含有检测框,类别和得分。


以上即是官方文档的安装和测试步骤,如果大家在之前看着别的教程操作然后遇到了一系列报错,我非常推荐各位直接看着官方文档重建一个环境进行安装和测试,往往来得更快(我大概只用了一个多小时就装成功了)。


总结

总结倒是没什么好总结的,前期看网上的旧版教程被各种报错搞的人都麻掉了,最后顺着官方文档的安装和测试步骤来操作才成功运行代码。其中很多问题都是由于pytorch、mmdet、mmengine、mmcv与python的版本兼容引起的,只能说,mmdetection真的挺难用的,之前跑YOLO要顺利蛮多的,接下来要开始

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值