FPN层:
将卷积提取特征的图和(原本的图采样后)进行特征融合。因为卷积后图尺寸大小变化了,所以要进行采样(上采样:放大图片,下采样:缩小图片)
1*1卷积:
![](https://i-blog.csdnimg.cn/blog_migrate/e53019eec1028647b566f88a63dff85a.png)
可以有很多个不同数值的1*1卷积核,对图像进行卷积,得到不同的图像特征。
![](https://i-blog.csdnimg.cn/blog_migrate/efb0757fe5c6c9910851fe678ffab317.png)
就是说1*1卷积是改变原图像的通道数量,上图是将192个缩小到32个通道。
残差网络(resnet):
![](https://i-blog.csdnimg.cn/blog_migrate/4f30f7b5cb9eb45ef52d2a1a7a003de0.png)
就是说下一层是由上一层加上残差块形成的,也就是说下一层看到的是上一层的信息加上(上一层经过一些变化后的信息)的和,所以是没有什么损耗的
def res_block_v1(x,input_filter,output_filter):
res_x=Conv2D(kernel_size=(3,3),filters=output_filter,strides=1,padding='same')(x) #卷积
res_x=BatchNormalization()(res_x) #归一化
res_x=Activation('relu')(res_x) #relu激活函数
res_x=Conv2D(kernel_size=(3,3),filters=output_filter,strides=1,padding='same')(res_x) #又是一个卷积
res_x=BatchNormalization()(res_x) #又是一个归一化
if input_filter==output_filter:
identity=x
else:#需要升维或者降维
identity=Conv2D(kernel_size=(1,1),filters=output_filter,strides=1,padding='same')(x)
x=keras.layers.add([identity,res_x]) #两个直接加起来
output=Activation('relu')(x)
return output
![](https://i-blog.csdnimg.cn/blog_migrate/b78662968e36f091352147b5efbda423.png)