Title: Person re-identifcation by multi-channel parts-based cnn with improved triplet loss function
Authors: De Cheng, Yihong Gong, Sanping Zhou, Jinjun Wang, Nanning Zheng
Affiliations: Institute of Artificial Intelligence and Robotics, Xi’an Jiaotong University,Xi’an, Shaanxi, P.R. China
Contribution
- 好像之前的文章都是孪生网络,这篇文章第一次引入了triplet framework,设计了一种网络使得输入三张图像而非两张
- 对人脸识别领域的triplet loss function进行改进,使得更适用于person reid问题
- 在多个数据集上都达到了state-of-the-art performance
具体方法
网络输入不再是两张图像,而是三张图像。对于第i个输入的图像组,记做$I_i=<I_{i}^{o},I_{i}^{+},I_{i}^{-}>$。其中,$I_{i}^{o}$和$I_{i}^{+}$是同一个人,而$I_{i}^{-}$是不同的人。
网络结构
总体的网络结构如下:三张图像分别输入一个参数共享的CNN,得到三个feature。再利用triplet loss function,使得正样本对$I_{i}^{o}$和$I_{i}^{+}$特征间的距离变小,$I_{i}^{o}$和$I_{i}^{-}$特征间的距离变大。
对于特征提取的CNN,结构如下:
对于$250 imes 100$的图像,数据增强后得到$230 imes 80$大小。进入网络后先经过global convolutional layer(G-conv1)进行卷积操作。接着有五个通道:4个是分成的水平条带${P_i,i=1,...,4}$经过卷积层(无池化)和FC层得到的特征向量$P_i-fc,i=1,...,4}$,是局部特征学习;最后一个是对G-conv1做pooling和卷积操作,得到全局特征$B-fc$。最后将5个特征向量concatenate成一个向量。这样三张图像可以得到三个向量,用来计算triplet loss。
triplet loss function
向量的距离度量文章用的是$l_2$。
原版的triplet loss如下$$d^n(I_{i}^{o},I_{i}^{+},I_{i}^{-},w)=d(phi_w(I_{i}^{o}),phi_w(I_{i}^{+})-d(phi_w(I_{i}^{o}),phi_w(I_{i}^{-}) leq au_1$$其中,$ au_1$是负数。这样使得正样本对的特征距离小于负样本对,并且该差值需大于阈值$| au_1|$。但缺点是属于同一个人的instances在特征空间中可能仍然有较大的类内距离(即使小于类间距离)。
因此本文的改进是$d(phi_w(I_{i}^{o}),phi_w(I_{i}^{+})$必须小于边界值$ au_2$,并且$ au_2$要比$|tau_1|$小。即$$d^p(I_{i}^{o},I_{i}^{+},w)=d(phi_w(I_{i}^{o}),phi_w(I_{i}^{+}) leq au_2$$
总结,triplet loss function定义如下:$$L(I,W)=frac{1}{N} sum_{i=1}^N (underbrace{max{{d^n(I_{i}^{o},I_{i}^{+},I_{i}^{-},w), au_1}}}_{inter-class-constrain}+underbrace{eta max{{d^p(I_{i}^{o},I_{i}^{+},w),} au_2}}_{intra-class-constrain})$$
实验
作者做了几组实验来验证2个创新点有效:
- $OursT$: 仅保留global channel和最初的loss function
- $OursTC$: 在$OursT$的基础上用了改进的triplet loss function
- $OursTP$:多通道的网络和最初的triplet loss function
- $OursTPC$:多通道的网络结构和改进的triplet loss function
训练小数据集和大数据集时网络结构稍有变化(卷积层数)