fasterrcnn tensorflow代码详解_pytorch目标检测代码的一些bug调试

这几天一直在做调包侠,是时候来总结总结了。记录一些我所遇到的不常见的问题。

faster rcnn:

参考代码:

jwyang/faster-rcnn.pytorch​github.com
0605e953430abac3bdd26f8fd981b8ba.png

pytorch代码调试,相较于tensorflow的版本要友好一些,不用创建软连接啥的,数据集直接复制voc2007就行(暂时没有尝试coco),不过要注意如果有一个类别是0(就是完全没有目标的图像)要把这个类别给去掉,不然在训练的时候rpn_bound_loss会变成nan,我猜测是因为找不到正样本(如果类别为0,正样本是0,背景也是0,可能机器就会把正样本和负样本搞混,找不到正样本,分子为0,损失就变成nan了)。

SSD:

参考代码:

https://github.com/amdegroot/ssd.pytorch​github.com

这个代码调试了很久,大部分问题可以百度解决。我遇到的难题是这个

IndexError: too many indices for array(其他的报错信息找不到了。。)

可以参考我的回答:

小墨:SSD IndexError: too many indices for array报错​zhuanlan.zhihu.com
guoruoqian/cascade-rcnn_Pytorch 小墨:SSD IndexError: too many indices for array报错​zhuanlan.zhihu.com

另外一个难题是这个:

报错信息:RuntimeError: cuda runtime error(59):device-side assert triggred at XXXX

这个是我不懂SSD的原因,SSD中类别是没有backgound,但是config.py中类别数要修改成class+1,这个1就是背景。

cascade-rcnn

https://github.com/guoruoqian/cascade-rcnn_Pytorch​github.com

这个代码和前面的faster rcnn的代码是一脉相承的,改一下lib里面的make.sh里面的算力,我的是sm_61。报错如下

from scipy.misc import imread cannot import name "imread"

这个只需要吧scipy的版本降低到1.2.1就OK了,更低的版本1.1.0我也试过了,可以使用。

第二个报错是这个:

im_data=im_data.cuda()这里报错

runtimeError: cuda runtime error (38): no CUDA-capable device is detected at XXXX

这个是因为在输入命令的时候是这样输入的:

CUDA_VISIBLE_DEVICES=3 python3 trainval_net.py XXXXX等等一长串

CUDA_VISIBLE_DEVICES这个命令是选择GPU的型号,如果你只有一块GPU,就只能选择0。

这个报错的网上解答很多都是要求重新装驱动,装cuda。如果是头一次使用cuda,报错,可以重新装,不过对于我来说没必要,其他代码能运行,说明版本啥的没问题,能不折腾就不折腾。

能想到的bug就这么多,后续想到了或者遇到了会继续补充。有建议和问题请在评论区留言,我想起了就会去看看。

等待后续更新 2020年1月8日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Faster RCNN是一种基于深度学习的目标检测算法,它是RCNN、Fast RCNN的改进版,具有更快的检测速度和更高的准确率。本文将详细介绍Faster RCNNPyTorch实现。 Faster RCNN的实现主要分为两个部分:特征提取和区域提取。特征提取使用预训练的卷积神经网络(如VGG16、ResNet等)对输入图像进行特征提取,得到一系列特征图。区域提取使用RPN(Region Proposal Network)对特征图进行处理,得到一系列候选区域,然后对每个候选区域进行分类和回归,得到最终的目标检测结果。 在PyTorch中实现Faster RCNN,可以使用torchvision中的models和transforms模块,以及torch.utils.data中的DataLoader和Dataset模块。具体实现步骤如下: 1. 加载数据集 使用torchvision中的transforms模块对数据进行预处理,然后使用Dataset模块加载数据集,最后使用DataLoader模块对数据进行批量处理。 2. 加载预训练模型 使用torchvision中的models模块加载预训练模型(如VGG16、ResNet等),然后修改模型最后一层的输出,使其适应目标检测任务。 3. 定义RPN 定义RPN网络,包括卷积层、分类层和回归层,使用预训练模型的特征图作为输入,输出候选区域。 4. 定义ROI Pooling层 定义ROI Pooling层,将候选区域映射到固定大小的特征图上,以便进行分类和回归。 5. 定义分类和回归网络 定义分类和回归网络,包括卷积层、全连接层和softmax层,使用ROI Pooling层的输出作为输入,输出目标检测结果。 6. 训练模型 使用反向传播算法和优化器对模型进行训练,调整模型参数,使其适应目标检测任务。 7. 测试模型 使用测试数据集对模型进行测试,计算模型的准确率和召回率,评估模型性能。 以上就是Faster RCNNPyTorch实现步骤,具体实现细节可以参考PyTorch官方文档和相关论文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值