点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

本文由知乎作者Leon Wu授权转载,不得擅自二次转载。原文链接:https://zhuanlan.zhihu.com/p/81298183

本文将YOLO和maskRCNN进行了结合,用yolo进行人体检测的同时可以得到instance的mask和keypoints。

首先奉上github代码, 有训练好的demo可以尝试,希望可以值得大家一玩。

https://github.com/leon-liangwu/MaskYolo_Caffe

下面是一些简单的介绍:

YOLO最初版本是由Github中关于YOLO的Caffe版本实现有很多,最初yolo出现由Redmon开发的darknet深度学习框。这个框架用纯C语言实现了视觉深度学习中常用的layers,依赖很少。但是如果想要用其他的backbone比如resenet,mobilenet这些网络的话,很难去实现。所以很多同学将YOLO移植到Caffe中,方便使用Caffe中的imagenet模型进行finetune。

实现的功能:Caffe-MaskYolo

  • Demos for object detection, mask segmentation and keypoints recognition

  • YOLO v2 (RegionLossLayer) and v3 (YoloLossLayer) are supported

  • Instance Mask segmentation with Yolo

  • Keypoints Recognition with yolo

  • training data preparation and training

一些samples

具体实现

YOLO的核心其实是它的Loss layer. darknet 中对应yolo v1到 v3的进化的loss layer分别是:

detection_layer.c
region_layer.c
yolo_layer.c

所以将YOLO移植到Caffe中最重要的就是在Caffe中实现对应的层,这里我实现了V2和V3的caffe 对应的层:

MaskYolo_Caffe/caffe-maskyolo/src/caffe/layers/region_loss_layer.cpp
MaskYolo_Caffe/caffe-maskyolo/src/caffe/layers/yolo_loss_layer.cpp

其次,生成lmdb和数据层的实现:

在github中有详细地介绍如何生成训练使用的lmdb,不详细介绍,大概的方式就是将mask和keypoints的ground truth存在lmdb的image channel中,数据层进行解析,可以看一下数据层的形式:

name: "MobileNet"
layer {name: "data"type: "KpsBoxData"top: "data"top: "label"include {phase: TRAIN}transform_param {scale: 0.0078125mean_value: 128.0mean_value: 128.0mean_value: 128.0resize_w: 320resize_h: 224jitter: 0.2}data_param {source: "/data/Machine_Learning/lmdb/mask_kps_lmdb"batch_size: 1backend: LMDBmin_size_and: 0.08min_size_or: 0.001}
}

上面这两步已经实现了YOLO的caffe版本,可以进行物体检测了,下面是我如何和MaskRCNN进行结合。实际上关键点就是如何将YOLO的检测结果输出给roi_pooling层。因此我写了一个decode_rois_layer 用来将yolo的检测结果作为proposals,并输入给roi pooling 层。

Demo & Train

# compile the pythonapi of cocoapi
cd ROOT_MaskYolo/lib/cocoapi/PythonAPI
make -j# use the following command to generate lmdb which contains mask and keypoints information
cd ROOT_MaskYolo
python scripts/createdata_mask_kps.py --coco_dir=/path/to/coco --lmdb_dir=/path/to/lmdb# the training for mask consists of 2 steps
cd ./models/mb_body_mask# 1. freeze the weights of detection network, only update the roi mask part
sh train_maskyolo_step1.sh# 2. update all the network with finetuning the model of step1
sh train_maskyolo_step2.sh

Reference

You Only Look Once: Unified, Real-Time Object :detection https://arxiv.org/abs/1506.00264

YOLO9000: Better, Faster, Stronger :https://arxiv.org/abs/1612.00824

YOLOv3: An Incremental Improvement

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks:https://arxiv.org/abs/1506.00149

Mask R-CNN:https://arxiv.org/abs/1703.00687

上述内容,如有侵犯版权,请联系作者,会自行删文。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-知识星球和学术交流群已成立

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导,800+的星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

