PAMTRI:結合仿真數據+姿態信息的車輛ReID算法


標題:PAMTRI: Pose-Aware Multi-Task Learning for Vehicle Re-Identification Using Highly Randomized Synthetic Data
地址:
https://openaccess.thecvf.com/content_ICCV_2019/papers/Tang_PAMTRI_Pose-Aware_Multi-Task_Learning_for_
Vehicle_Re-Identification_Using_Highly_Randomized_ICCV_2019_paper.pdf
作者&單位:
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖1

01

研究動機
車輛重識別(Vehicle ReID)在智慧城市等方向有著廣泛的應用前景,不過相比它的“同胞兄弟”行人重識別(Person ReID),車輛ReID獲得的關注要少得多——一方面是因為標注人體的數據要遠多于車輛的標注數據,另一方面是因為車輛ReID問題面臨“類間差異小,類內差異大”的挑戰,任務難度大。為了直觀地體現出車輛重識別任務中這個難點,作者選取了行人重識別數據集Market1501和車輛重識別數據集CityFlow-ReID用作分析:用經過ImageNet預訓練的GoogLeNet分別提取這兩個數據集的樣本的特征,計算類內和類間特征的方差之比(基于歐式特征空間),發現Market1501是0.921,小于CityFlow-ReID的0.946——車輛重識別任務相比行人重識別,面臨著更嚴峻的“類間差異小,類內差異大”的挑戰。
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖2
圖1
同樣是重識別問題,在算法上是否有通用性呢?之前有研究發現,直接把行人重識別的算法套用在車輛重識別數據集上,算法的性能并沒有達到其在行人數據集上的水準。作者認為,這是由于兩個任務有著不同的難點造成的,車輛重識別的一個關鍵點在于提取對視角魯棒的圖片特征,尤其是對車輛的姿態信息、顏色、車型要有魯棒性(如圖1所示)。提高模型魯棒性的一大絕招,在于構建大規模數據集用于訓練。作者由此想到,用仿真程序來擴充訓練數據。
如果通過“前景+背景”的方式制造仿真圖片,那么背景圖就是類似真實場景的圖片,前景則通過三維的車輛CAD模型的二維投影+不同顏色、視角、光照等的變化來生成。在生成仿真圖片的同時,我們很容易獲取車輛的顏色、姿態、車型等多個維度的信息,能否用上這些信息來提升ReID模型的性能呢?作者由此提出了一個Multi-task learning的框架,結合多維度信息來提升模型的性能。


02

