参考来源: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. 推荐一个从高中就开始自学IT的大佬
  2. Jedis工具类(含分布式锁的调用和释放)
  3. 网页上加在线客服代码QQ,MSN,skype,goolge TALK,雅虎通,贸易通,淘宝旺旺
  4. wordcount代码_通过腾讯云 Serverless Regsitry 快速开发与部署一个 WordCount 实例
  5. python double free_python错误:double free或corruption(out):0x0000000001e4b030
  6. 文件管理器android开源,寻找优秀的安卓文件管理器 五款文件管理器大评比
  7. React.js组件化开发第一步(框架搭建)
  8. 谷歌浏览器访问网站无法加载验证码图片问题
  9. LoadRunner脚本录制
  10. Aborting commit due to empty commit message.
  11. ae 渲染 计算机内存不足,AE内存不足怎么办? After Effects内存不足【解决方法】...
  12. 刷百度权重的方法!!刷百度权重不为人知的内幕!慎用!
  13. 数据中台之血缘篇:Atlas 详解
  14. Linux如何检查是否支持SNI,WDCP下的纯Nginx支持多域名ssl证书(TLS SNI support disabled)解决方案...
  15. Python语法-1-变量、输出、List列表、tuple元组、条件判断和循环等重要基础知识
  16. css3 text-shadow 浮雕、镂空、荧光效果
  17. 解读温度传感器应用于物联网+冷链行业
  18. C++ RALL机制详解
  19. Vissim与matlab联调环境配置
  20. dash dock安装 to_Dash to Dock 安装配置(图文教程)

热门文章

  1. 【debug】EACCES: permission denied, unlink
  2. The Journal of Neuroscience: 珠心算训练有助于提高儿童的视觉空间工作记忆
  3. 如何快速编写一个汇编软件
  4. 自学编程的8个坑,你踩了几个?第七个坑87%都踩过!
  5. 论文笔记 —— Role Discovery in Networks
  6. WebStrom配置好git后文件颜色代表的含义
  7. 新浪微博注册(elenium Python 自动化)
  8. PostgreSQL 常用函数
  9. JZOJ3987. Tree
  10. 计算机原理加法指令流程图,加法器电路设计方案汇总(八款模拟电路设计原理详解)...