ssd-pytorch实现过程的一些问题

本文讲述了作者在尝试基于PyTorch的SSD目标检测时,从早期的老旧源码到现代环境的迁移过程,包括环境配置、数据集下载、GPU使用问题、Pillow版本冲突及matplotlib错误的解决。作者还分享了后续的模型优化尝试和更新内容。
摘要由CSDN通过智能技术生成

在此之前,我找过许多基于pytorch的ssd目标检测算法的教程和源码,由于原作者是在caffe框架实现的,所以基于pytorch版本的源码都只是力求复现原作者文章中的结果,我一开始找到的是地址是GitHub - amdegroot/ssd.pytorch: A PyTorch Implementation of Single Shot MultiBox Detector这个也是许多人最开始看的,他们的代码基本上都是从这找的,然后加上自己的一些修改,我在尝试了许久之后还是没法把程序跑通。因为年代太过于久远,上边链接的是18年的,据今天已经6年了。pytorch,python,以及许多用到的包和库都有新版本,而新版本和旧版之间也并不是完全通用,换句话说,新版本可能并不兼容旧版本,这也导致在现在运行时出现了很多错误,我是一个一个改的。所以我找了新一点的源码版本,如下:

源码来源,是b站up主自己的改进版本,对应的讲解视频地址:Pytorch 搭建自己的SSD目标检测平台(Bubbliiiing 深度学习 教程)_哔哩哔哩_bilibili

up主的

源码地址:https://github.com/bubbliiiing/ssd-pytorch
博客地址:https://blog.csdn.net/weixin_44791964/article/details/104981486 

但是也有许多错误,如下列举,供自己查阅,以防忘记(但不完全)

这是作者的环境 

torch torchvision tensorboard scipy==1.2.1 numpy==1.17.0 matplotlib==3.1.2 opencv_python==4.1.2.30 tqdm==4.60.0 Pillow==8.2.0 h5py==2.10.0

我的环 境基本上都是最新版本,我在anaconda中创建了一个ssd-pytorch的虚拟环境,其中python3.9,pytorch2.1,cuda12.1,pillow改为了9.4.0,其他基本上都是新版

首先是从github上将代码文件clone下来

打开命令行工具(在Windows上可以是命令提示符或PowerShell,在macOS或Linux上是终端)。

              输入以下命令,后面跟上你想克隆的GitHub仓库的URL:

                 git clone https://github.com/biluko/Faster-RCNN-Pytorch.git
 

数据集下载问题,voc数据集可以从官网下载

The PASCAL Visual Object Classes Homepage下载后放在ssd-pytorch文件夹下

然后,按照readme中所说一步步做,但是我训练的时候,gpu没有调用,直接用cpu训练,这其中代码有问题,我觉得是生成器的版本问题或者其他,我用的一些设置基本上都是up主自己设置的,比如线程为4,我i9处理器有24线程,没设置好,这可能是导致我训练10个小时的原因。如果我设置为20或许会缩短时间。

预测问题 

最让我头疼的就是pillow问题,drawimage可以使用,但是textsize不行,两者放在一起不行,会出现如下错误:draw.textsize(label, font)AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘查阅了诸多地方,最终找到是pillow版本问题,我使用的是10.0之后的版本,降到9.4.0之后,没有报错了。至此可以输入图片预测了。

训练结果如下

预测结果 

可见效果一般

后续我将继续修改训练环境,然后分析代码结构,尝试优化。

.............................................................................................................................................................

4.14更新:

尝试了ssd+mobilenetv2,相同数据集,最终amp70.09,遇到问题:AttributeError: 'FigureCanvasTkAgg' object has no attribute 'set_window_title'

具体原因:未知(可能是库版本的问题)

解决办法:在canvas和set之间增加一个.manager

也就是

fig.canvas.set_window_title(window_title)改成
 
fig.canvas.manager.set_window_title(window_title)

或者matplotlib应该降级为3.3左右

..........................................................................................................................................................

4.15更新:合并2007+2012的数据集,用ssd模型跑合起来的数据集。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值