RefineDet算法笔记
---恢复内容开始---
一、创新点
针对two-stage的速度慢以及one-stage精度不足提出的方法,refinedet 包括三个核心部分:使用TCB来转换ARM的特征,送入ODM中进行检测;
两步级连回归;过滤较多的负样本(容易分类的,类似于ohem)。
(1)anchor refine module 和object detect module。前者类似于rpn,用于剔除过多的负样本和粗略调整anchor位置和尺寸(都是二分类);后者
将refine过的anchor进行进一步的微调(感觉跟two stage很像,为什么能快呢?)。整体结构如下图
图1
(2)在两个部分之间,设计了一个transfor connection block(TCB),如下图。TCB包括两个功能,一是转换ARM的特征,另一个是转换不同层的特征, 使用deconv来扩大特征,
用于后续特征的 element sum 。这一部分更新是FPN,融合多层特征。
图2
---恢复内容结束---
(3)ODM
两步级连回归,有利于小物体检测。先使用ARM生成refined anchors boxes,再将其输入ODM再次回归和分类。此外还包括负样本过滤:当负样本的置信值超过阈值时直接丢弃。
总的来看, 该网络融合了one-stage 和 two-stage的特点,在ARM阶段生成先refined anchor box(类似于RPN), 在ODM,一方面输入refined anchor,另一方面融合多层特征(类似FPN)。
(4) loss
损失函数包括ARM loss 和 ODM loss,对于ARM,包括cross-entropy(二分类)和smoth-L1。对于ODM,则是softmax-loss和smoth-L1
(5)实验
结果还是挺不错的,在精度上,即使是320×320, mAP也能上80;速度很有优势,在500*500这一级别上,仅次于yolov2。
参考:https://blog.csdn.net/u014380165/article/details/79502308
(7)网络结构
以vgg16 320*320为例,主干网络的conv4_3(512*40*40),conv5_3 (512*20*20), fc7(1024*10*10), conv6_2(512*5*5)分别对应图1的主干网络四个特征图,用这四个特征图
1、每个特征图分别生成mbox_loc、mbox_conf、mbox_priorbox, 并通过concat操作,得到ARM相关的arm_priorbox、arm_loc、arm_conf
2、
RefineDet算法笔记的更多相关文章
- 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...
- 算法笔记--数位dp
算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置. 模板: ]; ...
- 算法笔记--lca倍增算法
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int ...
- 算法笔记--STL中的各种遍历及查找(待增)
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); whil ...
- 算法笔记--priority_queue
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int&g ...
- 算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/l ...
- 算法笔记——C/C++语言基础篇(已完结)
开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引 ...
- 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...
- 算法笔记(c++)--回文
算法笔记(c++)--回文 #include<iostream> #include<algorithm> #include<vector> using namesp ...
随机推荐
- [C++]PAT乙级1010. 一元多项式求导 (25/25)
/* 1010. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:x^n(n为整数)的一阶导数为n*x^n-1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1 ...
- python2 编码与解码
#!coding: utf-8 s = "特斯拉" s_to_unicode = s.decode("utf-8") unicode_to_gbk = s_to ...
- LinkedHashMap实现LRU缓存算法
LinkedHashMap的get()方法除了返回元素之外还可以把被访问的元素放到链表的底端,这样一来每次顶端的元素就是remove的元素. 构造函数如下: public LinkedHashMap ...
- WIN10配置MongoDB
WIN10配置MongoDB 1. 下载 [MongoDB 官网下载链接](https://www.mongodb.com/download-center?jmp=nav#community) 2. ...
- 如何快速上手一个新技术之vue学习经验
碰到紧急项目挪别人的vue项目过来直接改,但是vue是18年初看过一遍,18年底再来用,早就忘到九霄云外了,结果丢脸的从打开vue开始学,虽然之前在有道云笔记做了很多记录,然后没有系统整理.所以借这次 ...
- kotlin中“==”和“===”的区别
code 1 fun main(args: Array<String>) { val a : Int = 1000 println(a == a) //true println(a === ...
- stega -- Pcat老入群题
stega -- Pcat老入群题 Pcat师傅的题果然给力,就是看着wp也是琢磨了半天. WP地址:http://mp.weixin.qq.com/s/T9jJLACiZNB6FR226IjmEA ...
- DeepLearning.ai-Week4-Face Recognition for the Happy House
1 - Task Implement the triplet loss function Use a pretrained model to map face images into 128-dime ...
- 20165234 《Java程序设计》第三周学习总结
第三周学习总结 教材学习内容总结 第四章 编程语言的几个发展阶段: 面向机器语言 面向过程语言 面向对象语言 类 1. 类声明: class People { ... } class 动物 { ... ...
- 无法修改linux/ubuntu密码(Authentication token manipulation error )问题解决过程【转】
转自:https://blog.csdn.net/caizi001/article/details/38659189 Vmware虚拟机里的ubunut系统长期不用,密码忘记了,无奈只能通过slax ...