用自己的数据训练Mask R-CNN目标检测/分割模型-阿里云开发者社区

开发者社区> 【方向】> 正文

用自己的数据训练Mask R-CNN目标检测/分割模型

简介: 本文讲述了如何使用Mask-CNN对图像中的大量数据进行目标识别与目标分割。
+关注继续查看

rcnn_shapes-1024x289.png

计算机非常擅长数字运算,但对分析图像中的大量数据束手无策。直到最近找到了解决方法,即创建图像处理单元库,利用数千个内核的原始动力解锁图片背后的含义。

使用自己的数据

我们将使用一个示例数据集,它在随机色彩背景上由不同大小和颜色的圆圈、正方形和三角形组成。我已经创建了一个COCO-style版本,如果你想学习如何将图片转换成自己的数据集,请参阅前面的文章

这一次我们的重点是自动标记图像中的所有形状,并标出每个图像精确到像素的位置。这类的任务称为“目标分割”。在计算机视觉中,有很多听起来类似的的术语,比如“物体识别(object recognition)”、“类分割(class segmentation)”、“目标检测(object detection)”,我们需要通过看它们做了什么来区分。下图展示了我们从这四个类型中所能获得的信息,从左到右,任务依次变得困难。

compter_vision_problems-2-1024x341.png

不同类型的图像处理

目标识别告诉我们图像中有什么,而不是在什么地方或者有多少。类分割对图像中不同类型的对象添加位置信息。目标检测将图像中的每个对象通过边界框分割开。最后,这四个当中最难也是我们要训练的是——目标分割。它赋予每个对象一个清晰的边界,也能用来创建前三个的结果。

对于这种简单数据集,我们可以使用老式计算机视觉思路,例如Hough圈和线条检测或模板匹配来获得好的结果。但是通过深度学习,我们可以使用相同方法在几乎所有类型的图像数据集上获得相同类型的结果,而且无需考虑要找的是什么特征,这简直太神奇了。

Mask R-CNN是什么?

在训练自己的Mask R-CNN之前,让我们快速从右向左讲解一下名字的含义。

“NN”是神经网络,它的灵感来自于生物神经元的工作原理,神经网络是连接的神经元集合,每个神经元根据输入和内部参数输出信号。当训练神经网络时,我们要不断调整神经元的内部参数来获得期望的输出。

neural_net2-768x377.jpeg

神经网络

“C”代表“卷积”。CNNs是专门为图像学习而设计的,但在某些方面上与神经网络相似。它们的过滤器是通过在某个时间段在图像上某小块横向和纵向滑动进行的,而不是一次向穿过整个图像。CNN比常规的神经网络使用更少的参数和内存,这使得它们能够处理比传统神经网络更大的图像。

padding_strides.gif

卷积

普通的CNNs擅长目标识别,但是如果我们想要做目标检测,需要知道位置。这就是“R”“区域”。R-CNNs能够围绕对象画出边框。随着时间的推移,发展出了Fast R-CNN和Faster R-CNN。Faster R-CNN在CNN最后提出了Proposal生成网络,即如果在区域内发现对象,则这些区域就会被用作边框。

最后,“Mask”添加了像素级的分割,并创建了目标分割模型。它为网络添加了一个额外的分支来创建二进制掩码,这与我们在注释图像时所做的类似。

准备好电脑配置

要运行这些例子,你需要用最新nvidia显卡的Ubuntu 16.04系统。我可以使用只有2GB内存的GeForce 940M对一小部分网络进行训练,但是你最好使用11GB内存以上的nvidia卡。如果没有,你可以开始使用Amazon Web Services或谷歌云。

我们将使用Docker上运行来确保在同一页面。Docker通过脚本创建系统的副本,所以不必安装所有的小程序。但是在此之前需要准备好主机系统。

安装Ubuntu 16.4之后,我们需要安装NVIDIA图形驱动和CUDA(并行计算平台)。首先打开一个终端并运行以下命令来安装图形驱动程序。

31cc196d6dc5d07eec2f1eecaff3df871a841198

然后安装CUDA

3dd9d8c4e893672c4272d22c3685b977f7d23b62

现在安装Docker、Docker- compose和Nvidia-Docker。

e0eda58aeb2fa47a5b8f69e22905867a6ac2bedb

全部安装好后,重启电脑就可以运行我们的Mask C-RNN系统了。

开始实践

下载并提取deep-learning-explorer。里面包含mask-rcnn文件夹和一个数据文件夹。Data/shapes文件夹中包含数据测试集的压缩文件。提取出shapes.zip文件,并将annotationsshapes_train2018shapes_test2018shapes_validate2018移动到data/shapes文件夹中。

回到终端界面,cd进入到mask-rcnn/docker目录下,并运行docker-compose up。首次运行这个命令时,Docker需要几分钟准备从头开始构建系统。准备就绪时会显示如下:

Screenshot-from-2018-04-28-13-20-18.png

Docker系统准备就绪

将最后一行复制粘贴到web浏览器中,就会打开Jupyter Notebook。进入home/keras/mask-rcnn/notebooks目录,点击mask_rcnn.ipynb。现在您可以浏览每个笔记本单元并训练您自己的Mask R-CNN模型。幕后Keras与Tensorflow正在GPU上训练神经网络。如果你没有11GB显存的话,你可能会在“微调”步骤中遇到问题,但你应该能够用最少2GB的内存卡来训练网络顶端。

我们之所以不必花费数天或数周时间训练模型以及数以千计的例子就能获得不错的结果,是因为复制了之前真实的COCO数据集上完成的训练的权重(内部神经元参数)。由于大多数图像数据集具有相似的基本特征,比如颜色和模式,所以通常可以用一种模型的训练数据来训练另一个模型。这种复制数据称为迁移学习。

如果你滚动到笔记本的底部,你会发现我们只预测了大约37%的正确形状。但是可以通过将STEPS_PER_EPOCH增加到750(培训样本的总数)并运行5个或更多的epochs,来改进模型。

在训练期间或之后,你可以通过一些图表来查看TensorBoard的使用情况。首先需要登录到Docker容器中,启动并运行TensorBoard,然后在web浏览器中访问。过程为在终端运行docker ps,将显示所有运行的容器,使用CONTAINER ID的前两个字符启动Docker容器bash shell来训练模型。例如,我们的ID是d5242f7ab1e3,我们将使用docker exec - d5 bash来登录。运行tensorboard --logdir ~/data/shapes/logs --host 0.0.0.0,现在可以通过访问http://localhost:8877进入TensorBoard了。

Screenshot-from-2018-04-28-19-41-36-1024

现在,你已经根据自己的数据准备好训练Mask R-CNN模型了。

引用和资源:

deep-learning-explorer

pycococreator - 转换数据

R-CNN (arxiv)

Fast R-CNN (arxiv)

Faster R-CNN (arxiv)

Mask R-CNN (arxiv)

Stanford CS class notes

 

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Train a Mask R-CNN model on your own data

作者:waspinator

译者:奥特曼,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【emoji表情】阿里云数据库RDS支持emoji表情
前言 由于最近几年移动App的兴起,手机自带表情作为用户输入的方式开始流行。 但是emoji表情作为一种特殊的编码方式,之前的数据库字符编码不能正常显示。 解决 在mysql5.5之后的版本,utf8mb4的编码方式解决了emoji表情和生僻字的编码问题。
2327 0
【论文理解】ICCV2021-视频中小目标检测Dogfight
论文地址:https://arxiv.org/abs/2108.02092目标:在无人机飞行过程中捕获的背景杂乱的画面中检测其他无人机挑战:任意的移动(相机移动,目标也移动)小尺寸,只占画面像素的0.05%~0.07%(PASCAL VOC (22.62%) and ImageNet (19.94%))形状变换(拍摄角度不同,拍摄的无人机形状不同)遮挡基于region-proposal的方法无法捕
185 0
CV:基于Keras利用训练好的hdf5模型进行目标检测实现输出模型中的脸部表情或性别的gradcam(可视化)
CV:基于Keras利用训练好的hdf5模型进行目标检测实现输出模型中的脸部表情或性别的gradcam(可视化)
31 0
「镁客早报」Facebook建太阳能发电厂为数据中心供电;马斯克概念验证隧道将面向公众开放
Facebook建太阳能发电厂为数据中心供电;苹果新款手机被迫砍单,富士康或将裁员。
193 0
保洁A/B test——用户数据分析的魔力
    在1990年代中期,宝洁公司的高管们开始一项研发全新除异味产品的秘密计划。宝洁公司花费了几百万美元开发了一种无色且成本低廉的液体,这种液体能够喷涂在有油烟味的衬衣、发臭的沙发、陈旧的夹克以及污损的汽车内饰上来除去异味。
1117 0
+关注
【方向】
欢迎各位对内容方向及质量提需求,我们尽量满足,将国外优质的内容呈现给大家!
707
文章
5
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载