Mask_YOLO_Caffe:基于Mask-RCNN和YOLO检测的工程实现(附源代码)
点击上方“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检测的工程实现(附源代码)相关推荐
- 【笔记】基于 Mask R-CNN 的玉米田间杂草检测方法
<基于 Mask R-CNN 的玉米田间杂草检测方法> 单位:山东农业大学信息科学与工程学院 作者:姜红花 数据获取 相机:Intel RealSense Depth CameraD435 ...
- 第八届泰迪杯优秀论文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 ...
- Mask R-CNN Keras 对象检测 对象分割 像素掩码
原文链接 Mask R-CNN Keras 对象检测 对象分割 像素掩码 在 2019年7月16日 上张贴 由 hotdog发表回复 Mask R-CNN Keras 在本教程中,您将学习如何使用 K ...
- Mask R-CNN用于目标检测和分割代码实现
Mask R-CNN用于目标检测和分割代码实现 Mask R-CNN for object detection and instance segmentation on Keras and Tenso ...
- 基于mask rcnn的三维物体分割
原文地址:http://siligence.ai/article-446-1.html 前言 最近迷上了mask rcnn,也是由于自己工作需要吧,特意研究了其源代码,并基于自己的数据进行训练~ 本博 ...
- 【项目实践】基于Mask R-CNN的道路物体检测与分割(从数据集制作到视频测试)...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1.内容概要 Mask R-CNN的框架是对Faster R-CNN的扩展,与BBox识别并行的增加一 ...
- mask rcnn算法原理图_基于MASK RCNN算法实现瑕疵图像识别(训练模型及应用)
数据的准备其实是最花功夫和时间的,度过了上一个阶段后,就进入激动的模型训练阶段了,首先简要聊聊我对Mask RCNN算法的理解: MaskRCNN是何凯明大神基于FastRCNN的改进,2018年初在 ...
- rcnn 回归_目标检测-从RCNN到Mask RCNN两步检测算法总结-火龙果软件
编辑推荐: 本文来自于arleyzhang博客,本文主要介绍目标检测中两步检测算法的总结对比,提出了一种新的两步检测模型, Light-Head RCNN ,希望会对您的学习有所帮助. R-CNN R ...
- 基于Faster RCNN的医学图像检测(肺结节检测)
Faster-R-CNN算法由两大模块组成:1.PRN候选框提取模块 2.Fast R-CNN检测模块.其中,RPN是全卷积神经网络,用于提取候选框:Fast R-CNN基于RPN提取的proposa ...
最新文章
- C++数据结构链表的基本操作
- 清华医工结合项目及三创项目与天津市27家重点医院对接
- 小小军团获取服务器配置文件,小小军团2资源攻略 六种办法让你不再缺资源
- “万能数据库查询分析器” 5.03发布,访问EXCEL将自动为表名前后加上中括弧
- C和混编混合编程----strcpy缓存溢出原理
- java远程调试挂起线程_java进程的远程调试
- AOP 拦截器 JDK动态代理机制 struts2 mybatis spring-aop
- Spring Cloud构建微服务架构:消息驱动的微服务(核心概念)【Dalston版】
- 此url不支持http方法get_HTTP 入门
- linux malloc free 内存碎片_内存申请malloc/new与内存释放free/delete的区别
- python按内容分割txt文件_python 读txt文件,按‘,’分割每行数据操作
- 微软宣布任命前MOTO亚太总裁梁念坚为中国区CEO
- 005_Sketch 工具使用手册
- html 拼图游戏,HTML5人物拼图游戏
- 使用源码部署CITA(Ubuntu18.0.4 | VMware)
- 菜鸟浅谈自己学习Java过程的经历
- html5 图灵完备,css图灵完备
- 2019 码云 最流行的开源项目 TOP 50
- shell数组目录遍寻循环输出
- 简图记录-批判性思维