Backto DL CV
深度学习架构往往有固定的输入表示格式(reprensentation), 原始图像往往难以直接满足 model 的胃口。这就需要对原始图像做预处理,使得图像标准化,方便通用处理。比如,使得图像中的像素都在相同并且合理的范围内 [ 0 , 1 ] o r [ − 1 , 1 ] [0,1] or [-1,1] [0,1]or[−1,1], 或者是把图像 resize 到标准尺寸。
对比度指的是图像中亮像素和暗像素之间的差异的大小,对比度是能够安全移除的最为明显的变化源之一。在 DL 中,contrast 指的是图像或图像区域中像素的标准差。假设一张用 tensor 表示的图像 X ∈ R r × c × 3 X \in R^{r \times c \times 3} X∈Rr×c×3, 其中 X i , j , 1 / 2 / 3 X_{i,j, 1/2/3} Xi,j,1/2/3 分别代表第 i i i row, 第 j j j col, Red/Green/Blue 的强度。那么整个图像的contrast 就是 I c o n t r a s t = 1 3 r c ∑ i = 1 r ∑ j = 1 c ∑ k = 1 3 ( X i , j , k − X ˉ ) 2 I_{contrast} = \sqrt{\frac 1 {3rc} \sum_{i=1}^r\sum_{j=1}^c\sum_{k=1}^3(X_{i,j,k} - \bar X)^2} Icontrast=3rc1i=1∑rj=1∑ck=1∑3(Xi,j,k−Xˉ)2, 其中 X ˉ \bar X Xˉ 是整张图像的平均强度, X ˉ = 1 3 r c ∑ i = 1 r ∑ j = 1 c ∑ k = 1 3 X i , j , k \bar X =\frac 1 {3rc} \sum_{i=1}^r\sum_{j=1}^c\sum_{k=1}^3X_{i,j,k} Xˉ=3rc1i=1∑rj=1∑ck=1∑3Xi,j,k
对比度归一化(contrast normalization), 分为两种,全局对比度归一化(global contrast normalization, GCN) 和 局部对比度归一化(local contrast normalization, LCN).以下逐个分析:
GCN 旨在通过从每个图像中减去其平均值,然后重新缩放使得其像素上的标准差等于某个常数 s s s 来防治图像具有变化的对比度。但是,对于contrast=0 的图像(所有像素强度相等),就会有除以 0 0 0 的风险。所以,引入参数 λ \lambda λ 和 ϵ \epsilon ϵ 来平衡和约束 归一化。给定一个输入图像 X X X, GCN 后的图像 X ′ X' X′ 定义为 X i , j , k ′ = s X i , j , k − X ˉ max ( ϵ , λ + 1 3 r c ∑ r ∑ c ∑ k ( X i , j , k − X ˉ ) 2 ) X'_{i,j,k} = s \frac {X_{i,j,k} - \bar X}{\max {(\epsilon,\sqrt{ \lambda + \frac 1 {3rc}{\sum_r\sum_c\sum_k(X_{i,j,k} - \bar X)^2}})}} Xi,j,k′=smax(ϵ,λ+3rc1∑r∑c∑k(Xi,j,k−Xˉ)2)Xi,j,k−Xˉ.
对于参数的设定,需要考虑实际场景。如果是大图像原始数据集,contrast = 0 的概率微乎其微,因此把 λ = 0 , ϵ = 1 0 − 8 \lambda = 0,\epsilon = 10^{-8} λ=0,ϵ=10−8 这样是可行的, Goodfellow et al.(2013c) 在 CIFAR-10 数据集上使用的。
但是对于裁剪的非常小的图像集,contrast=0 的概率就高很多了。因此,需要采用更激进的正则化。比如, λ = 10 , ϵ = 0 \lambda =10,\epsilon = 0 λ=10,ϵ=0, Coates et al.(2011)使用。
尺度参数 s s s 通常可以设置为 1 1 1.
我们可以把 GCN 理解成到球壳的一种映射,
这可能是一个很好的属性,因为神经网络往往更好地响应空间方向,而不是精确的位置,响应相同方向上的多个距离需要具有共线权重向量但具有不同bias的隐藏单元。GCN采用一个在相似的距离上,一个样本一个方向的方式满足了这个特性。
#LCN: Local Contrast Normalization
GCN 常常不能突出我们想要突出的图像特征,比如边缘和角。如果我们有一个场景,包含一个大的黑暗区域和一个大的明亮区域(例如一个广场有一半的区域处于建筑物的阴影中),则 GCN 只能确保暗、亮两个区域的交界处存在大的差异,却无法确保暗区内的边缘突出。
这催生了 LCN。LCN确保对比度在每个小窗口上被归一化,而不是作为图像整体被归一化。从效果上看,LCN 更大程度的改变了图像,丢弃了所有相同强度的区域,只突出边缘。但同时可能会丢失一些比较浅的纹理(阴影中的屋顶)。
LCN 有各种策略来实现:
编程实现上,LCN 通常可以采用可分离卷积来计算特征映射的局部平均值和局部标准差,然后在不同的特征映射上使用逐元素的减法和除法。
参数选择上,局部采样,导致出现 contrast=0 的几率很大,所以倾向于选择较大的 λ \lambda λ 值。
LCN 是一个可微的操作,除了用在输入图像的预处理以外,还可以用在隐藏层中用于特征的非线性选择。它会迫使在 feature map中的相邻特征进行局部竞争,还会迫使在不同feature maps的同一空间位置的特征进行竞争
LCN 最早出自这篇 paper
K. Jarrett, K. Kavukcuoglu, M. Ranzato, and Y. LeCun. What is the best multi-stage architecture for object recognition? In ICCV, 2009