Airbus Ship Detection Challenge 总结

个人想做光学遥感图像的船舶等目标的提取,发现了kaggle上的这个比赛。虽然这个比赛已经结束了很长的时间了,但是官网上有关于比赛的数据,讨论和相关代码,个人觉得对基于深度学习的目标检测的进阶有很大的帮助。我前期参加了深度之眼的课程,在某个视频中,老师说,前期学习的时候要理论,代码,比赛最好一起进行,刚开始可能比较困难,但是坚持下来就好了。我经历了之后觉得说的甚有道理。我刚开始自学的时候,网上有人说要重视理论,代码等用的时候再学。所以一直看理论和论文,为了写开题报告。后来开题报告写了,但是看过就忘,不能很好的理解,不能举一反三。后来接触的人多了,认识到代码对理解论文和理论有很大的帮助,于是开始完成吴恩达的深度学习课程和CS231N的课后作业。确实对理论的理解有一定的帮助。但是在接触了这个比赛之后,发现对于数据的处理和训练过程中数据的保存等实用性技巧还是需要继续学习的。可能在课程的课后练习中,也有要求利用自己的数据进行练习,可是不知道怎么进行数据的处理。所以,理论,代码,比赛三个方面同时学习可以相互补充。

现在开始关于这个比赛的总结。

首先说明,这个比赛的结果要求是图像分割而不是用目标框显示。但是我看了一篇综述文,里面说语义分割对目标检测也有一定的帮助。而且在kernerls和讨论区里,也有相关的关于目标框检测的,所以打算一点一点看,把觉得有用的先记录下来。

我现在对目标检测的流程理解如下:1.数据准备,包括图像的分割和标注等问题;2.数据的读入和预处理等操作;3.模型的搭建;4.损失函数的选择;5.优化器的选择,这里面又涉及到学习率,batchsize等超参数的选择;6.开始训练,对训练过程中损失值等值写入文件进行记录;7.对验证集和测试集进行验证并根据结果对参数进行修改。

这个比赛里,光学遥感图像已经被分割好,都是,jpg的图像,然后还有掩码的数据。这里掩码的数据是以RLE的格式给出的,我们需要将其改成0,1的格式并以图像的形式显示。

比赛给出的训练集中,负样本过多,需要删除一些。在剩下的训练集中再分为训练集和验证集。除了训练集和验证集的数量的比例需要考虑,训练集和验证集中包含不同数量船舶的图片的比例也要一样。我现在参考的是kernerls中的Baseline U-Net on PyTorch

我跟人觉得这里根据比例的划分有点问题。划分的时候并没有把没有船舶的图像表示出来,跟只有一个船舶的图像划分为一类了。应该把下面的相关代码调到前面。

之后要设置图像的读取,基本就是dataset类和dataloader的构建。里面涉及到图像扩增的问题,如何对图像进行处理。需要注意的是不是随便对图像进行处理。

这篇文章用的框架是unet。这里通过代码对unet的大致了解就是先用一般的卷积网络进行特征提取,然后经过一段过渡卷积层,开始进行反卷积操作,在反卷积的过程中,每层把卷积过程中对应层进行通道数拼接。最后得到原图大小,并对每个像素进行分类。

损失函数由两部分组成。BinnaryCrossEntropy loss and minus Jaccard index 。前者是像素进行二分类是损失值计算。后者是对IOU的计算。将前者的损失值减去后者。重复的越多,IOU的损失越大,总体的损失越小。

优化器的选择根据封装的库进行选择。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值