目标分割

  1. 数据集准备
    SpaceCity:街道场景的数据集,共有5000张像素级别标注的图像,30个分类,用于预训练
    自己标注,VIA,1000张图片,数据采集于宝骏基地、大型公园等地(尽可能贴合汽车园),用于训练
  2. 模型准备
    采用github上star最多的mask_rcnn模型,和官方的模型基本一致,提取特征用的是resnet101,不同点在于输入图像尺寸是统一的,便于一个批次训练多张图片,另外bbox是自己生成的,而不是读取数据集里面的信息,这样在做数据增广的时候方便一些。另外这个模型也提供了coco数据集的预训练
  3. 主程序设计,模型有了,我需要做的无非是怎么把数据喂给模型进行训练,然后在训练完了之后评价效果。训练部分具体来说主要就是两件事:
    一是设置参数,所有主要的参数、也就是涉及到调参的,我都会放到一个类里面,便于调参
    二是数据的预处理,模型需要的数据是:图片、mask,图片好说,mask的提取稍微有点麻烦。刚才提到了,整个项目其实涉及到三个数据集、一个COCO,这个不用管,拿别人预训练的权值参数来就可以了,然后就是cityspace和自己用via标注的,cityspace是像素级别的标注,它的annotation是一张png图片,每种mask的颜色是不一样的,我们就是根据这个来提取不同的masks的。而via的标注文件是json,里面记录的是mask多边形的点,这就需要读取json文件,找到各个点画出mask
    在评价方面主要有两种手段:一是输入测试图片后直接将分割效果展示出来,主观的去评价分割质量。而另一方面是一些量化的指标,比如mpa,iou等
  4. 大致的过程就是这样,在这中间当然也有很多调参的操作,另外我也设计了一些可视化的函数,通过jupyter notebook来观察各个步骤的实际效果,比如推荐区域、mask的生成最后的分割效果等等。
  5. 关于调参:每个项目都有自己的特点,调参的方法也不可能都是一样的。我主要的调参思路是这样的:
    1. 首先调整的是学习率,官方给定的学习率应该是0.02,我在每训练一个数据集之前都会测试一些学习率,看在不产生梯度消失、爆炸的情况下找到一个较大的学习率
    2. 其次是过拟合/欠拟合的问题,我一般把5个百分点当作一个阈值,如果验证集准确率低于训练集5个百分点以上,我会把它当作过拟合来处理,这时候我会引入正则化、提高dropout这些手段。如果没有,我一般不会这样做,因为根据我自己的实际经验,除非模型非常偏大,引入这些并不是很有必要
    3. 还有一个就是batch_size ,在机器学习里面这个值一般是128或者256这样,但是在cv这个领域,受限于机器的计算能力,一般是2甚至1,很显然用一两张图片的损失来做梯度下降不会很稳定,所以要在机器能够承受的范围能尽可能的调大batch_size。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值