交叉熵函数
交叉熵函数定义:
两个分段函数画出来如下:
focal loss:目的是通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本
SE模块
先将通道压缩,然后膨胀。参考链接。
- Squeeze: 沿着空间维度进行特征压缩,将每个二维的特征通道变成一个数,是具有全局的感受野。
- Excitation: 每个特征通道生成一个权重,用来代表该特征通道的重要程度。
- Reweight:将Excitation输出的权重看做每个特征通道的重要性,通过相乘的方式作用于每一个通道上
import numpy as np
import torch
import torch.nn as nn
import torch.functional as F
import ipdb
class SE_Block(nn.Module):
def __init__(self, ch_in, reduction=16):
super(SE_Block, self).__init__()
self.avg_pool = nn.AdaptiveAvgPool2d(1) # 全局自适应池化
self.fc = nn.Sequential(
nn.Linear(ch_in, ch_in // reduction, bias=False),
nn.ReLU(inplace=True),
nn.Linear(ch_in // reduction, ch_in, bias=False),
nn.Sigmoid()
)
def forward(self, x):
b, c, _, _ = x.size()
y = self.avg_pool(x).view(b, c) # squeeze操作
y = self.fc(y).view(b, c, 1, 1) # FC获取通道注意力权重,是具有全局信息的
return x * y.expand_as(x) # 注意力作用每一个通道上
def test_net():
ch_in = 32
xx = torch.randn((1, ch_in, 7, 7)).float()
se = SE_Block(ch_in)
yy = se(xx)
print(yy.shape)
if __name__ == '__main__':
test_net()
人脸识别指标
- TPR
True Positive Rate. 预测为正的正样本数/实际正样本数 - FAR
False Accept Rate. 预测为正的负样本数/实际负样本数