rcnn

Faster RCNN(tensorflow)代码详解

不羁的心 提交于 2019-11-28 22:22:38
本文结合CVPR 2018论文 "Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships" ,详细解析Faster RCNN(tensorflow版本)代码,以及该论文中的一些操作步骤。 Faster RCNN整个的流程就是使用VGG等网络提取全图的feature map以及使用RPN网络预测一些object proposal(物体bbox的形式),使用ROI Pooling操作,提取出每个物体的特征图,然后输入到两层全连接神经网络进行物体类别以及bbox坐标的预测,抽象版的流程图可以看下面两幅图。 为了更清楚的体现代码中的结构,按照代码中的流程绘制了下面这张图:(图太大截图不好看,可使用链接下载。) 下面分析代码是根据一次典型的实验的执行顺序来分析的,这样比较方便理解。首先贴出跑一次Faster RCNN的典型参数配置: 'DEDUP_BOXES': 0.0625, 'EPS': 1e-14, 'EXP_DIR': 'faster_rcnn_end2end', 'GPU_ID': 0, 'IS_MULTISCALE': False, 'MATLAB': 'matlab', 'MODELS_DIR': 'XXX/SIN/models

RCNN系列算法总结

☆樱花仙子☆ 提交于 2019-11-28 12:51:43
RCNN 物体检测不再是对单一物体进行分类,而是要分类多个物体,另一方面还需要知道这些物体在什么地方,也就是bounding box。这两点使得识别比分类更加困难。 因此采用来扣一块区域出来,放卷积神经网络来看一看是不是我要的物体,如果不是就丢弃,如果是,那就找到这个物体了。如此使用Selective Search生成若干个区域,然后对每一个区域进行一次分类,就可以了。 每一个生成的感兴趣区域的框大小肯定是不一样的,因此卷积神经网络会将这些区域resize成大小相等的框,然后丢进卷积神经网络生成特征 1、分类,最早的RCNN是采用单分类的SVM,比如有十个感兴趣的物体则采用十个SVM分类器 2、定位,Selective Search出来的box不一定就是我所需要的box,可能会存在偏差,因此会采用回归来判断预测框与真实框的loss。 选择性搜索算法使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域作为输入,通过下面的步骤进行合并: 首先将所有分割区域的外框加到候选区域列表中 基于相似度合并一些区域 将合并后的分割区域作为一个整体,跳到步骤1 通过不停的迭代,候选区域列表中的区域越来越大。可以说,我们通过自底向下的方法创建了越来越大的候选区域。表示效果如下: 选择性搜索算法如何计算两个区域的像素度的呢?

已经训练好tensorflow的Faster RCNN模型下载

女生的网名这么多〃 提交于 2019-11-28 07:22:39
已经训练好tensorflow的Faster RCNN模型下载 网上有不少训练Faster RCNN的文章, 但很少有训练好的模型。现将自己训练好的模型上传。链接:https://pan.baidu.com/s/1D-I8USInZ5uAGW6hMdv8Gg; 提取码:d45d 来源: CSDN 作者: supermonchao 链接: https://blog.csdn.net/supermonchao/article/details/94397578

TensorFlow 目标检测模型转换为 OpenCV DNN 可调用格式

自古美人都是妖i 提交于 2019-11-28 07:19:02
原文: TensorFlow 目标检测模型转换为 OpenCV DNN 可调用格式 - AIUAI 在 OpenCV4.X 版本(OpenCV3.4.1之后版本) 可以采用 cv2.dnn.readNetFromTensorflow(pbmodel, pbtxt) 函数直接调用 TensorFlow 训练的目标检测模型. 1. TensorFlow Detection Model Zoo TensorFlow 目标检测预训练模型: Tensorflow Detection Model Zoo 1.1. 基于 COCO 数据训练的模型 Model name Speed (ms) COCO mAP[^1] Outputs ssd_mobilenet_v1_coco 30 21 Boxes ssd_mobilenet_v1_0.75_depth_coco ☆ 26 18 Boxes ssd_mobilenet_v1_quantized_coco ☆ 29 18 Boxes ssd_mobilenet_v1_0.75_depth_quantized_coco ☆ 29 16 Boxes ssd_mobilenet_v1_ppn_coco ☆ 26 20 Boxes ssd_mobilenet_v1_fpn_coco ☆ 56 32 Boxes ssd_resnet_50_fpn_coco

C++调用mask rcnn进行实时检测--opencv4.0

穿精又带淫゛_ 提交于 2019-11-28 07:18:38
介绍 Opencv在前面的几个版本中已经支持caffe、tensorflow、pytorch训练的几种模型,包括分类和物体检测模型(SSD、Yolo),针对tensorflow,opencv与tensorflow object detection api对接,可以通过该api训练模型,然后通过opencv调用,这样就可以把python下的环境移植到C++中。 关于tensorflow object detection api,后面博文会详细介绍 数据准备与环境配置 基于mask_rcnn_inception_v2_coco_2018_01_28的frozen_inference_graph.pb,这个模型在tensorflow object detection api中可以找到,然后需要对应的mask_rcnn_inception_v2_coco_2018_01_28.pbtxt,以及colors.txt,mscoco_labels.names。 opencv必须是刚发布的4.0版本,该版本支持mask rcnn和faster rcnn,低版本不支持哦,注意opencv4.0中在配置环境时,include下少了一个opencv文件夹,只有opencv2,这是正常的。 好了,废话不多说了,直接上源代码,该代码调用usb摄像头进行实时检测,基于单幅图像的检测修改下代码即可。

