本篇仅为pytorch实现前的简单感性看法
什么是instance segmentation
将图片中的个体识别,并按照instance分别给出bounding box , class ,mask(掩码,实际上就是更精细的bounding box。
庞大系统的构成
按照从前向后,划分成:
resnet - fpn :
fpn 即 feature pyramid network,生成多个尺度的feature map
用于多维特征提取,尚未理解和resnet有什么联系。
据reference,左侧部分是以resenet 为骨架,并保留conv2-conv5的输出结果在内存中。
Q: 左侧是以什么为目标进行训练的,还是整个系统的网络一起训练?
右侧:
M5通过C5 11卷积得到,(256输出通道?)
M4通过M5层最近邻上采样和conv411卷积加和得到。
faster rcnn
实现特征提取,proposal提取(候选bounding box 的生成),bounding box regression ,分类任务。
特征提取
小trick:
conv层设置为 kernel_size =3 ,pad =1 ,stride =1
pooling 层设置为 kernel_size =2 ,pad =0 , stride =2
使conv输入输出为<11,11>的关系,pooling层输入输出为<22,11> 的关系,最终的feature map 则可以与原图片对应。
proposal extraction
总流程:以每一个点为中心,生成9个candidate anchors,并将所有的anchor都经过softmax后输出positive 的分数以及negative的分数,从所有的anchor中sample出一定数量的。
3*3 conv 输出通道为256,意义不清。
上方一条线:
- 1*1 卷积输出通道为18,每个点对应9个anchor,每个anchor对应两个score,positive 和negative
- reshape操作为caffe环境下配合softmax用
- softmax 怎么获得对应anchor 的评分需要看代码了就
{
bounding box regression 怎么做
对于ground truth <Gx,Gy,Gw,Gh>,以及我们获得的<Ax,Ay,Aw,Ah>
我们认为,在误差较小的情况下存在<dx,dy,dw,dh>
st.
Gx = Ax * dx(A)
Gy = Ay * dy(A)
Gw = Aw * exp (dw(A))
Gh = Ah * exp (dh(A))
d即为目标函数。
}
下方一条线,输出通道数为36, 每个点对应9个anchor,每个anchor对应<dx,dy,dw,dh>
Q: 这里的训练让d函数和目标贴合怎么处理的,softmax那里的处理也不是很明晰
proposal layer
对每一个anchor,有输入positive 以及negative 的分数,d函数。
至于输出的具体格式是什么,不甚明晰。
有大概流程的reference:
roi pooling
就是将选定的框映射成一个固定size的矩阵,这里也是maskrcnn主要的贡献点。
classification
上方利用bounding box regression 获得每个proposal的位置偏移量,获得更高精度的boundingbox。
下方利用全连接+softmax,计算每个proposal属于对应类别的概率。
训练过程是每个模块分别的,以及有pretrained module,看代码实现了
Q : 怎么把逻辑上的anchor的negative 以及positive 与网络中对应的还是一个问题。
roi align
考虑左下角5*7 square,roi pooling 的问题在于maxpooling 后会导致位置信息一定程度的丧失。
提出利用双线性插值进行sample的方法。
考虑图示 anchor (黑色线),可以预见到<x,y,w,h>都是fractional 的。我们将anchor分为fixed-size的square,每个square 内取四个点,利用双线性插值计算pixel的值,而后maxpooling。
系统整合
resnet -fpn + fast rcnn (不含rolpooling 后面的部分)
将P5经stride =2 的maxpooling 得到的p6作为输入进入fast rcnn 为使得anchor具有最大尺度。
而对应于不同尺度的proposal ,我们使用不同层级的p作为后续输入
rol pooling 以后
loss mask 采用交叉熵算法。
具体训练细节明天再看了
随便港港
刚才大概看了一下pytorch的教程,现在的搭建神经网络显然已经模块化了,明天争取把代码啃完吧,最近ddl还很多,疫情期间更需要努力,务必努力。