一个maskrcnn的目标检测和实例分割的小例子

共 3222字,需浏览 7分钟

 ·

2020-09-07 23:20






向AI转型的程序员都关注了这个号???

机器学习AI算法工程   公众号:datayx



最近做目标检测,然后记录一下 Faster RCNN、Mask RCNN来做目标检测踩得那些坑。

首先,本文并不是利用Pytorch从头去实现Faster RCNN、Mask RCNN这两个结构的文章。如果有意向去从头实现并了解每一步细节可以看看下面这些视频和博客:

来自B站的两位大佬讲解

  1. 大佬一:视频 博客 GitHub

  2. 大佬二:视频 博客 GitHub

上面都是利用pytorch从原理到具体实现的步骤。


不过本文主要还是利用Pytorch中的Torchvision.model中的Faster RCNN、Mask RCNN来实现迁移学习

关于如何利用迁移学习来训练自己的数据集,这里也给出两个超赞的教程:

  1. 教程一:TORCHVISION 目标检测网络微调

  2. 教程二:手把手教你训练自己的Mask R-CNN图像实例分割模型(PyTorch官方教程)

  3. 教程三:TorchVision之MaskRCNN训练(推荐)


看完以上三个教程,基本上利用Pytorch中的Torchvision.model中的Faster RCNN、Mask RCNN来实现迁移学习也基本上没问题了。

代码 以及运行教程  获取:

关注微信公众号 datayx  然后回复  mask  即可获取。

AI项目体验地址 https://loveai.tech



下面介绍采坑:

1. 训练自己的数据集

这里讲一下如何制作自己的数据集训练这两个网络:

1.1 准备图片

首先你得准备图片数据,这个数据可能是别人给你提供的,也可能是你自己下载的,反正你得先准备好你的图片并放在一个指定的文件夹里。这里推荐一个批量下载网上图片的工具:IMAGE CYBORG

1.2 数据标注工具(labelme)

现在一般用于目标检测、实力分割的数据集制作的有两个工具:labelme和labeling。至于这两个有什么区别和联系呢,有如下解释:labelimg用于做目标检测,占内存小,labelme用于图像语义/实例分割,占内存大。




安装 pycocotools

在整个过程中你要安装 pycocotools,主要用到其中的IOU计算的库来评价模型的性能。但是这个安装并不简单,看了很多文章相对来说只有这篇文章最符合。(Windows下安装 pycocotools)


2. 定义 Faster RCNN、Mask RCNN 模型

前言

为什么要说这个呢?因为如果你不是很有钱,或者公司有点抠买不起一张8G以上的显卡,不改动就训练这两个网络你基本上不可能成功。懂?财大气粗可以忽略……

因为本人就用的普通显卡(GTX1660,6G内存),训练Faster RCNN、Mask RCNN 这两个网络不要想着使用多GPU运行,我看了GitHub说了在windows上Faster RCNN、Mask RCNN暂时不支持多GPU运行。

幸运的是,在改动一些参数之后就可以完美运行。

Mask R-CNN是基于Faster R-CNN改造而来的。Faster R-CNN用于预测图像中潜在的目标框和分类得分.



而Mask R-CNN在此基础上加了一个额外的分支,用于预测每个实例的分割mask。




有两种方式来修改torchvision modelzoo中的模型,以达到预期的目的。第一种,采用预训练的模型,在修改网络最后一层后finetune。第二种,根据需要替换掉模型中的骨干网络,如将ResNet替换成MobileNet等。


2.1 微调一个预训练好的Faster RCNN模型

假设你想从一个在COCO上预先训练过的模型开始,并想针对你的特定类对它进行微调。下面有一种可行的方法:



2.2 替换 Faster RCNN 模型的骨干网络

场景:替换掉模型的骨干网络。举例来说,默认的骨干网络(ResNet-50)对于某些应用来说可能参数过多不易部署,可以考虑将其替换成更轻量的网络(如MobileNet)。





2.3 微调一个预训练好的Mask RCNN模型(本文使用)


2.4 替换 Mask RCNN 模型的骨干网络



3. 训练过程

具体代码看我GitHub

训练过程总的来说没什么,平平无奇,但还是总结一下几个我遇到的坑。

  1. batch_size不宜过大,过大GPU吃不消

  2. num_workers设置为0,我也不知道我设置成其他数会报错

  3. 学习率lr不宜设置太小,可以循序渐进

  4. 不一定要使用lr_scheduler,可以一直保持一个固定的学习率(我的0.01)由于我内存不够我给他禁了,不过相应engine.py的地方也得修改

  5. Mask RCNN 好像暂时不支持多GPU运行,(会的小伙伴下方请留言)

此外补充一个我在训练时发生的一个BUG:





阅读过本文的人还看了以下文章:


TensorFlow 2.0深度学习案例实战


基于40万表格数据集TableBank,用MaskRCNN做表格检测


《基于深度学习的自然语言处理》中/英PDF


Deep Learning 中文版初版-周志华团队


【全套视频课】最全的目标检测算法系列讲解,通俗易懂!


《美团机器学习实践》_美团算法团队.pdf


《深度学习入门:基于Python的理论与实现》高清中文PDF+源码


特征提取与图像处理(第二版).pdf


python就业班学习视频,从入门到实战项目


2019最新《PyTorch自然语言处理》英、中文版PDF+源码


《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码


《深度学习之pytorch》pdf+附书源码


PyTorch深度学习快速实战入门《pytorch-handbook》


【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》


《Python数据分析与挖掘实战》PDF+完整源码


汽车行业完整知识图谱项目实战视频(全23课)


李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材


笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!


《神经网络与深度学习》最新2018版中英PDF+源码


将机器学习模型部署为REST API


FashionAI服装属性标签图像识别Top1-5方案分享


重要开源!CNN-RNN-CTC 实现手写汉字识别


yolo3 检测出图像中的不规则汉字


同样是机器学习算法工程师,你的面试为什么过不了?


前海征信大数据算法:风险概率预测


【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类


VGG16迁移学习,实现医学图像识别分类工程项目


特征工程(一)


特征工程(二) :文本数据的展开、过滤和分块


特征工程(三):特征缩放,从词袋到 TF-IDF


特征工程(四): 类别特征


特征工程(五): PCA 降维


特征工程(六): 非线性特征提取和模型堆叠


特征工程(七):图像特征提取和深度学习


如何利用全新的决策树集成级联结构gcForest做特征工程并打分?


Machine Learning Yearning 中文翻译稿


蚂蚁金服2018秋招-算法工程师(共四面)通过


全球AI挑战-场景分类的比赛源码(多模型融合)


斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


python+flask搭建CNN在线识别手写中文网站


中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程



不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  



机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码



浏览 112
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报