刚搞明白了分类,又进来了检测这个大坑里。
CV第一步:从环境搭建开始!
环境总览:
Windows10/11+ Microsoft Visual Studio2019社区版
python3.7+pytorch1.8.1+torchvision0.9.1+cuda10.1
mmcv1.3.8+mmdet2.11.0
(1)安装 Visual Studio
需要用到 C++ 安装编译库,所以需要安装 Microsoft Visual Studio,版本的话比较常见的是2019,最新的2022版本应该也可以,安装很简单。
下载地址:Microsoft Visual Studio官方下载地址
安装时记住安装位置,然后在 系统变量path 中添加VS2019的cl.exe文件路径:
**:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.****\bin\Hostx86\x64
(星号的位置根据自己的安装情况进行替换 ),然后上移到最顶端,一路确定之后退出,关机重启。
(2)工程项目文件准备
在swin transformer官方github仓库下载或克隆代码工程文件,名字就命名为 Swin-Transformer-Object-Detection 就可以啦,然后在这个文件夹下新建一个命名为 checkpoints 的文件夹,将官方公开的那些预训练模型放进去,整体就是这个样子的。
老规矩,做一个新项目建一个新的虚拟环境。
在 Anaconda Powershell Prompt 中键入:
conda create -n swinmm python=3.7 -y
conda activate swinmm
PS: swinmm为环境名称,可自行更改!!!
参考上一篇基于win10复现swin-transformer图像分类源码的安装和运行代码经验,接上一步键入:
conda install pytorch==1.8.1 torchvision==0.9.1 cudatoolkit=10.1 -c pytorch
三种方式可以选择,自行尝试哪一种可以安装成功,这里是个大坑!
(1)自动安装(不稳定不推荐)
pip install openmim
mim install mmdet
(2)手动安装(强烈推荐!!!)
pip install mmcv-full==1.3.8 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
PS:
one:命令中的 cu101 和 torch1.8.0 为需要注意的地方,不是按照上述步骤的话自行更改,这里是1.8.0而不是1.8.1的原因官方有说明;
two:具体的 cuda 和 pytorch 版本对应和安装命令可以在https://mmcv.readthedocs.io/en/latest/get_started/installation.html中查看;
three:这里指定1.3.8版本是因为一开始我第二种方法没有成功,然后用的第三种方法从源码安装,结果装的 mmcv 是最新版本1.4.6,然后代码运行是会报错,提示:
AssertionError: MMCV==1.4.6 is used but incompatible. Please install mmcv>=1.2.4, <=1.4.0.
所以mmcv的版本应该在1.2.4到1.4.0之间选择!
(3)从源码安装
使用命令:
git clone https://github.com/open-mmlab/mmcv.git
或者在该 github 仓库将 code 打包下载然后解压,然后在 Anaconda Powershell Prompt 中使用 cd 命令切换到该根目录下,然后:
#build
python setup.py build_ext
# install
python setup.py develop
继续使用 cd 命令将路径切换到第一步准备的 Swin-Transformer-Object-Detection 工程文件路径下,比如我的就是:
cd E:/
cd Swin-Transformer-Object-Detection
继续键入:
pip install -r requirements.txt
pip install -r requirements/docs.txt
python setup.py develop
如果训练 swin 的话还需要用到一个叫 apex 的东西,安装步骤同样参考上一篇基于win10复现swin-transformer图像分类源码中的第5步安装。
文字步骤如下,详细见原博客:
在 github 下载源码https://github.com/NVIDIA/apex 到本地文件夹(安装步骤第一步网盘中也有相关文件资源);
在命令行中切换到 apex 所在文件夹;
输入命令: python setup.py install 等待安装完成即可。
在 Pycharm 中打开 Swin-Transformer-Object-Detection 工程文件,将提示缺少的一些包给装上(第5步应该装的差不多了),然后新建 demo.py 文件,将以下代码复制进去:
from mmdet.apis import init_detector, inference_detector, show_result_pyplot
import cv2
# configs的路径可以按照这个寻找
config_file = 'E:/Swin-Transformer-Object-Detection/configs/swin/cascade_mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_3x_coco.py'
# 这个就是权重文件,也就是第一步环境准备中新建的checkpoints文件夹
checkpoint_file = 'E:/Swin-Transformer-Object-Detection/checkpoints/cascade_mask_rcnn_swin_tiny_patch4_window7.pth'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, checkpoint_file, device=device)
# inference the demo image
# 测试图片在官方工程文件的demo文件夹下
image = 'E:/Swin-Transformer-Object-Detection/demo/demo.jpg'
result = inference_detector(model, image)
show_result_pyplot(model, image, result, score_thr=0.3)
没有问题的话运行结果如下: