参考来源:pointRCNN原理与复现_github_37671026的博客-CSDN博客pointRCNN原理与复现:整体思路:https://zhuanlan.zhihu.com/p/71564244原理:https://blog.csdn.net/taifengzikai/article/details/96840993https://zhuanlan.zhihu.com/p/97716398涉及到的了解知识图像中的掩模mask是什么: https://blog.csdn.net/bitcarmanlee/article/details/79132017弱监督学习: htthttps://blog.csdn.net/github_37671026/article/details/108531862

云服务器: 没有显卡用,先用云服务器跑(2080ti)

1. 配置基本环境

这里我选的云服务器镜像(这个可以直接运行,不需要改代码)

其他镜像也可以,只不过需要改代码。具体参见以下链接

PointPillars与PointRCNN编译运行以及结果可视化(小白探索之路,清晰易懂)_lixushi的博客-CSDN博客_pointpillars可视化https://blog.csdn.net/lixushi/article/details/118728278

需要注意的是环境问题,python 3.6(千万不能高于3.6)pytorch==1.0.0 , 因为没有直接合适的镜像,所有需要手动搞1.0.0的pytorch

pytorch安装命令:

conda install pytorch==1.0.0 torchvision==0.2.1 cuda100 -c pytorch

然后,那一堆包可以搞个requirements.txt, 直接一行命令解决即可

pip install -r requirements.txt

上面弄完了包,还有三个依赖pointnet2,iou3d,roipool3d要build(这块我在实验室机子上没搞好,老是报错Fatal error: cuda.h, No such file or directory,好多人用都把环境搞费了)

sh build_and_install.sh

然后还有个问题,有的镜像会报错gcc版本问题。我这里服务器的gcc版本是7,但是会有个报错是不支持gcc 6以上,因此需要切换gcc版本到5,这个可以查看下方链接解决

gcc/g++ 多版本间切换 - 知乎1. 查看 gcc/g++ 版本查看当前版本gcc -v g++ -v查看系统已有版本ls /usr/bin/gcc* ls /usr/bin/g++*若没有需要的版本,先进行安装,例如: sudo apt install gcc-4.9 sudo apt install g++-4.9 # 安装 gcc-7 / g+…https://zhuanlan.zhihu.com/p/261001751由于我用的是云服务器,所有数据和代码已经先放到云盘上了,所以到这里,第一步配置环境就结束了。

2. 跑代码

跑代码操作按照下面博客:如何跑通PointRcnn_三烽的博客-CSDN博客点云目标检测(一)——PointRcnn复现环境要求数据准备程序准备组织数据程序运行Test Model可能出现的问题总结最近在进行点云目标检测方面论文工作,对于PointRcnn虽然readme已经写得很清楚了,但是复现过程中依然会遇到很多问题,以下是我对与readme的重述和对整个程序运行流程的一些说明。论文链接:PointRCNN papercode:PointRCNN code环境要求Linux (tested on Ubuntu 14.04/16.04)Python 3.6+.https://blog.csdn.net/weixin_44657714/article/details/120041535

 准备数据没有问题

⭐训练的时候出现问题

 yaml的版本兼容导致代码问题

解决方法:TypeError: load() missing 1 required positional argument: ‘Loader‘

找到 lib目录下的config.py文件下,找到这个代码,将函数中的yaml.load(f)改为yaml.safe_load(f)即可。

 

3. 显卡不行,跑不动代码(2080跑不动)

2021-11-29 06:32:21,920   INFO  **********************Start training**********************
epochs:   0%|                                                                                                                                                       | 0/200 [00:07<?, ?it/s]
train:   0%|                                                                                                                                                        | 0/204 [00:00<?, ?it/sTraceback (most recent call last):                                                                                                                                                           File "train_rcnn.py", line 250, in <module>lr_scheduler_each_iter=(cfg.TRAIN.OPTIMIZER == 'adam_onecycle')File "/mnt/PointRCNN/tools/../tools/train_utils/train_utils.py", line 199, in trainloss, tb_dict, disp_dict = self._train_it(batch)File "/mnt/PointRCNN/tools/../tools/train_utils/train_utils.py", line 132, in _train_itloss, tb_dict, disp_dict = self.model_fn(self.model, batch)File "/mnt/PointRCNN/tools/../lib/net/train_functions.py", line 35, in model_fnret_dict = model(input_data)File "/root/miniconda3/envs/myconda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__result = self.forward(*input, **kwargs)File "/mnt/PointRCNN/tools/../lib/net/point_rcnn.py", line 33, in forwardrpn_output = self.rpn(input_data)File "/root/miniconda3/envs/myconda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__result = self.forward(*input, **kwargs)File "/mnt/PointRCNN/tools/../lib/net/rpn.py", line 74, in forwardbackbone_xyz, backbone_features = self.backbone_net(pts_input)  # (B, N, 3), (B, C, N)File "/root/miniconda3/envs/myconda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__result = self.forward(*input, **kwargs)File "/mnt/PointRCNN/tools/../lib/net/pointnet2_msg.py", line 67, in forwardl_xyz[i - 1], l_xyz[i], l_features[i - 1], l_features[i]File "/root/miniconda3/envs/myconda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__result = self.forward(*input, **kwargs)File "/mnt/PointRCNN/tools/../pointnet2_lib/pointnet2/pointnet2_modules.py", line 144, in forwardinterpolated_feats = pointnet2_utils.three_interpolate(known_feats, idx, weight)File "/mnt/PointRCNN/tools/../pointnet2_lib/pointnet2/pointnet2_utils.py", line 128, in forwardoutput = torch.cuda.FloatTensor(B, c, n)
RuntimeError: CUDA out of memory. Tried to allocate 256.00 MiB (GPU 0; 7.80 GiB total capacity; 6.76 GiB already allocated; 249.12 MiB free; 32.81 MiB cached)

解决:搞一块2080ti显卡就能跑了,train是200epoch, 一个epoch要1分40秒,全跑完需要约5个半到6个小时。

结果可视化

pointRCNN 结果可视化_tiatiatiatia的博客-CSDN博客_pointrcnn可视化

首先下载作者训练好的权重PointRCNN.pth, 将PointRCNN.pth文件放在tools文件夹下

python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt PointRCNN.pth --batch_size 1 --eval_mode rcnn --set RPN.LOC_XZ_FINE False

运行之后,查看rcnn文件夹会eval里面会出现pred的预测文件,可以后续做可视化生成预测框用

然后,在创建软链接方面又出问题了

创建软连接要注意的是,文件不能在同一个文件夹下,所以git下来的kitti_object_vis代码不能和KITTI代码放在同一文件夹下,否则会报错function doesn't implement。

 保存好位置后,cd 到 kitti_object_vis目录的data文件夹下,此时刚下好的文件夹里应该有个object文件,将这个文件夹删除,在这里打开终端,创建软链接

ln -s ../PointRCNN/data/KITTI/object object

然后再切换回上一个目录,进行剩余操作即可。(这里注意终端按回车键可能报错mayavi无法连接engine,我在云服务器中这几个命令都没法按回车,在自己机子的ubuntu只可以在第一个命令上按回车切换图片)

命令分为几种:
(1) 只显示LiDAR 仅真值

cd kitti_object_vis
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis
# 我的环境里只有这个可以终端按回车键进行下一张图

(2) 显示LiDAR和image 仅真值

python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes
# 这个终端按回车键可能报错mayavi无法连接上engine

(3) 显示特定某张图的LiDAR和image 仅真值

python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes --ind 100
# ind 100表示就是图像编号为000100.txt

(4) 显示pointRCNN预测值+真值对比
在以上所有命令后面加 -p
例:

python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --s

注:红色是预测框,绿色是真值框

云服务器复现PointRCNN代码踩坑总结相关推荐

  1. 云服务器iss列表,【踩坑】发布ASP.NET网站到本地IIS和云服务器

    疑问:如何在服务器上发布一个网站? 申请了某某云的1元服务器域名,然而并不知道有什么乱用.总所周知,服务器一般都是用来发布网站的,然后我就陷入了一个很大的疑问中:如何在服务器上发布一个网站? 想起之前 ...

  2. 【STM32+机智云】机智云手机APP点灯实验踩坑记录

    [STM32+机智云]机智云手机APP点灯实验踩坑记录 一.实验背景 因为项目开发需要用到云平台,所以开始学习机智云平台,听说机智云比较容易入门,还有手机APP.因此开始了踩坑之旅,一切的一切开始于一 ...

  3. 阿里云部署Tiny Tiny RSS踩坑笔记

    阿里云部署Tiny Tiny RSS踩坑笔记 前言 入坑了RSS,之前的配置是阿里云部署RSSHub,配合Inoreader进行文章阅读,详情见RSS入坑指南.阿里云部署RSSHub踩坑笔记.在202 ...

  4. 单服务器部署CTFd+whale踩坑

    单服务器部署CTFd+whale踩坑 环境: os: ubuntu16 Docker: Version: 20.10.7 Docker-compose: version v2.12.1 参考: htt ...

  5. 云服务器一直显示启动中,云服务器一直启动代码

    云服务器一直启动代码 内容精选 换一换 获取登录密码使用公共镜像创建的云服务器,默认已经安装一键式重置密码插件.如果您忘记密码或密码过期,可以通过重置密码功能重新设置云服务器登录密码.重置密码使用公共 ...

  6. 服务器测速文件,云服务器测速代码

    云服务器测速代码 内容精选 换一换 基于云服务器访问安全的考虑,云服务器的访问密钥需定期更换,有时需要禁用SSH密码登录方式.本节操作介绍禁用SSH密码方式连接云服务器的操作步骤.该设置方法仅对SSH ...

  7. 西安交通大学915考研--编程题Java代码踩坑(2020年真题)

    西安交通大学915考研–编程题Java代码踩坑(2020年真题) 目录 西安交通大学915考研--编程题Java代码踩坑(2020年真题) 2020.1--寻找方程组的解 2020.2--几组数中筛选 ...

  8. 最详细JMX远程连接服务器Zookeeper失败问题踩坑和总结

    最详细JMX远程连接服务器Zookeeper失败问题踩坑和总结 环境:Ubuntu18.04服务器 Zookeeper3.4.6版本 伪分布式 这里不从零介绍JMX配置的基本教程了,那些随便搜一下都有 ...

  9. Android 阿里云 视频直播安全下载踩坑实录

    最近项目里面集成了阿里云直播的内容,其中需要相应的下载视频的功能,遇到了一些问题,在这里贴出来跟大家分享一下, 我在项目中使用的是基于阿里云高级播放器3.4.8的sdk,具体怎么导入sdk ,请移步官 ...

  10. 在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰

    推荐使用镜像安装Cent OS系统,或者在纯净安装完成之后在完成Apache+MySQL+PHP的时候不要每个单独安装,因为这样会出一些三者之间版本不配的问题,网上各种说法都有,查起来也非常困难,版本 ...

最新文章

  1. 如何在微服务架构下进行数据设计?
  2. eclipse一直卡住,出现 “android sdk content loader 0%” 卡住的错误分析及解决方法...
  3. linux小波识别算法,人脸识别相关技术之小波变换
  4. 韩顺平php视频笔记38-41 php数据类型(部分)
  5. sql 获取一个周的周一和周日
  6. [转载] C#面向对象设计模式纵横谈——11. Facede外观模式
  7. Java多线程面试知识点汇总(超详细总结)
  8. android stagefright框架
  9. 打开计算机显示远程控制,win7系统远程协助怎么打开?开启远程协助功能教程...
  10. 邮件作为证据如何提交_【欣法官在线】收到起诉状副本,我该如何向法院提交证据?...
  11. 谷歌发现利用零日漏洞的攻击、黑客通过漏洞入侵红十字会|2月17日全球网络安全热点
  12. Axure-中继器的使用
  13. windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
  14. OpenCV技巧篇——多目标视觉定位(以飞镖定位为例)
  15. 够迫履门夹钾灼敛墒套谮姑韩立对墨大夫一年后是否真的信守承诺,很是怀疑,若真是像对方所说
  16. vbox 虚拟机添加usb
  17. hduoj 2034
  18. 倡导国稻种芯·中国水稻节 万祥军:稻作文化中国农民丰收节
  19. 关于虚拟按键和状态栏控制
  20. 2015光伏行业最全数据解析2016展望

热门文章

  1. 矩阵快速幂分析+POJ3070
  2. 软件及系统开发项目可行性分析报告-样例
  3. 64位WIN7系统如何使用汇编软件并运行汇编程序
  4. 大工计算机英语考试,大工15春《专业英语(计算机英语)》在线测试123
  5. shopex mysql索引_mysql版本太高导致shopex4.8.5无法安装
  6. 做知识付费,这十大知识付费平台一定要知道
  7. VirtualBox虚拟机全屏显示
  8. Recovery流程梳理
  9. Android 恢复出厂设置(recovery)
  10. Python 中文数字对照表 输入一个数字,转换成中文数字。比如:1234567890 -> 壹贰叁肆伍陆柒捌玖零。【简单易懂,代码可以直接运行】