『深度应用』一小时教你上手MaskRCNN·Keras开源实战(Windows&Linux)

左心房为你撑大大i 提交于 2019-11-27 12:13:59
0. 前言介绍 开源地址: https://github.com/matterport/Mask_RCNN 个人主页: http://www.yansongsong.cn/ MaskRCNN是何凯明基于以往的faster rcnn架构提出的新的卷积网络,一举完成了object instance segmentation. 该方法在有效地目标的同时完成了高质量的语义分割。 文章的主要思路就是把原有的Faster-RCNN进行扩展,添加一个分支使用现有的检测对目标进行并行预测。 此开源代码:这是在Python 3,Keras和TensorFlow上实现 Mask R-CNN 。该模型为图像中对象的每个实例生成边界框和分割蒙版。它基于特征金字塔网络(FPN)和ResNet101骨干网。 存储库包括: Mask R-CNN的源代码,建立在FPN和ResNet101之上。 MS COCO的培训代码 MS COCO的预训练重量 Jupyter笔记本可以在每一步都可视化检测管道 ParallelModel类用于多GPU培训 评估MS COCO指标(AP) 您自己的数据集培训示例 代码记录在案,设计易于扩展。如果您在研究中使用它,请考虑引用此存储库(下面的bibtex)。如果您从事3D视觉,您可能会发现我们最近发布的 Matterport3D 数据集也很有用

Tensorflow版Faster RCNN源码解析(TFFRCNN) (19) rpn_msr/proposal_target_layer_tf.py

有些话、适合烂在心里 提交于 2019-11-27 08:44:33
本blog为github上 CharlesShang/TFFRCNN 版源码解析系列代码笔记 --------------- 个人学习笔记 --------------- ---------------- 本文作者吴疆 -------------- ------ 点击此处链接至博客园原文 ------ 1. proposal_target_layer (rpn_rois, gt_boxes, gt_ishard, dontcare_areas, _num_classes)代码逻辑 赋值all_rois = rpn_rois,剔除gt_boxes中的gt_hardboxes得到gt_easyboxes---> 扩充all_rois(None,5) 第1列为全0batch_ind: rpn_rois + gt_easyboxes + jittered_gt_boxes 三个部分,jittered_gt_boxes由gt_easyboxes抖动而来(调用_jitter_gt_boxes(...)函数, 未知意义 ) 未知扩充all_rois的意义??? ( Include ground-truth boxes in the set of candidate rois) 猜想是参与训练的proposals中也应包含gt box,而不仅仅是来源于RPN得到的proposals,有利于RCNN

Faster Rcnn 代码解读之 train_val.py

与世无争的帅哥 提交于 2019-11-27 08:30:45
# -------------------------------------------------------- # Tensorflow Faster R-CNN # Licensed under The MIT License [see LICENSE for details] # Written by Xinlei Chen and Zheqi He # -------------------------------------------------------- from __future__ import absolute_import from __future__ import division from __future__ import print_function from model.config import cfg import roi_data_layer.roidb as rdl_roidb from roi_data_layer.layer import RoIDataLayer from utils.timer import Timer try: import cPickle as pickle except ImportError: import pickle import numpy as np import os import sys

Tensorflow版Faster RCNN源码解析(TFFRCNN) (17) rpn_msr/proposal_layer_tf.py

只谈情不闲聊 提交于 2019-11-27 03:46:19
本blog为github上 CharlesShang/TFFRCNN 版源码解析系列代码笔记 --------------- 个人学习笔记 --------------- ---------------- 本文作者吴疆 -------------- ------ 点击此处链接至博客园原文 ------ """ Outputs object detection proposals by applying estimated bounding-box transformations to a set of regular boxes (called "anchors"). 根据RPN目标回归值修正anchors并做后处理输出proposals和全0batch_ind组成的blob """ 1.proposal_layer(rpn_cls_prob_reshape, rpn_bbox_pred, im_info, cfg_key, _feat_stride = [16,], anchor_scales = [8, 16, 32]) 算法逻辑 调用generate_anchors(...)(generate_anchors.py中)产生9个base anchors---> im_info = im_info[0] # 取出第一张图像更新im_info ,存储该图像的宽、高和缩放因子--->

Tensorflow版Faster RCNN源码解析(TFFRCNN) (16) rpn_msr/generate_anchors.py

半腔热情 提交于 2019-11-27 00:57:35
本blog为github上 CharlesShang/TFFRCNN 版源码解析系列代码笔记 --------------- 个人学习笔记 --------------- ---------------- 本文作者吴疆 -------------- ------点击此处链接至博客园原文------ 1.generate_anchors(base_size=16, ratios=[0.5, 1, 2],scales=2**np.arange(3, 6)) 在scaled图像(即真正馈入网络的图像)(0,0)位置产生9个base anchors并返回, 被proposal_layer_tf.py中proposal_layer(...)函数调用 # ratios=[0.5, 1, 2]表示1:2, 1:1, 2:1 # scales = 2**np.arange(3, 6)表示(8,16,32) def generate_anchors(base_size=16, ratios=[0.5, 1, 2], scales=2**np.arange(3, 6)): """ Generate anchor (reference) windows by enumerating aspect ratios X scales wrt a reference (0, 0, 15, 15) window.