位置: IT常识 - 正文

点云3D目标检测之——尝试SFD代码跑通(超详细!!)(点云目标检测数据集)

编辑:rootadmin
点云3D目标检测之——尝试SFD代码跑通(超详细!!) 前言

推荐整理分享点云3D目标检测之——尝试SFD代码跑通(超详细!!)(点云目标检测数据集),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:点云3D目标检测,点云3D目标检测,点云目标检测数据集,点云3D目标检测,三维点云的目标检测方法,点云3D目标检测,点云3D目标检测,点云目标检测数据集,内容如对您有帮助,希望把文章链接给更多的朋友!

到目前为止还没跑通,但是bug实在太多了,我的每一步都有错,如果不记录下来又会有遗漏,(肯定已经遗漏了很多),在这里把能想起来的都记录一下以便不时之需。另外,本人深度学习小白,一上来跑这么难的代码我大概是脑子进水了,如果有看到的话,十分欢迎且需要加微信跟我详细交流。以下纯属我个人理解,肯定有误差,仅为个人记录,请酌情参考。 9.29更新:能跑了能跑了,喜大普奔!! 10.1更新:evaluation出结果啦,准确率还真挺高!! 10.21更新:发现了之前几个疑惑的点的原因(写在最后) 10.25更新:补齐SFD方法简介。

SFD简介

Sparse Fuse Dense: Towards High Quality 3D Detection with Depth Completion. CVPR 2022. 在kitti数据集上目前排名前三,文章通俗易懂(也可能是我没看懂) (这部分后面再补吧) 文章贡献:

3D-GAF:融合点云和伪点云的网络SynAugment:针对SFD的数据增强方法CPConv:伪点云的特征提取器

这里有一个疑惑是: CPConv在3D-GAF前使用,但是作者却放在了最后一位介绍它,按逻辑来讲,放在后面的应该是最不重要的,但是3D-GAF反而是里面最难理解的。 个人理解: 最主要的创新在于——之前的方法都是FOV与BEV的2D融合,而本方法将2D信息通过深度转化为3D,使得在每个ROI中提取伪点云和原始点云的3D特征(在3D网格内),再按权重融合、reshanpe、FC。(这可能就是3D-GAF放在第一位的原因吧)。但是我还是没能理解CPConv,主要是维度变换好凌乱,一会儿N个一会儿K个,感觉还是需要输出看维度。 最后一个疑惑是: 从实验结果看,没有加这些操作的准确率就很高,因为本身的baseline准确率就很高,但并不知道baseline这么高的原因是?

代码调试

SFD:Github官方源码

环境配置

作者提供了两种方式:Voxel-R-CNN或者OpenPCDet,此处使用了后者。OpenPCDet安装步骤提供在如下链接,特别要提醒的是该文章中sudo apt-get install nvidia-cuda-toolkit命令千万千万不要在系统中输入,否则会导致你cuda,cudnn全部重装!!!其余按照步骤来就好。另外,文章中提到mayavi包的安装会出问题,其实我没有安装mayavi包的时候,OPenPDCet就能正常运行。但是SFD还是需要安装mayavi,终究还是逃不过。由于各种原因,我的Python是3.8版本,如果你也是python3.8的话,可参考链接安装mayavi包,最终需要在图形化界面运行以下命令(如:远程桌面连接或者vnc,反正不是ssh),否则会报错。

python demo.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --ckpt pv_rcnn_8369.pth --data_path data/kitti/training/velodyne/000008.bin组织数据集

接着就按github上作者提供的路径下载数据集和相关文件。需要注意的是,这里的数据有70G+,所以要事先想好你是不是要挂载目录什么的,不要像我一样傻乎乎弄了半天发现服务器存储空间不够了(我真是哭死,也没人告诉我啊)。

问题报错

以下问题当你出错了再来查看,参考知乎连接包括:spconv包出错和单卡环境运行问题。

RunTimeError问题

原因: 因为服务器上只有两个gpu且不知道好不好用,总之按作者提供的方式运行就会报各种cuda错误,所以做出如下修改(因为时间过去有点久了,所以应该不全)。

首先,不使用文章中的命令,在终端中输入以下命令测试:

python train.py --cfg_file cfgs/kitti_models/sfd.yaml --batch_size 2

PS: 这里batch_size先设置成1就能跑起来,如果设置成2会报出很多错,下面会一一解决batch_size=2的问题。

