训练SSD时出现的数据问题

使用COCO2014训练SSD网络。

参照https://github.com/weiliu89/coco.git的方法处理数据集。

生成lmdb格式数据。

开始训练之后报这种错误。

OpenCV Error: Assertion failed ((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) in cvtColor

各种搜索之后发发现是因为SSD只支持3通道的RGB图像。(也有人说是因为训练图像可能最小边<300,这样resize到固定300x300的时候就会有问题)

解决方案有两个(反正这两个方案对我的问题都有效,不过我选择了第二个):

1. 修改resize_mode为FIT_SMALL_SIZE,batch_size=1.

虽然能解决问题,但是batch_size设为1可能会导致无法收敛等问题,而且所有图像尺寸也不是统一的300x300了,训练的结果就会和原作者有误差,所以我没选择次方案。

2.从训练集中选出灰度图,然后删掉,重新生成lmdb文件重新训练。筛选代码如下,我是用matlab写的:

fid=fopen('/your_root/new_train.txt','wt');%新建一个txt列表  
lst = ['/your_root/train.txt'];           %要读取的列表所在的路径
imgpath = '/image_root/MS-COCO2014/';
count = 0;
训练 SSD(Single Shot MultiBox Detector)模型使用 YOLO(You Only Look Once)数据集的步骤如下: 1. 数据集准备:首先,你需要准备一个包含带有标注的图像的数据集。这些标注应该包括每个图像中物体的类别和边界框信息。 2. 数据预处理:对于训练 SSD 模型,你需要对数据进行预处理。这包括将图像调整为相同的尺寸,并将标注转换为适当的格式,例如 Pascal VOC 或 COCO 格式。 3. 下载预训练模型:为了更好地训练 SSD 模型,你可以使用已经在大规模数据集上预训练过的模型作为初始权重。这些预训练模型通常在 ImageNet 上进行了分类任务的训练。 4. 构建网络:SSD 模型由一个基础网络和多个用于检测的卷积层组成。你需要根据你的数据集和需求构建适当的网络结构。 5. 训练模型:使用准备好的数据集和网络结构,开始训练 SSD 模型。这可以通过随机梯度下降(SGD)等优化算法来实现。 6. 调优参数:在训练过程中,你可能需要调整一些超参数,例如学习率、批量大小、迭代次数等,以获得更好的模型性能。 7. 评估模型:训练完成后,你需要使用测试集来评估 SSD 模型的性能。这可以通过计算准确率、召回率、平均精度均值(mAP)等指标来实现。 8. 预测物体:最后,你可以使用训练好的 SSD 模型来对新图像进行物体检测和预测。 请注意,这只是一个大致的步骤概述,具体实施过程可能会因实际情况而有所不同。在实际应用中,你可能还需要处理数据增强、类别平衡、数据集分割等问题,以获得更好的模型性能和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值