复现 MonoEF:Monocular 3D Object Detection: An Extrinsic Parameter Free Approach

复现 MonoEF:Monocular 3D Object Detection: An Extrinsic Parameter Free Approach
时间:2022年7月13日

代码连接:
https://github.com/ZhouYunsong-SJTU/MonoEF

1.安装环境

环境:环境与代码中要求的环境一样。

Ubuntu 16.04
Python 3.7
Pytorch 1.3.1
CUDA 10.0

这里pytorch版本1.3.1为什么用这么低的?原因:因为代码中用到了DCN模块,DCN模块需要这么低的pytorch版本。如果要用高版本的pytorch,DCN模块要自己找最新的,然后安装新版的。

2.kitti数据集

kitti数据集的划分,及ImageSets中数据集的划分,可以看我的另一篇博客“kitti数据集划分”。

kitti
│──training
│    ├──calib 
│    ├──label_2 
│    ├──image_2
│    └──ImageSets
└──testing
     ├──calib 
     ├──image_2
     └──ImageSets

3.下载代码+编译setup.py

1.下载好MonoEF代码后,进入到MonoEF路径下,再下载SMOKE代码!!SMOKE代码连接https://github.com/lzccccc/SMOKE
估计作者的工作是基于SMOKE的,所以要在自己的代码中还要再下载别人SMOKE的代码。

路径大致如下:
--monoEF
	--configs
	--datasets
	--dcn
	--smoke
	--SMOKE
	--tools
	--make.sh
	--setup.py
	--test.sh
	--train.sh

注意:smoke和SMOKE不要弄混了,smoke文件夹代码是MonoEF自带的。而SMOKE是从https://github.com/lzccccc/SMOKE下载的,SMOKE是另一个人的工作。
2.进入SMOKE,执行

python setup.py build develop

3.回到MonoEF,执行

python setup.py build develop

4.进入MonoEF/dcn/DCNv2_latest,执行

python setup.py install develop

否则会报错:

no module  named _ext

所以是运行了3个不同的setup.py,SMOKE的setup.py,MonoEF的setup.py, DCN的setup.py

4.下载SMOKE的pretrained weights

如果不下载的SMOKE的与训练权重,会报错:

FileNotFoundError: [Errno 2] No such file or directory: './SMOKE/pre_trained/model_final.pth'

权重文件在SMOKE官方代码中提供了连接,不过是google云盘的连接,大小223.43MB。下载好后放在./SMOKE/pre_trained/model_final.pth路径下即可。注意路径名字,别弄错名字了。
为了防止有的学者访问不了google云盘,我在baidu云盘创建了一个备份,如下:

链接:https://pan.baidu.com/s/1ZeaE462nBsiHtdAgFwMvUA 
提取码:cumt

5.环境配置

MonoEF和SMOKE官方代码竟然都没有requirement.txt,真离谱!!导致运行代码,一会一个报错:no module named XXX !!!
我这里列举的可能不全,少哪个包,安哪个包!

no module  named cv2
no module  named skimage
no module  named PIL
no module  named tqdm
cannot import name  PILLOW_VERSION  from  PIL

着重说一下pillow包,pillow版本太高会报错,pillow安6.1版就好了。
解决方法:

pip install pillow==6.1
pip install opencv-python
pip install scikit-image
pip install tqdm

6.修改代码

MonoEF/tools/plain_train_net.py 中的第6行代码:

sys.path.append('/media/lion/Seagate_Backup/SenseTimeResearch/pod_ad/Smoke_sequence_2/SMOKE/')

修改为自己的SMOKE路径即可。注意:不能用相对路径只能用绝对路径!!!
例如: 我的SMOKE路径是:/root/MonoEF-main/SMOKE,则修改为:

sys.path.append('/root/MonoEF-main/SMOKE')

再次提醒,不能用相对路径,只能用绝对路径。

如果不修改这行代码,会报错,报错内容如下:

Traceback (most recent call last):
  File "tools/plain_train_net.py", line 9, in <module>
    from smoke.config import cfg
ModuleNotFoundError: No module named 'smoke'

6.训练与检测

单个GPU训练:

python tools/plain_train_net.py --config-file "configs/smoke_gn_vector.yaml"

几秒就训练完了。真奇怪。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值