点云3D目标检测之——尝试SFD代码跑通(超详细!!)(点云目标检测数据集)

1. DataLoader worker (pid xxx) is killed by signal 将num_workers设置为0,也就是\tools\train.py第27行,default =0

parser.add_argument('--workers', type=int, default=0, help='number of workers for dataloader')

2. No CUDA GPUs are available/Cuda out of memory

# tools/train.py# 62行修改为0os.environ["CUDA_VISIBLE_DEVICES"]="0"# 这里根据你的需要来,如果gpu显存不够会报Cuda out of memory的错误# os.environ["CUDA_VISIBLE_DEVICES"]="-1" #表示用cpuKeyError问题

1.KeyError: ‘KittiDatasetSFD’ 详细查看发现输出的根目录在OpenPCDet文件夹下,虽然我不知道为什么会代码会跑到这里,但是只要把OpenPCDet和SFD两个项目文件不要放在同一个文件夹下就可以解决。(即:把OpenPCDet藏得远远的)。github的issue里也有人有这个错误,不知道是不是跟我一样的情况。 cfg.ROOT_DIR总是会自动找错地方,就会发生KeyError或者DataLoader=0等问题,可以检查一下路径对不对。

2.KeyError: ‘road_plane’ 在sfd.yaml文件中第12行

USE_ROAD_PLANE: FlaseTypeError

当batch_size=2时,kitti_dataset_spf.py中会报TypeError,是‘valid_noise’这个Key出了问题,参考知乎连接在for循环(约400行)前加入

data_dict = data_dict.pop('valid_noise')

会报其他的错误-----说是list没有item()方法,不懂==。干脆在上一个for循环里直接删除,代码如下:

#485行左右for key, val in cur_sample.items(): (+)if key == 'valid_noise':(+)continuedata_dict[key].append(val)Sponcv包出错问题

这里先说明我安装的是sponcv2.1版本,也就是自动安装的 之后会报关于sponcv的各种错误,要做以下几处修改才能解决: 1. AttributeError: module ‘spconv‘ has no attribute ‘SparseModule‘ import spconv 要改写成 import spconv.pytorch as spconv 2. 我也不太记得了,总之要按照这个链接Github把所有报错(??)的文件都更改一遍,刚开始抱着试试看的态度逐行修改,确实不报错了。 理论上是应该把所有github中提到的文件都修改一遍,但我是哪里报错改哪里,所以只改了以下文件:

data_processor.pydataset.pydetector3d_template.pyspconv_utils.pyAssertionError

AssertionError: must be contiguous tensor model/roi_heads/sfd_head.py

#约第600行,更改如下coords = sparse_idx.int().contiguous()ModuleNotFoundError

重新运行setup

cd SFDpython setup.py developcd pcdet/ops/iou3d/cuda_oppython setup.py developcd ../../../..NotImplementError或者是NAN的问题

具体错误如下

File "/home/tianran/workdir/SFD/pcdet/models/roi_heads/target_assigner/proposal_target_layer.py", line 162, in subsample_roisraise NotImplementedErrorNotImplementedErrormaxoverlaps:(min=nan, max=nan)ERROR: FG=0, BG=0

解决方案(此处参考知乎链接和github上的issue): (必选) 在sfd_head_utils.py的points_features[:, 3:6] /= 255.0这一行代码后增加:

from torch.nn.functional import normalizepoints_features[:, :3] = normalize(points_features[:, :3], dim=0)points_features[:, 6:] = normalize(points_features[:, 6:], dim=0)

(可选) sfd.yaml文件中配置如下参数:(可选择性尝试)

LR = 0.01 #(缩小十倍)REG_Loss: giou # 换成dioubatch_size =1验证阶段

assert lidar_file.exists()

# kitti_dataset_sfd.py 大约29行修改为以下内容self.split = 'test' # self.dataset_cfg.DATA_SPLIT[self.mode] #{'train': 'train', 'test': 'val'}# 62行左右,个人感觉这里有点问题,因为 self.split要么是train要么是val,不可能是test,所以就不可能跑到test路径下验证self.root_split_path = self.root_path / ('training' if self.split != 'test' else 'testing') #这里没有改,只是写出来说明一下

