【Linux】记录使用Docker容器跑通2021CVPR小样本目标检测DCNet,使用VScode调试

记录使用Docker容器跑通2021CVPR小样本目标检测DCNet

一、拉取镜像

  1. 执行docker pull gouchicao/maskrcnn-benchmark拉取镜像,等待下载完毕
  2. 执行docker images 可以查看有哪些镜像
  3. 执行如下进行实例化容器,其中/media/E_4TB/YL/datasets/voc/media/E_4TB/YL/FSOD/code/DCNet分别为voc数据目录(该目录下含VOC2007和VOC2012等文件夹)和代码的根目录,-v是目录挂载,-p是将服务器4000端口映射到容器22端口, --shm-size 16G 为允许的内存大小
    docker run --gpus all --shm-size 16G  -v /media/E_4TB/YL/datasets/voc:/workspace/data/pascal_voc -v /media/E_4TB/YL/FSOD/code/DCNet:/workspace/code/Meta-FSOD -it -d -p 4000:22 gouchicao/maskrcnn-benchmark bash
    

    返回如下
    在这里插入图片描述

  4. 执行docker exec -it 36c bash,36c为容器id前几位
  5. 设置密码,安装vim等
    passwd			# 更改密码
    apt-get update
    apt-get install openssh-server	# 安装ssh
    apt-get install openssh-client	# 安装ssh
    apt-get install vim				# 安装vim
    vim /etc/ssh/sshd_config		# 将PermitRootLogin去掉注释 并将prohibit-password改为yes,如后面图所示
    /etc/init.d/ssh restart	# 重新启动ssh
    systemctl enable ssh 设置自启动
    

    更改sshd_config如下图
    在这里插入图片描述
    现在就可以通过ssh root@192.168.0.202 -p 4000 访问容器了,其中ip改为服务器ip

二、vscode调试

2.1 配置

  1. 安装远程控制插件
    在这里插入图片描述

  2. 连接
    ctrl+shift+p
    输入remote-ssh,选Add New SSH Host
    在这里插入图片描述

  3. 填写远程服务器用户名及ip地址, 如ssh intleo21@192.168.0.202 -p 4000

  4. 选择配置保存位置,第一个就可以
    在这里插入图片描述

  5. 创建连接
    在这里插入图片描述

  6. 新弹出一个界面,选择目标主机系统类型
    在这里插入图片描述

  7. 等待远程服务器安装完,打开远程文件夹目录/workspace/code/META-FSOD

  8. 安装python插件
    在这里插入图片描述

  9. 选择远程环境
    在这里插入图片描述

  10. 打开终端
    在这里插入图片描述
    下面弹出如下,并自动激活环境
    在这里插入图片描述

2.2 安装DCN

2.2.1 安装cityscapesScripts

  1. cd /
  2. git clone https://github.com/mcordts/cityscapesScripts.git
  3. cd cityscapesScripts/
  4. vi setup.py将这一块改成下图,源代码中没有encoding=“utf-8”
    在这里插入图片描述
  5. python setup.py build_ext install

2.2.2 安装DCNet

  1. cd /workspace/code/Meta-FSOD
  2. 如有,执行 rm -rf build/删除build文件夹
  3. 执行 python setup.py build develop 安装
  4. 执行ln -s /workspace/data/pascal_voc datasets/voc链接存储
  5. 执行bash tools/fewshot_exp/datasets/init_fs_dataset_standard.sh

2.2.3 安装其它依赖

pip install scikit-image

2.3 运行

按照README.md进行跑就行了,但官方的运行方案会存在路径问题
可参考以下

  1. cd /workspace/code/Meta-FSOD
  2. vi experiments/DRDbash base_train.sh
    更改为如下
#!/bin/bash
# ROOT=../..
# export PYTHONPATH=$ROOT:$PYTHONPATH
export CUDA_VISIBLE_DEVICES=0,1
export NGPUS=2
SPLIT=(1 2 3)
for split in ${SPLIT[*]}
do
  configfile=experiments/DRD/configs/base/e2e_voc_split${split}_base.yaml
  python -m torch.distributed.launch --nproc_per_node=$NGPUS --master_port 29512 tools/train_net.py --config-file ${configfile} 2>&1 | tee logs/log_${split}_basetrain.txt 
  mv model_final.pth model_voc_split${split}_base.pth
  mv inference/voc_2007_test_split${split}_base/result.txt fs_exp/result_split${split}_base.txt
  rm last_checkpoint
  python tools/fewshot_exp/trans_voc_pretrained.py ${split}
done
  1. 执行bash experiments/DRD/base_train.sh训练
  2. 如有警告uint8已弃用, 将ctrl+shift+rtorch.uint8全局替换为torch.bool
    正在运行界面
    在这里插入图片描述

其它

将容器生成为镜像,下次直接执行生成的镜像,34c为容器id
docker commit 34e dcnet

源码分析记录

更改了GeneralizedRCNN类,即建立总模型的类

  • build_backbone函数调用build_resnet_fpn_backbone函数再调了ResNet类,ResNet更改了forward以及调用的stem_module中调用的StemWithFixedBatchNorm调用的BaseStem更改

版权声明:本文为CSDN博主「洪城布衣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39165617/article/details/121799374

洪城布衣

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

yolov5训练数据集划分

yolov5训练数据集划分 按照默认8:1:1划分训练集,测试集,验证集。 txt文件出现在imageset文件夹。 import os import randomtrainval_pe

Pytorch—万字入门SSD物体检测

前言 由于初入物体检测领域,我在学习SSD模型的时候遇到了很多的困难。一部分困难在于相关概念不清楚,专业词汇不知其意,相关文章不知所云;另一部分困难在于网上大部分文章要么只是简要介绍了SS