实例分割相关算法
实例分割可以在完成目标检测的同时进行语义分割。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ad1An4Cp-1667995798391)(C:\Users\15333\AppData\Roaming\Typora\typora-user-images\image-20221107201759213.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fxxg278B-1667995798392)(C:\Users\15333\AppData\Roaming\Typora\typora-user-images\image-20221107202547239.png)]
目标检测可以区分个体但是不够精确,语义分割可以划分像素点但是不可以区分个体(dog1,dog2…)
一、Mask R—CNN
1、预测部分
(1)ResNet101主干特征提取网络
conv Block:改变网络维度(输入输出维度不同)残差边上有卷积,可以设置步长和通道数从而改变维度。
Identity Block:不断串联加深网络(输入输出纬度相同)残差边上无卷积,无法改变。
以官方使用的coco数据集输入的shape为例,输入的shape为1024x1024,shape变化如下:
(2)特征金字塔FPN
在Mask R-CNN当中,取出在主干特征提取网络中长宽压缩了两次C2、三次C3、四次C4、五次C5的结果来进行特征金字塔结构的构造。
提取到的P2、P3、P4、P5、P6可以作为RPN网络的有效特征层(下图中绿色部分),利用RPN建议框网络对有效特征层进行下一步的操作,对先验框进行解码获得建议框。
# 获得四个有效特征层
# 当输入进来的图片是1024,1024,3的时候
# C2为256,256,256
# C3为128,128,512
# C4为64,64,1024
# C5为32,32,2048
#----------------------------------------------#
_, C2, C3, C4, C5 = get_resnet(input_image, train_bn=config.TRAIN_BN)
#----------------------------------------------#
# 组合成特征金字塔的结构
# P5长宽共压缩了5次
# P5为32,32,256
#----------------------------------------------#
P5 = Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (1, 1), name='fpn_c5p5')(C5)
#----------------------------------------------#
# 将P5上采样和P4进行相加
# P4长宽共压缩了4次
# P4为64,64,256
#----------------------------------------------#
P4 = Add(name="fpn_p4add")([
UpSampling2D(size=(2, 2), name="fpn_p5upsampled")(P5),
Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (1, 1), name='fpn_c4p4')(C4