准确率虽然运行出来了,0.7IOU大约94%,但我发现更改.txt文件并不会修改载入的数据量,似乎该载入什么数据早已在.pkl文件里写好了,这我就不能理解了,甚至产生了一个邪恶的想法。应该是因为代码太复杂我还理解不了吧,谁能告诉我原因吗? 刚开始有一点点眉目,老师就让我滚去做双目,好吧,先尝试到这里吧,花费三周时间跑代码,啊啊啊真可怕。

未完成的事情

1.模型的保存 2.如何评估准确率 √ 3.准确率的问题 √ 4.gpu多卡pytorch分布式训练; 5.结果可视化 6.跑自己的数据集

更新为什么修改ImageSet文件夹下的.txt文件修改后训练的数据仍不变? 以下命令会根据你的.txt文件、配置文件等写入.pkl文件中,之后运行就只会用到.pkl文件,所以若想修改训练或测试数据集,需要再次生成一个.pkl文件。python -m pcdet.datasets.kitti.lidar_kitti_dataset create_kitti_infos会自动寻找到其他的文件夹下的文件 环境路径查找优先顺序需要调整,可参考链接中的Error7调整环境路径。
本文链接地址:https://www.jiuchutong.com/zhishi/284105.html 转载请保留说明!

上一篇:fpdisp5a.exe是什么进程 有什么作用 fpdisp5a进程查询(fp是什么文件)

