您现在的位置是:首页 >技术交流 >Swin Transformer实现(复现)纯目标检测网站首页技术交流
Swin Transformer实现(复现)纯目标检测
1.环境配置(CUDA10.2,python3.6)
①创建新的用于Swin Transformer纯目标检测的虚拟环境
conda create --name swin python=3.6 -y
conda activate swin
可自行更改虚拟环境名字和python版本3.6-3.8都可
②安装torch,亲测使用的是torch1.5.0的版本,最好不要太高
torch1.5.0,torchvision 0.6.0
pip install torch==1.5.0 torchvision==0.6.0
③安装mmcv-full
有两种安装方式,都安装成功过,可自行选择安装
(1)
pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html
(2)
pip install -U openmim
mim install mmcv-full==1.7.0
④安装pycocotools
sudo apt-get install cython
get clone https://github.com/cocodataset/cocoapi
make
pip install pycocotools
如果安装不上,参考下面详细的安装方式
⑤安装apex(本人多次安装,多次出错,现已完全解决)
(1)自己的torch>=1.8.0,则安装下列方式安装
git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cuda_ext --cpp_ext
(2)自己的torch<1.8.0,则安装下列方式安装
git clone https://github.com/NVIDIA/apex.git
cd apex
git reset --hard 3fe10b5597ba14a748ebb271a6ab97c09c5701ac
python setup.py install --cuda_ext --cpp_ext
⑥安装MMDetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
以上是比较难安装的必须库,其他库缺什么装什么即可!!!
2.基本修改的参数
①修改类别名称
one:路径/mmdet/datasets/coco.py的第23行CLASSES
two:路径/mmdet/core/evaluation/class_names.py的第67行coco_classes
修改为自己数据集的类别
three:将evaluation = dict(interval=1, metric='bbox')改为
evaluation = dict(interval=1, metric='bbox',save_best='auto')
②修改类别数
路径/configs/base/models/mask_rcnn_swin_fpn.py中的num_classes,也有两处大概在第54行和73行,修改为自己数据集的类别数量
③修改数据集路径
路径/configs/base/datasets/coco_detection.py,第2行的data_root数据集根目录路径,第8行的img_scale可以根据需要修改,下面train、test、val数据集的具体路径ann_file根据自己数据集修改
第31行的samples_per_gpu表示batch size大小,太大会内存溢出
第32行的workers_per_gpu表示每个GPU对应线程数,2、4、6、8按需修改
④修改训练参数
路径/configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x(1x)-coco.py中:
第69行的max_epochs按需修改
第3行’…/base/datasets/coco_instance.py’修改为’…/base/datasets/coco_detection.py’
第69行的max_epochs按需修改
⑤修改日志参数
路径/configs/base/default_runtime.py中:
第1行interval=1表示每1个epoch保存一次权重信息
第4行interval=50表示每50次打印一次日志信息
第14行load_from表示加载训练好的权重路径,可以不设置,在训练时终端中给定
⑥注释掉掩码部分,因为我们实现的是纯目标检测
将mask_rcnn_swin_fpn.py文件中的67-79行内容,如下,注释掉,切记注意括号匹配
mask_roi_extractor=dict(
type='SingleRoIExtractor',
roi_layer=dict(type='RoIAlign', output_size=14, sampling_ratio=0),
out_channels=256,
featmap_strides=[4, 8, 16, 32]),
mask_head=dict(
type='FCNMaskHead',
num_convs=4,
in_channels=256,
conv_out_channels=256,
num_classes=80,
loss_mask=dict(
type='CrossEntropyLoss', use_mask=True, loss_weight=1.0))
3.训练测试命令
①训练命令
单卡训练命令:sudo python tools/train.py configs/swin/选择对应的配置文件,例如
sudo python tools/train.py configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py --options "classwise=True"
多卡训练命令:sudo tools/dist_train.sh configs/swin/选择对应的配置文件 GPU数量,例如
sudo tools/dist_train.sh configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py 6 --options "classwise=True"
上述的6代表GPU的个数,根据自己服务器配置更改
②测试命令
测试图片命令:sudo python demo/image_demo.py 图片路径 configs/swin/选择对应的配置文件 选择对应权重的路径,例如:
sudo python demo/image_demo.py demo/demo.jpg configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py mask_rcnn_swin_tiny_patch4_window7_1x.pth
测试视频命令:sudo python demo/video_demo.py 视频路径 configs/swin/选择对应的配置文件 选择对应权重的路径 --device cuda:0 --out 保存路径/保存名,例如:
sudo python demo/video_demo.py demo/CT.mp4 configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py mask_rcnn_swin_tiny_patch4_window7_1x.pth --device cuda:0 --out predict/CT.mp4
有疑问欢迎评论区交流!!!