最近在复现论文过程中使用了docker,感觉很方便,记录一下防止自己忘了,只做记录用
SA-BEV: Generating Semantic-Aware Bird's-Eye-View Feature for Multi-view 3D Object Detection
- 论文链接:https://arxiv.org/abs/2307.11477
- 代码链接:GitHub - mengtan00/SA-BEV: This is the implementation of the paper "SA-BEV: Generating Semantic-Aware Bird's-Eye-View Feature for Multi-view 3D Object Detection" (ICCV 2023)
本文的大致思路就是基于bevdepth引入了语义信息的监督,提高深度估计对于前景物体的准确性,具体可以看论文,几个模块设计还是挺有意思的,这里就不做介绍了
过程
github上面提供了dockerfile
由于感觉配conda环境繁琐,既然提供了docker就直接配docker吧,先build一个镜像
cd docker && docker build . -t [name]
name就是你的镜像的名字
在得到镜像之后,我们可以基于这个镜像创建container,在container下面运行我们的代码。
为了创建container,需要建立一个.sh文件,
.sh文件如下所示
xhost +local:docker
# sleep 1
# redis-cli <<EOF
# SELECT 4
# FLUSHDB
# EOF
sleep 1
docker stop [container's name]
docker rm [container's name]
docker run \
--gpus all \
--name=[container's name] \
--net=host \
-itd \
--shm-size="32g" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /cv/:/cv/ \
-v /home/westwell/Downloads:/home/westwell/Downloads \
-v /home/westwell/Documents:/home/westwell/Documents \
-v /etc/timezone:/etc/timezone \
-v /etc/localtime:/etc/localtime \
-e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video \
[image_name]
值得注意的是,我们这段脚本是为了在container里进行一些可视化操作,例如open3d可视化点云时不会跳出display相关的错误。(网上的其他教程也是对的,但是只是能保证运行)
就ok了
一些注意点
作者的dokerfile中有一些tensorRT的内容,(和落地相关?),可能会导致build不成功,因此我注释掉了,再build就成功了。也能够正常运行:
对于docker的一些个人理解
dockerfile相当于开发者对于自己的环境做了个文本表达,你可以用这个文件创建一个他的开发环境的image(镜像),然后为了能够运行这个镜像,需要基于镜像开启一个container(容器),一个image可以对应多个container(不能重名!),然后你在container里运行代码就ok了,当然也可以在里面装conda扩展之类的,新增环境等等。。。