下一篇:最小的1080p高清屏幕是什么(最小的的照片)

  • 营业执照注册资金多少有什么区别

    营业执照注册资金多少有什么区别

  • 小米10青春版是否有红外功能(小米10青春版是什么处理器)

    小米10青春版是否有红外功能(小米10青春版是什么处理器)

  • 苹果充电线第四个触点发黑怎么办(苹果充电线第四条变黑)

    苹果充电线第四个触点发黑怎么办(苹果充电线第四条变黑)

  • 抖音怎么设置合拍权限(抖音设置位置怎么设定)

    抖音怎么设置合拍权限(抖音设置位置怎么设定)

  • 无需申诉什么意思(申诉无用)

    无需申诉什么意思(申诉无用)

  • 苹果手机下载歌曲存储在哪里(苹果手机下载歌曲怎么设置铃声)

    苹果手机下载歌曲存储在哪里(苹果手机下载歌曲怎么设置铃声)

  • 拼多多二级惩罚是什么(拼多多二级惩罚3个月)

    拼多多二级惩罚是什么(拼多多二级惩罚3个月)

  • 微信号是手机号码吗(如何让微信号是手机号)

    微信号是手机号码吗(如何让微信号是手机号)

  • 手机电池鼓包了还能用吗(手机电池鼓包了还能充电吗)

    手机电池鼓包了还能用吗(手机电池鼓包了还能充电吗)

  • 路由器百兆和千兆的区别(路由器百兆和千兆怎么分别)

    路由器百兆和千兆的区别(路由器百兆和千兆怎么分别)

  • 苹果6p怎么开启实况(苹果6p怎么开启静音模式)

    苹果6p怎么开启实况(苹果6p怎么开启静音模式)

  • 钉钉下载文件会有记录吗(钉钉下载文件会过期吗)

    钉钉下载文件会有记录吗(钉钉下载文件会过期吗)

  • 视频源格式错误怎么解决(视频源格式错误怎么办qq浏览器)

    视频源格式错误怎么解决(视频源格式错误怎么办qq浏览器)

  • x3440相当于什么cpu(x3460相当于什么u)

    x3440相当于什么cpu(x3460相当于什么u)

  • 显卡是用来连接主机和什么的接口电路(显卡是跟啥连接的)

    显卡是用来连接主机和什么的接口电路(显卡是跟啥连接的)

  • 苹果11信息闪光灯怎么开(苹果11信息闪光灯)

    苹果11信息闪光灯怎么开(苹果11信息闪光灯)

  • 手机卡三个月不用怎么处理(手机卡三个月不用就自动注销了吗)

    手机卡三个月不用怎么处理(手机卡三个月不用就自动注销了吗)

  • 华为p30手机实况模式在哪(华为p30怎么实况)

    华为p30手机实况模式在哪(华为p30怎么实况)

  • 剪映怎么加入本地音乐(剪映怎么加入本地录音)

    剪映怎么加入本地音乐(剪映怎么加入本地录音)

  • 一加7pro触控采样率(一加七多点触控)

    一加7pro触控采样率(一加七多点触控)

  • qq音乐怎么取消自动登录(qq音乐怎么取消音乐人身份)

    qq音乐怎么取消自动登录(qq音乐怎么取消音乐人身份)

  • 物联卡不实名能不能用(物联卡不实名认证会影响网速吗)

    物联卡不实名能不能用(物联卡不实名认证会影响网速吗)

  • 腾讯now怎么注销账号(腾讯now实名认证之后怎么取消)

    腾讯now怎么注销账号(腾讯now实名认证之后怎么取消)

  • 三星s9相册回收站在哪(三星s9照片回收怎么找回)

    三星s9相册回收站在哪(三星s9照片回收怎么找回)

  • 趣步交换密码和交易密码一样吗(趣步交换密码忘了怎么办)

    趣步交换密码和交易密码一样吗(趣步交换密码忘了怎么办)

  • 陌陌怎么语音通话聊天(陌陌语音通话会被监听吗)

    陌陌怎么语音通话聊天(陌陌语音通话会被监听吗)

  • 抖音pk是怎么回事(抖音pk过程是什么)

    抖音pk是怎么回事(抖音pk过程是什么)

  • 建筑业预缴所得税怎么计算
  • 开普票需要交税多少
  • 扫码开票开错了怎么改
  • 个体工商户税务申报如何网上申报
  • 施工排水费是否属于措施费
  • 19年高速公路免费时间
  • 公司给的出差津贴
  • 商贸企业加工费包括哪些
  • 预付广告费计入什么科目
  • 发行债券的会计要素
  • 母公司投资子公司现金流量表抵消
  • 已经认证的发票红冲发票需要收回原发票吗
  • 收入转本年利润的会计分录
  • 过期增值税发票怎么处理
  • 提前报废的固定资产怎么处理
  • 企业所得税权责发生
  • 石家庄国税发票查验平台
  • 关于油票的纳税人识别号
  • 出纳记账本如何手工记账
  • 营改增一般纳税人申请过渡性财政扶持资金
  • 个人投资者
  • 补缴去年的社保怎么做账
  • 城市垃圾处理项目
  • 2023增值税免税政策
  • 一般纳税人进项税会计分录
  • 业务员报销清单表
  • win10 5月更新已知bug
  • 异地增值税预交可以网上缴纳吗
  • 怎么解决windows许可证即将过期
  • 销货退回与折让是什么
  • 财务冲抵如何处理
  • 公司为实习生买保险列支什么科目?
  • 软件集成电路企业所得税优惠政策
  • php如何实现伪静态
  • 运输公司的账务处理
  • 汇兑应计入哪个科目
  • 多模手机
  • js添加方法
  • 节流和防抖js
  • sed多个命令匹配条件格式
  • 商品流通的企业
  • 产权转移书据是什么印花税
  • 个体户税率征收
  • 财务咨询公司能出尽调报告吗
  • 合伙企业所得税征收方式
  • 个人所得税汇算清缴
  • 暂存的凭证是怎么做的
  • SQL Sever 2005 Express 安装失败解决办法
  • 一般纳税人企业所得税5%还是25%
  • 无形资产的摊销计入什么科目
  • 个体小企业怎么缴纳个人所得税
  • 卖废品收入计入需要交税吗
  • 利息收入填在汇算清缴哪里
  • 现金流量表中应收账款为负是什么意思
  • 资本公积资本溢价怎么算
  • 长期股权投资权益法初始成本的确定
  • 投资性房地产涉及其他综合收益
  • 资产评估资产如何入帐
  • 加计抵减10%政策适用范围
  • 小规模纳税人怎么开增值税专用发票
  • access数据库导入到sqlserver
  • mysql正整数类型
  • mysql第五章上机
  • c 语言 mysql
  • win7电脑连不上wifi怎么解决
  • ubuntu系统如何
  • Linux下SSH Session复制功能实现方法
  • debian怎么配置ip
  • win10大更新2020
  • iphone手机文件怎么传到电脑
  • win10系统故障恢复
  • 电脑安装win8
  • unity坐标系转换
  • jquery attr和prop
  • javascriptjs
  • winpe文件下载
  • 土地增值税可否免税
  • 山东省国家地税局官网
  • 北京地方税务局电话
  • 个人账户手机银行如何对公转账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设