算法研讀
先瞅一眼本文方法的流程圖(如圖2所示):
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖3
圖2
我認為,本文的創新點主要在于構建仿真數據集多任務學習框架這兩點。
構建仿真數據集
作者采用了domain randomization的思想來制作仿真數據。作者使用UnReal4 + NVIDIA Deep learning Dataset Synthesizer(NDDS)(https://github.com/NVIDIA/Dataset_Synthesizer)插件作為工具進行制作,具體信息如下:
  • 圖片背景:背景圖片來自于CityFlow視頻數據。
  • 三維模型:選用42個車輛的CAD模型,每個模型標注了36個關鍵點(keypiont),共有10種顏色。
  • 圖片生成:首先用Unreal4構建一個隨機的環境,然后選取背景圖片和車輛模型,設定隨機的位姿、光照,然后將三維模型投影至二維空間,再對其進行縮放、裁剪、水平翻轉、遮擋等后處理,然后生成圖片。
  • 數據集規模:每個樣本包括RGB圖片和關鍵點的坐標、朝向、顏色、類型、id編號等信息。整個數據集包含402個id,共有41000張圖片。
生成的仿真數據集隨后將和真實數據集一起用作訓練集。本文采用的數據集的規模比較表如圖3所示:
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖4
圖3
多任務學習框架
可行性分析:在設計框架之前,首先要想搞清楚一個問題:像顏色、車型、車輛姿態這些信息,究竟是否有助于主任務車輛重識別的訓練呢?
作者認為是可行的,給出的理由如下:
  1. 車輛姿態信息隱含了車輛結構信息,這部分信息是每輛車關于視角不變的特征信息,因而模型需要學習提取之;
  2. 車型的信息也和車輛ID相關(不同車型對應不同的ID);
  3. 結合車輛的關鍵點信息可以定位車輛關鍵部位的顏色信息,從而得到更準確的車輛特征屬性用于重識別。
算法概述:該算法的主干網絡架構為DenseNet,該網絡架構在車輛ReID中應用較廣。
由于仿真數據集包括關鍵點坐標、車輛顏色、型號等多維度信息,作者嘗試將這些信息都利用上來提升模型的性能,因此設計了一個多任務學習的框架。本文算法中,用于訓練的信息渠道包括車輛顏色(color)、型號(type)、id和關鍵點坐標,其中顏色和型號的標簽各自在主干網絡輸出的特征后接一個head(線性層+ReLU+線性層),并用交叉熵損失用來訓練:
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖5
id的標簽則采用了分類損失和度量學習中距離度量的損失hard-mining triplet loss用于訓練,其中  PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖6  表示距離邊際參數,  PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖7  、  PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖8  表示候選樣本到正/負樣本的距離,超參數  PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖9  和  PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖10  各自是1,  PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖11  和  PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖12  都是0.125(之所以這兩個超參數取得很小,是因為這兩個任務與ID分類任務存在潛在的沖突:兩輛有著相同顏色/品牌的車子不一定共用一個車輛id):
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖13
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖14
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖15
最重要也是最復雜的信息處理模塊在于代表車輛姿態的關鍵點信息。作者選用了當年在人體姿態估計上取得SOTA性能的網絡架構HRNet(TPAMI 2020)作為車輛姿態估計的主干網絡(這么選取是有先例的,18年的IROS中有篇估計車輛姿態的文章The earth ain’t flat: Monocular reconstruction of vehicles on steep and graded roads from a moving camera用的也是當時流行的人體姿態估計網絡架構Hourglass Network),訓練集約為10000張仿真圖像+真實數據集。
具體來說,作者設計了兩種方式來利用車輛的姿態信息,這兩種方式分別對應于兩種不同的信息存儲方式,heatmap和segments。
  • 在網絡的最后一層反卷積層后面,對每個關鍵點提取一個heatmap(共36個);
  • 在FC層輸出36個關鍵點對于的二維坐標和置信度之后,用它們再分割出車輛的主體部件。作者將36個關鍵點歸為13個組(如圖4所示),每組對應于一個mask,如果某一組包含的關鍵點的置信度低于閾值,則該組對于的圖片部分被遮蔽掉(就是說這部分可能被遮擋了,需要遮掉它,以免其對應的顏色特征提取有誤)。
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖16
圖4
  • 得到heatmap和segments以后,將這些信息(和RGB圖像在width和height這兩個維度是一致的)拼接到RGB圖像矩陣之后,送入主干網絡。
  • 在主干網絡輸出特征之后,將HRNet輸出的36個關鍵點的二維坐標+置信度信息拼接在特征之后,一起用作多任務訓練。
實現細節
本文代碼已開源(https://github.com/NVlabs/PAMTRI)。
本文的訓練分為兩部分,首先是訓練姿態估計網絡HRNet部分,然后是訓練主干網絡DenseNet121。DenseNet網絡的RGB部分和HRNet的參數都是用ImageNet預訓練得到的參數,而DenseNet網絡的其余部分參數則是根據高斯分布隨機生成的。姿態估計網絡的損失函數是類似于HRNet中的損失函數的,代碼如下所示:
 
 
class JointsMSELoss(nn.Module):    def __init__(self, use_target_weight):        super(JointsMSELoss, self).__init__()        self.criterion = nn.MSELoss(reduction='mean')        self.use_target_weight = use_target_weight
   def forward(self, output, target, target_weight):        batch_size = output.size(0)        num_joints = output.size(1)        heatmaps_pred = output.reshape((batch_size, num_joints, -1)).split(1, 1)        heatmaps_gt = target.reshape((batch_size, num_joints, -1)).split(1, 1)        loss = 0
       for idx in range(num_joints):            heatmap_pred = heatmaps_pred[idx].squeeze()            heatmap_gt = heatmaps_gt[idx].squeeze()            if self.use_target_weight:                loss += 0.5 * self.criterion(                    heatmap_pred.mul(target_weight[:, idx]),                    heatmap_gt.mul(target_weight[:, idx])                )            else:                loss += 0.5 * self.criterion(heatmap_pred, heatmap_gt)
       return loss / num_joints

03

實驗結果
實驗一:驗證本文方法有效的實驗
在VeRi和CityFlow-ReID兩個數據集上進行實驗,該方法的性能取得了[準]SOTA水平(如圖5,6所示):
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖17
圖5
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖18
圖6
實驗二:消融實驗
如圖5,6所示,可以看到Multi-task learning、基于關鍵點信息的姿態估計、Heatmap/Segments等模塊都能帶來模型性能的提升。
實驗三:車輛重識別效果可視化的實驗
可視化結果如圖7所示,結果表明:本文方法未解決的難點主要還是由高類間相似度和嚴重遮擋造成的。
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖19
圖7
實驗四:車輛顏色、類型的分類實驗
實驗結果如圖8所示,結果表明:姿態embedding有助于提升這兩個分類模塊的性能。
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖20
圖8
實驗五:驗證使用仿真數據是否提升了姿態估計的準確率
實驗結果如圖9所示,結果表明:增加了仿真數據集之后,模型的性能有了一定的提升。
PAMTRI:結合仿真數據+姿態信息的車輛ReID算法的圖21
圖9

04

參考文獻
[1] Ansari, Junaid Ahmed, et al. "The earth ain't flat: Monocular reconstruction of vehicles on steep and graded roads from a moving camera."2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2018.
[2] Wang, Jingdong, et al. "Deep high-resolution representation learning for visual recognition."IEEE transactions on pattern analysis and machine intelligence(2020).
[3] Tang, Zheng, et al. "Pamtri: Pose-aware multi-task learning for vehicle re-identification using highly randomized synthetic data."Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019.

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP