更新中。。。comming soon
- github: JDAI-CV/fast-reid [link.]
- paper: FastReID: A Pytorch Toolbox for General Instance Re-identification [link.]
- FastReID架構參考了Facebook開源的Detectron2
- 開源社區中其他比較流行的reid庫: torchreid,Person_reID_baseline_pytorch
paper筆記
簡介
- FastReID: A Pytorch Toolbox for General Instance Re-identification
- FastReID是一個用於一般實例ReID的Pytorch工具箱。
- FastReID具有模塊化和可擴展性。
- FastReID為訓練、評估、微調和模型部署提供了一個完整的工具包。
- FastReID提供了很多strong baselines。
什么是baseline?
baseline一詞應該指的是對照組,基准線,就是你這個實驗有提升,那么你的提升是對比於什么的提升,被對比的就是baseline。 - 可以對系統配置進行管理。FastReID將training,testing寫在YAML文件上。FastReID可以對backbone,head aggreation layer and lossfunction,and traning strategy這些組件作為可選選項。
- 評價系統。FastReID提供了很多評價標准:ROC,mINP能更好的反映模型的性能。
- FastReId提供知識蒸餾模塊,將復雜模型得到更高效,輕量化模型。
- FastReID提供了一個轉換工具,如PyTorch→Caffe和PyTorch→TensorRT實現快速模型部署。
- FastReID提供了先進的預訓練模型包括person re-id,partial re-id, cross-domain re-id and vehicle re-id.(下文project部分會講到這些模型)
結構
他的結構如圖1。
各部分詳解
以1.3.0版本詳解
詳解ReID的各部分組成及Trick——基於FastReID
1。3。0版本提供了以下的結合trick的baseline的模型
BoT:
Bag of Tricks and A Strong Baseline for Deep Person Re-identification. CVPRW2019, Oral.
文章中作者認為影響ReID效果很大程度上與trick相關,所以對影響ReID的trick做出了探究,並提出了一種Strong Baseline。
這個是說在baseline下添加這些trick對map的提升。
warmup
是一種學習率優化方法,BoT學習率如圖所示。Figure3(紅色虛線部分)warmup有很多種,詳細內容參考【調優方法】——warmup 黑白象
REA
:隨機擦除數據擴展(Random Erasing Augmentation)LS
:標簽平滑(Label Smoothing)
AGW:
ReID-Survey with a Powerful AGW Baseline.
MGN:
Learning Discriminative Features with Multiple Granularities for Person Re-Identification
他們都是ResNet50
作為backbone
SBS:
stronger baseline on top of BoT:
Bag of Freebies(BoF):
- Circle loss
- Freeze backbone training
- Cutout data augmentation & Auto Augmentation
- Cosine annealing learning rate decay
- Soft margin triplet loss
Bag of Specials(BoS):
- Non-local block
- GeM pooling
Projects
Person Re-identification 人員重識別
數據集: Market1501, DukeMTMC, MSMT17
Setting.
We use flipping, random erasing and auto-augment to process the training image.
The IBNResNet101 with a Non-local module is used as the backbone.
The gem pooling and bnneck are used as the head and
aggregation layer, respectively.
For the batch hard triplet loss function, one batch consists of 4 subjects, and each subject has 16 different images, and we use circle loss and triplet loss to train the whole network.
圖片預處理:我們使用翻轉,隨機擦除和自動增強對訓練圖像的處理。
backbone:Non-local module(IBN-ResNet101)
Aggregation layer:gem pooling
Head:bnneck
loss function:circle loss和triplet loss
Result.
結果就是在上面三個數據集上和CVPR,ICCV,ECCV上的SOTA算法相比,比他們效果好。
Cross-domain Person Re-identification 跨域人員重識別
跨域人員再識別的目的是將經過標記的源域數據集訓練的模型適應到沒有標記的目標域數據集
進行標記。
Setting.
We propose a cross-domain method FastReID-MLT that adopts mixture label transport to learn pseudo
label by multi-granularity strategy.
We first train a model with a source-domain dataset and then finetune on the pre-trained model with pseudo labels of the target-domain dataset.
FastReID-MLT is implemented by ResNet50 backbone, gem pooling and bnneck head.
For the batch hard triplet loss function, one batch consists of 4 ubjects, and each subject has 16 different images, and we use circle loss and triplet loss to train the whole network.
FastReID-MLT通過多粒度策略采用混合標簽運輸來學習偽標簽(pesudo label)。
先在源數據集訓練模型,然后將預訓練模型和目標數據集的偽標簽進行整合。
偽標簽(pseudo label):半監督學習的一種方法,先將沒有標簽的數據使用通過其他監督學習得到的模型給他打上偽標簽。然后將這些偽標簽數據集和打標簽的數據集混在一起對模型進行訓練。
FastReID-MLT網絡結構見圖7
backbone:ResNet50
Aggregation layer:gem pooling
Head:bnneck
loss function:circle loss和triplet loss
Result.
FastReID-MLT也SOTA了。
Partial Person Re-identification 有部分遮擋的行人的重識別
被跟蹤目標有遮擋,並且只有少量的跟蹤圖像。
Setting.
FastReID-DSR網絡結構見圖8
Result.
FastReID-DSR也SOTA了。
Vehicle Re-identification 車輛重識別
數據集:VeRi,VehicleID and VERI-Wild.
Setting.
網絡結構見圖9
Result.
SOTA了
References
- Distill:FastReID: 一個面向學術界和工業界的 ReID Toolbox。link.
代碼
fast-reid的項目結構參考了PyTorch-Project-Template, 我之后也會記錄一下PyTorch Project Template的結構筆記。 這個項目結構作者描述的很清晰,直接看就行。
先根據INSTALL.md
准備好了運行環境后,查看GETTING_STARTED.md
,執行
python3 tools/train_net.py --config-file ./configs/Market1501/bagtricks_R50.yml MODEL.DEVICE "cuda:0"
出現了段錯誤(核心已轉儲),也沒有查到原因;
windows空跑沒有報錯,但也沒任何反應。
后來繼續看文檔可能是沒有數據集的原因。
然后開始看文檔
datasets/README.md
寫了數據集的文件結構。MODEL_ZOO.md
寫了fast-reid提供的模型和baseline
還有訓練好的模型的下載鏈接。- Docker可以不用
這時該項目的文件結構及使用已經差不多了解了。我先下載一個數據集和模型,再試試。
TODO:。。。