目标检测群703346870昨天进行了激烈的讨论。聊天记录如下。个人的见解将在群中公布。
轻指谈笑红尘 2020/6/1 星期一 18:51:27
群主,我有个问题不是很明白,最开始的rcnn是在原图上选择性搜索得到roi ,然后对每个roi进行卷积得到目标位置,可是这样速度太慢。后来spp把roi映射到特征图上去,就避免了每一个roi都需要卷积,后来的两阶段目标检测一直保持这一做法,我不明白的是,特征图上的每一个值都是由原图所有像素点信息共同决定的,在特征图上进行roi感觉意义不大,yolo系列并没有这一步骤感觉结果也不差,后来有的fpn层感觉最大的意义也就是使用nms平衡一样正负样本,我个人感觉不需要roi也可,从这个角度理解,感觉两阶段有点多余,不知道你怎么看?如果理解有误,请多多指教
スクルージ 2020/6/1 星期一 19:03:12
轻指谈笑红尘 群主,我有个问题不是很明白,最开始的rcnn是在原图上选择性搜索得到roi ,然后对每个roi进行卷积得到目标位置,可是这样速度太慢。后来spp把roi映射到特征图上去,就避免了每一个roi都需要卷积,后来的两阶段目标检测一直保持这一做法,我不明白的是,特征图上的每一个值都是由原图所有像素点信息共同决定的,在特征图上进行roi感觉意义不大,yolo系列并没有这一步骤感觉结果也不差,后来有的fpn层感觉最大的意义也就是使用nms平衡一样正负样本,我个人感觉不需要roi也可,从这个角度理解,感觉两阶段有点多余,不知道你怎么看?如果理解有误,请多多指教
@轻指谈笑红尘 首先FPN这个我感觉和你不太一样
スクルージ 2020/6/1 星期一 19:03:27
FPN我是觉得是为了不同大小目标在同一场景都能被检测
スクルージ 2020/6/1 星期一 19:03:43
比如说你RPN的锚框如果太大 目标小 IoU就会太小
スクルージ 2020/6/1 星期一 19:04:06
反过来RPN锚框小了目标大IoU也会变小
スクルージ 2020/6/1 星期一 19:04:23
FPN是为了配合锚框去适应不同大小目标来整的
スクルージ 2020/6/1 星期一 19:05:04
第二代用ROI池化个人觉得就是加速 还有就是目标之间的相对位置信息
スクルージ 2020/6/1 星期一 19:05:14
不过我也是业余的 抛砖引玉
スクルージ 2020/6/1 星期一 19:05:18
スクルージ 2020/6/1 星期一 19:06:20
[ 群聊的聊天记录 ]
轻指谈笑红尘 2020/6/1 星期一 19:06:47
我写的时候笔误
轻指谈笑红尘 2020/6/1 星期一 19:07:01
rpn,不是fpn
轻指谈笑红尘 2020/6/1 星期一 19:07:11
区域提议网络
轻指谈笑红尘 2020/6/1 星期一 19:07:39
fpn当然是用来处理多尺度的,这点没什么问题
轻指谈笑红尘 2020/6/1 星期一 19:08:18
感觉rpn意义不大
スクルージ 2020/6/1 星期一 19:08:30
RPN的意义是代替SS
スクルージ 2020/6/1 星期一 19:08:33
你说的没错
スクルージ 2020/6/1 星期一 19:08:41
我最近复现也是一开始跳过RPN
スクルージ 2020/6/1 星期一 19:08:45
全程都用SS
スクルージ 2020/6/1 星期一 19:09:07
RPN个人认为意义是可以针对同一类图给出针对性的ROI
轻指谈笑红尘 2020/6/1 星期一 19:09:11
但是我觉得roi意义也不大
スクルージ 2020/6/1 星期一 19:09:16
SS毕竟是无监督的
スクルージ 2020/6/1 星期一 19:09:19
针对性不强
スクルージ 2020/6/1 星期一 19:09:40
而且我做过对比 SS差不多300个ROI有50个正样本
スクルージ 2020/6/1 星期一 19:09:55
RPN经过训练 正样本的浓度会高很多
スクルージ 2020/6/1 星期一 19:10:16
而二段式前向预测是循环对ROI切出来的小图做分类
轻指谈笑红尘 2020/6/1 星期一 19:10:26
对啊,所以我说rpn最大的意义可能就是平衡下正负样本
スクルージ 2020/6/1 星期一 19:10:37
如果你能循环更少次数得到更多正样本 那么实际应用时速度会更快
轻指谈笑红尘 2020/6/1 星期一 19:10:45
但是rpn最初是用来提roi的
スクルージ 2020/6/1 星期一 19:10:59
我是把这个当作升级版SS
スクルージ 2020/6/1 星期一 19:11:04
轻指谈笑红尘 2020/6/1 星期一 19:11:11
感觉roi在特征图上没啥意义呀
轻指谈笑红尘 2020/6/1 星期一 19:11:32
最初的rcnn roi在原图上
スクルージ 2020/6/1 星期一 19:11:33
提原图就要每个小图走一遍特征提取了
スクルージ 2020/6/1 星期一 19:11:35
是
スクルージ 2020/6/1 星期一 19:11:42
这样肯定慢
轻指谈笑红尘 2020/6/1 星期一 19:11:55
还可以说是去除背景,但是这样就比较有意义
轻指谈笑红尘 2020/6/1 星期一 19:12:02
roi 在特征图上
スクルージ 2020/6/1 星期一 19:12:03
是是是
スクルージ 2020/6/1 星期一 19:12:07
有这个好处
轻指谈笑红尘 2020/6/1 星期一 19:12:13
我知道快
スクルージ 2020/6/1 星期一 19:12:28
ROI池化是多个ROI一起训练的
スクルージ 2020/6/1 星期一 19:12:40
这样互相之间的关系也能学习到
轻指谈笑红尘 2020/6/1 星期一 19:13:46
但是我就是感觉特征图上的roi跟原图没什么关系了
スクルージ 2020/6/1 星期一 19:14:27
?
轻指谈笑红尘 2020/6/1 星期一 19:14:28
roi可不可以理解为认为这个图像中物体的信息都在这个区域内
スクルージ 2020/6/1 星期一 19:14:33
对
スクルージ 2020/6/1 星期一 19:14:41
特征图那块就是原图的那快
スクルージ 2020/6/1 星期一 19:14:43
块
スクルージ 2020/6/1 星期一 19:14:49
卷积有不变性
スクルージ 2020/6/1 星期一 19:15:23
https://www.cnblogs.com/Terrypython/p/11147490.html
轻指谈笑红尘 2020/6/1 星期一 19:15:27
卷积具有稀疏交互性
スクルージ 2020/6/1 星期一 19:15:50
这就不太清楚了。。。我是最近才开始的
轻指谈笑红尘 2020/6/1 星期一 19:15:56
特征图上那一块信息仍然是整个图共同决定
スクルージ 2020/6/1 星期一 19:16:01
?
スクルージ 2020/6/1 星期一 19:16:04
不是吧
スクルージ 2020/6/1 星期一 19:16:24
我记得MNIST范例的特征图看到的还是有对应轮廓
轻指谈笑红尘 2020/6/1 星期一 19:17:19
浅层的还好,深层的就不行了。3×3卷积核表明下一层的一个像素由上一层3个决定
轻指谈笑红尘 2020/6/1 星期一 19:17:30
像rcnn网络这么深
轻指谈笑红尘 2020/6/1 星期一 19:17:50
roi区域的信息照样由整张图决定
スクルージ 2020/6/1 星期一 19:17:57
是啊 ,所以用的ROI是归一化的
スクルージ 2020/6/1 星期一 19:18:01
你原图224*224
スクルージ 2020/6/1 星期一 19:18:05
卷积到2*2
スクルージ 2020/6/1 星期一 19:18:11
ROI是(112,112)
スクルージ 2020/6/1 星期一 19:18:17
对应(1,1)
スクルージ 2020/6/1 星期一 19:18:23
(0,0,112,112)
スクルージ 2020/6/1 星期一 19:18:31
对应到(0,0,1,1)
スクルージ 2020/6/1 星期一 19:19:00
你可以说最后特征层左上角的像素对应原图(0,0,112,112)区域的内容
轻指谈笑红尘 2020/6/1 星期一 19:19:35
感觉也只能这样理解了
轻指谈笑红尘 2020/6/1 星期一 19:19:53
虽然在特征图上提取roi区域
轻指谈笑红尘 2020/6/1 星期一 19:20:05
并不能像原图中那样去掉背景
轻指谈笑红尘 2020/6/1 星期一 19:20:34
但是特征图上这个roi毕竟包含原图那一部分所有信息
スクルージ 2020/6/1 星期一 19:20:39
我复现了ROI池化但是最后没用上
轻指谈笑红尘 2020/6/1 星期一 19:20:41
且速度更快
スクルージ 2020/6/1 星期一 19:20:49
因为不知道为啥会影响收敛结果
スクルージ 2020/6/1 星期一 19:20:55
所以我这里算是失败了
スクルージ 2020/6/1 星期一 19:21:04
我也不清楚实际的ROI池化有啥好处
轻指谈笑红尘 2020/6/1 星期一 19:21:34
一阶段实际就没有这个步骤
スクルージ 2020/6/1 星期一 19:21:47
是啊
轻指谈笑红尘 2020/6/1 星期一 19:21:56
但是毕竟是何凯明提出的,感觉也很少有人分析这个问题
スクルージ 2020/6/1 星期一 19:22:00
这个在RCNN系列是第二代才有的
fasterrcnn 2020/6/1 星期一 19:37:30
ROI不是归一化proposal的吗?
スクルージ 2020/6/1 星期一 19:37:43
???
スクルージ 2020/6/1 星期一 19:37:57
哦对了
スクルージ 2020/6/1 星期一 19:38:00
我的电脑不行
スクルージ 2020/6/1 星期一 19:38:05
跑不了ResNet
スクルージ 2020/6/1 星期一 19:38:13
一直都用VGG16作为骨干网络
fasterrcnn 2020/6/1 星期一 19:38:18
RPN出来的proposal尺寸不一啊
スクルージ 2020/6/1 星期一 19:38:21
所以里面高宽维度我都是固定的
スクルージ 2020/6/1 星期一 19:38:28
当然不一样
スクルージ 2020/6/1 星期一 19:38:33
???
スクルージ 2020/6/1 星期一 19:38:47
RPN实际不是直接给proposal
スクルージ 2020/6/1 星期一 19:38:59
它给的是正样本锚框的偏移量
fasterrcnn 2020/6/1 星期一 19:39:12
是啊
fasterrcnn撤回了一条消息
スクルージ 2020/6/1 星期一 19:39:25
我没理解归一化的意思
スクルージ 2020/6/1 星期一 19:39:29
fasterrcnn 2020/6/1 星期一 19:40:06
后面进行分类不是用的全连接?
スクルージ 2020/6/1 星期一 19:40:54
?
轻指谈笑红尘 2020/6/1 星期一 19:40:54
那个roi pooling
スクルージ 2020/6/1 星期一 19:40:57
哦哦哦
スクルージ 2020/6/1 星期一 19:40:58
你是说
スクルージ 2020/6/1 星期一 19:41:01
定维
スクルージ 2020/6/1 星期一 19:41:02
是吗
スクルージ 2020/6/1 星期一 19:41:06
固定维度
スクルージ 2020/6/1 星期一 19:41:16
让不同ROI用固定的维度输出?
fasterrcnn 2020/6/1 星期一 19:41:21
把proposal变成7×7或者14×14
轻指谈笑红尘 2020/6/1 星期一 19:41:23
我们讨论的是roi 本身的意义
fasterrcnn 2020/6/1 星期一 19:41:23
还有其他的地方用了roi?
スクルージ 2020/6/1 星期一 19:41:36
ROI的意思是感兴趣的区域
スクルージ 2020/6/1 星期一 19:41:42
你可能指的是ROI池化
スクルージ 2020/6/1 星期一 19:41:47
fasterrcnn 2020/6/1 星期一 19:42:29
后面的也就这里用到了roi吧,还有其他用了?
スクルージ 2020/6/1 星期一 19:42:29
对了 有么有老哥复现了靠谱的ROI池化 TF能用的?
スクルージ 2020/6/1 星期一 19:42:47
fasterrcnn
@fasterrcnn 你说用到是指那个ROI池化还是这个坐标
スクルージ 2020/6/1 星期一 19:43:04
如果没记错 完整版的最后边框还回归了一次
スクルージ 2020/6/1 星期一 19:43:12
我反正是没写这个
スクルージ 2020/6/1 星期一 19:43:19
我连NMS都没写
スクルージ 2020/6/1 星期一 19:43:24
fasterrcnn 2020/6/1 星期一 19:43:28
额,我回去看看
スクルージ 2020/6/1 星期一 19:43:51
我思路比较简单,RPN辛辛苦苦算出来的ROI,你还要改?
スクルージ 2020/6/1 星期一 19:43:56
スクルージ 2020/6/1 星期一 19:44:33
最近我搞了一个RPN+FPN的玩意
fasterrcnn 2020/6/1 星期一 19:44:36
对呀,我就记得RPN出来的就是了
スクルージ 2020/6/1 星期一 19:44:45
スクルージ 2020/6/1 星期一 19:44:51
这玩意我正愁怎么训练
fasterrcnn 2020/6/1 星期一 19:45:03
后面就是计算矫正了
スクルージ 2020/6/1 星期一 19:45:19
按道理三个输出都有对应的anchors和dxdydwdh