代码理解网络选择候选区域及确定最终目标框的过程
之前小鱼在获取Faster RCNN最终候选框坐标值中介绍怎么得到最终目标框的坐标值(左上角及右下角),但是因为还需要获取最终目标框的特征向量,所以简单的以为在代码中加入:
fea=net.blobs['fc6'].dataprint fea.shape
但是结果只是达到一个1*4096维度的向量,很是郁闷,按道理最终目标框有多少个就应该会输出多少个1*4096维度的向量,所以小鱼的目标就是获取最终每个目标框的特征向量.在探究的过程中小鱼完全理清了网络如何选择候选区域和最终怎么确定目标框.
首先网络通过RPN网络得到2000个region proposals,然而并不是所有的都送入Fast RCNN进行分类和位置进修,而是通过去重叠和去边缘无效候选框等操作,得到前300个score 最高(已经从大到小进行排序过)的region proposals送入Fast RCNN.代码为~/py-faster-rcnn/tools/demo.py中:
dets = np.hstack((cls_boxes,cls_scores[:, np.newaxis])).astype(np.float32)
这里可以加入:print dets.shape
来查看dets的维度进行验证.
接着对这300个region proposals进行NMS非极大值抑制操作,又可以滤掉一部分region proposals,实现的代码是~/py-faster-rcnn/tools/demo.py中:
keep = nms(dets, NMS_THRESH)dets = dets[keep, :]
keep为结果NMS操作之后剩下来的region proposals序列号,属于[0-299]
数字之间,再跳过dets[keep,:]就得到dets数组中序号为keep那一行的数组[x1,x2,x3,x4,score].比如这里通过NMS操作之后剩下93个候选框,这些候选框的score值已经进行排序.
最后,对这剩下的93个候选框进行阈值判断,也就是对score进行判断,大于某个阈值就判定是有效正样本并保留为最终候选框.实现的代码是~/py-faster-rcnn/tools/demo.py中:
inds = np.where(dets[:, -1] >= thresh)[0]
inds为最终比较完阈值剩下的目标框总数,假设这里为23,就表示最终可以进行可视化显示的bounding box为23个.
这里的各种变换有点绕,希望小鱼这篇博客对大家有帮助,有问题可以进行留言相互讨论,喜欢留个赞哦,谢谢.
代码理解网络选择候选区域及确定最终目标框的过程相关推荐
- 透彻理解RPN: 从候选区域搜索到候选区域提取网络
在目标检测.目标跟踪领域,提取region proposal都是最基本环节.本文概述了从 sliding window 到 selective search, 然后升级到 region proposa ...
- YOLOv3学习——锚框和候选区域
YOLOv3学习之锚框和候选区域 单阶段目标检测模型YOLOv3 R-CNN系列算法需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法.近几年,很多研究人员相继提 ...
- 论文理解 R-FCN:基于区域的全卷积网络来检测物体
本文转载自: http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为"R-FCN: Object Detection v ...
- 『TensorFlow』通过代码理解gan网络_中
『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 上篇是一个尝试生成minist手写体数据的简单GAN网络,之前有介绍过,图片维度是28*28*1,生成器的上采样使 ...
- 选择邻近区域时: 代码操作与实际EXCEL键盘操作的区别 Currentregion与CTRL+A的区别, 又存在于,比如第一行有数据(合并单元格), 第二行为空, 第三行往下有数据, 第一行选中其中
选择邻近区域时: 代码操作与实际EXCEL键盘操作的区别 Currentregion与CTRL+A的区别, 又存在于,比如第一行有数据(合并单元格), 第二行为空, 第三行往下有数据, 第一行选中其中 ...
- R-CNN算法学习(步骤一:候选区域生成)
R-CNN算法学习(步骤一:候选区域生成) 论文链接:https://arxiv.org/abs/1311.2524 源码链接:https://github.com/rbgirshick/rcnn 算 ...
- Learning to Adapt Invariance in Memory for Person Re-identification文章阅读解析及代码理解
Learning to Adapt Invariance in Memory for Person Re-identification文章阅读解析 Abstract INTRODUCTION THE ...
- 3.10 候选区域-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 3.9 YOLO 算法 回到目录 3.11 总结 候选区域 (Region proposals) 如果你们阅读一下对象检测的文献,可能会看到一组概念,所谓的候选区域,这在计算 ...
- 【python爬虫 系列】1.理解网络爬虫
第一节:理解网络爬虫 1.1网络爬虫的定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序.另外一些不常使用的名字还有 ...
最新文章
- egret 开发总结
- beaglebone black 联网
- C++ std::move()和完美转发
- IntelliJ IDEA 2020 数据库连接Oracle和Mysql
- Shell脚本实现每个工作日定时执行指定程序
- hdu-2717(基础搜索bfs)
- java canvas 画圆_java – 如何在Android中通过canvas绘制圆?
- javascript中打印对象显示[object object]_扒一扒JavaScript中不常见的一些object
- [转载] 生成对角矩阵 numpy.diag
- 摄像头网络信号测试软件,工程宝如何测试摄像机
- iOS经典讲解之Socket使用教程
- 桌面显卡天梯图和桌面cpu天梯图
- 使用docker 搭建 ceph 开发环境,使用aws sdk 存储数据
- 猫咪藏在哪个房间python作业_猫咪生气躲进房间,众人找到后,猫咪一脸疑问:听说你们在找我...
- 拿图就走系列之《深入理解java虚拟机》
- 如何解决水平越权(横向越权)和纵向越权
- 多篇用DL做Semantic Segmentation的文章总结
- 2023,数字政务潮水已至
- html a3纸大小,a0-a3纸的尺寸具体大小介绍【图文】
- Python图像库Pillow (PIL) 入门