Mask_YOLO_Caffe:基于Mask-RCNN和YOLO检测的工程实现(附源代码)相关推荐

  1. 【笔记】基于 Mask R-CNN 的玉米田间杂草检测方法

    <基于 Mask R-CNN 的玉米田间杂草检测方法> 单位:山东农业大学信息科学与工程学院 作者:姜红花 数据获取 相机:Intel RealSense Depth CameraD435 ...

  2. 第八届泰迪杯优秀论文B题(基于Mask R-CNN 及Yolov4 的电力巡检中绝缘子缺陷研究)

    目录 一. 绪论 1 1.1研究背景 1 1.2国内研究现状 1 1.3研究目标及流程 1 二. 数据预处理 3 2.1图像分割 3 2.2图像金字塔 4 2.3数据增强 4 2.4归一化图像大小 5 ...

  3. Mask R-CNN Keras 对象检测 对象分割 像素掩码

    原文链接 Mask R-CNN Keras 对象检测 对象分割 像素掩码 在 2019年7月16日 上张贴 由 hotdog发表回复 Mask R-CNN Keras 在本教程中,您将学习如何使用 K ...

  4. Mask R-CNN用于目标检测和分割代码实现

    Mask R-CNN用于目标检测和分割代码实现 Mask R-CNN for object detection and instance segmentation on Keras and Tenso ...

  5. 基于mask rcnn的三维物体分割

    原文地址:http://siligence.ai/article-446-1.html 前言 最近迷上了mask rcnn,也是由于自己工作需要吧,特意研究了其源代码,并基于自己的数据进行训练~ 本博 ...

  6. 【项目实践】基于Mask R-CNN的道路物体检测与分割(从数据集制作到视频测试)...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1.内容概要 Mask R-CNN的框架是对Faster R-CNN的扩展,与BBox识别并行的增加一 ...

  7. mask rcnn算法原理图_基于MASK RCNN算法实现瑕疵图像识别(训练模型及应用)

    数据的准备其实是最花功夫和时间的,度过了上一个阶段后,就进入激动的模型训练阶段了,首先简要聊聊我对Mask RCNN算法的理解: MaskRCNN是何凯明大神基于FastRCNN的改进,2018年初在 ...

  8. rcnn 回归_目标检测-从RCNN到Mask RCNN两步检测算法总结-火龙果软件

    编辑推荐: 本文来自于arleyzhang博客,本文主要介绍目标检测中两步检测算法的总结对比,提出了一种新的两步检测模型, Light-Head RCNN ,希望会对您的学习有所帮助. R-CNN R ...

  9. 基于Faster RCNN的医学图像检测(肺结节检测)

    Faster-R-CNN算法由两大模块组成:1.PRN候选框提取模块 2.Fast R-CNN检测模块.其中,RPN是全卷积神经网络,用于提取候选框:Fast R-CNN基于RPN提取的proposa ...

最新文章

  1. C++数据结构链表的基本操作
  2. 清华医工结合项目及三创项目与天津市27家重点医院对接
  3. 小小军团获取服务器配置文件,小小军团2资源攻略 六种办法让你不再缺资源
  4. “万能数据库查询分析器” 5.03发布,访问EXCEL将自动为表名前后加上中括弧
  5. C和混编混合编程----strcpy缓存溢出原理
  6. java远程调试挂起线程_java进程的远程调试
  7. AOP 拦截器 JDK动态代理机制 struts2 mybatis spring-aop
  8. Spring Cloud构建微服务架构:消息驱动的微服务(核心概念)【Dalston版】
  9. 此url不支持http方法get_HTTP 入门
  10. linux malloc free 内存碎片_内存申请malloc/new与内存释放free/delete的区别
  11. python按内容分割txt文件_python 读txt文件,按‘,’分割每行数据操作
  12. 微软宣布任命前MOTO亚太总裁梁念坚为中国区CEO
  13. 005_Sketch 工具使用手册
  14. html 拼图游戏,HTML5人物拼图游戏
  15. 使用源码部署CITA(Ubuntu18.0.4 | VMware)
  16. 菜鸟浅谈自己学习Java过程的经历
  17. html5 图灵完备,css图灵完备
  18. 2019 码云 最流行的开源项目 TOP 50
  19. shell数组目录遍寻循环输出
  20. 简图记录-批判性思维

热门文章

  1. [LeetCode] Add Two Numbers(stored in List)
  2. 关于Advanced Installer 11.0打包软件过程一些记录
  3. 浏览器不是最大化的时候要考虑浏览器的边框宽度
  4. 【079】用代码来创建 Android 控件
  5. CentOS5.4下安装短信猫
  6. 用sql语句实现按时间求累计值
  7. Java各版本的重大改变
  8. 数据库维护优化及后期改进约定.实践篇
  9. 聊聊底线 | 坏数据与假数据
  10. 互联网公司的那些搞笑gif