使用vscode+Docker快速复现CenterNet环境

记录一下在如何在vscode中使用docker

        最近在准备毕业论文,涉及车辆的识别与跟踪,由于不想用烂大街的yolo+deepsort,打算尝试一下CenterTrack。不同于y+d的先检测再跟踪,这是一种基于CenterNet(一种anchor-free的目标检测算法)的同时进行检测与跟踪的算法。

        说回正题,该算法需要cuda9.2以及DCN这种怪东西,issue里也有很多人抱怨总是出错。由于电脑里已装了的cuda11.5,我开始尝试进行多cuda版本的安装尝试,反正是失败了,环境还崩掉了,系统一直再给我发错误报告,检查到nvidia驱动都坏了,遂转而想要通过Docker去构造一个合适的环境。

        Docker是什么以及vscode是什么这里就不在赘述了,具体安装方法站内也有,这里只是大体介绍一下如何高效地在本机上使用使用vscode+docker快速复现CenterNet环境:

步骤一:Docker相关准备

在Dockerhub上找到相应镜像并拉取:

docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04

电脑终端中输入下面的代码段创建容器,其中主机文件路径指项目文件夹的路径,需要是绝对路径容器内文件路径随意,不存在也会创建。需要注意的是,这两个路径都是要以 / 开头的。

docker run -it -v 主机内文件夹路径:容器内文件夹路径 --name 容器名称  镜像名称:tag /bin/bash 

至此,我们已经成功地将容器挂载在项目文件下。

步骤二:vscode相关准备

1.准备工作

vscode中安装DockerRemote-Container两个模块

2.使用VScode启动镜像和容器

 在VScode中使用F1快捷键,输入Remote-Containers

使用vscode+Docker快速复现CenterNet环境_第1张图片

选择已经在运行的容器

使用vscode+Docker快速复现CenterNet环境_第2张图片

接着在打开文件夹中找到挂载的项目文件夹

使用vscode+Docker快速复现CenterNet环境_第3张图片

然后就可以愉快地工作啦 

 步骤三:复现

下载miniconda,并使用bash安装

创建新环境并激活

conda create --name CenterTrack python=3.6
conda activate CenterTrack

参考另一位博主,使用下述代码段安装torch及相关工具

pip install torch==1.4.0+cu100 torchvision==0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html
pip install cython; pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'


pip install -r requirements.txt

#编译DCNv2


cd $CenterTrack_ROOT/src/lib/model/networks/
git clone https://github.com/CharlesShang/DCNv2/
cd DCNv2
./make.sh

#ImportError: libGL.so.1: cannot open shared object file: No such file or directory


sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev


#ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

apt-get update
apt-get install libgtk2.0-dev

 最后一步,/src/demo.py中进行如下修改:

注释掉下图105-107行代码 

 if cv2.waitKey(1) == 27:
         save_and_exit(opt, out, results, out_name)
         return 

使用vscode+Docker快速复现CenterNet环境_第4张图片

注释掉83行代码

cv2.imshow('input', img)

使用vscode+Docker快速复现CenterNet环境_第5张图片

 

在fourcc = cv2.VideoWriter_fourcc(*'H264')下增加以下代码,来避免opencv-python不能输出H264格式视频

fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')

 

使用vscode+Docker快速复现CenterNet环境_第6张图片

#最后推理

cd src

python demo.py tracking --load_model ../coco_tracking.pth --demo ../video.mp4 --save_video --video_h 1080 --video_w 1920

         导入视频,最后结果如下,效果还是很好的,可以看到在车辆比较密集的情况下仍然具有相当不错的识别率,拥挤状况下anchor-free的优势还是很明显的,由于不需要nms所以推理速度快,精度也高。铆框中间的小箭头应该是相较于上一帧的方向,与车辆检测是同步生成的。

使用vscode+Docker快速复现CenterNet环境_第7张图片

 最后许个愿,希望自己能冲冲优秀毕业论文,加油!!!

你可能感兴趣的:(docker,vscode,容器,python)