REID重識別的一些思考 專案 工程實現(四)

2021-10-10 18:28:12 字數 1937 閱讀 6376

reid目前是乙個較為火熱的研究熱點,不管是在業界還是在學術界,在工業界實現專案的時候最大的問題就是如何快速設計乙個baseline,並且是乙個strong baseline,後續可在次基礎上進行更改和優化。

由於不同的專案,不同的資料有各自的特點,所以這裡只是說一種常見的baseline,不一定對所有的專案都是最好的,只是說優化潛力較大。

該方案來自 *****: 《 a strong baseline and batch normalization neck 》

該篇*****雖然是乙個學術*****,但是從中可以感受到作者也是乙個偏向工程的,而不是僅僅為了發文章而寫的,相信大家在實際做工程的時候使用了很多*****中的tricks,但是說實話真正好用的沒幾個,亂七八糟的網路結構和策略,難免誤導了很多的剛上手的同學。

下面就是逐步高階reid的乙個過程:分為五步

1、直接分類網路 (pre_trained weights)

根據類別id的個數,直接搭建分類網路,backbone採用與訓練權重,由於類別較多最終的效果一般不會很好

2、分類網路+各類tricks (資料增強,注意力)
基於1中的網路,在上述基礎上新增一些tricks,比如 label smoothing,dara_aug,attention等等,一般對於1中的測試結果會有一定程度上的提公升,但是仍然達不到想要的效果

3、分類網路 softmax + triplet loss
相對於2中,還是基於上述的架構,但是最終的輸出變成了兩個,乙個是常規的分類 交叉熵損失函式,乙個是triplet loss,該方案才是真正的把度量學習的思想加了進來,效果相對於上述的效果應該會好一些

4、分類網路 softmax + semihard-triplet loss
和3中的思想一樣,但是對於 triplet loss 進行了改進,主要是只使用樣本對之間較為難分的樣本參與loss的計算,簡單的和太難的樣本不參與計算,因為如果使用普通的triplet loss的話,如果簡單易分樣本很多,難分較少,大量簡單可分的樣本的loss就會稀釋難分樣本的loss,模型在優化的時候就會很難注意到難分樣本,但是對模型最終效果提公升最有效的往往是難分樣本。但是我們又不能注意太過於難分的樣本,這樣就變成 hard triplet loss,所以我們找乙個折中,實驗證明效果還不錯。

注:1、有很多的細節這裡沒有提到,比如如何進行資料組織,p*k的形式等等,需要在實際**操作的時候去實現

2、使用triplet loss 的時候需要對資料進行組織,比如進行簡單triplet loss實現的時候,由於每次需要輸入三張影象,所以需要對模型進行改進,使得模型每次的輸入為三張影象,乙個anchor,乙個positive, 乙個negative,最終的loss輸出為 anchor的類別,三者之間的triplrt loss。如果使用semi-hard triplet loss的話就可以不用改模型,使用tf封裝的 semi-hard triplet loss就可以了,該包會在每個batch訓練的過程中,自動根據label計算所有的正、負樣本對之間的距離,並且進行選取其中semi-hard的樣本計算loss。

5、基於上述方案,使用*****的一些 triks
這裡的tricks包括在4的基礎上增加 bn neck, center loss, random erasing, lr schedule 等,其中這幾個tricks的分析在之前的部落格中提到過–部落格位址,可以看看。

如果你想自己學習,建議從 一方案 開始,一步步的進行搭建和練習,並觀察準確率最終的變化。如果是想要進行專案的快速搭建,建議直接用第五個方案,可以快速的出乙個不錯的baseline,然後根據專案的實際情況,比如小目標,背景雜亂等等進行優化

ReID基礎 行人重識別的一些認識

傳統方法 手工設計特徵 距離度量。這些傳統方法因為依賴手工特徵,不能適應資料量很大的複雜環境,效能也比較低,所以目前基本沒有人用了。深度學習方法 reid在測試的時候的類別與訓練時類別不同,沒有相同的類別 也就是測試的人和訓練的人不是同一批,open set 對抗攻擊 攻擊者可以通過給良性樣本新增特...

一些語音識別的概念

呼叫日誌 call logging 語音識別的呼叫日誌在系統中有著非常重要的作用,該日誌記錄了輸入的音訊 載入的語法 識別過程的中間結果 識別模組呼叫過程 識別使用的各種引數 識別結果以及當時的系統環境資訊。這些資料是效果分析的依據,詳盡的call log是效果優化的基礎。說話人自適應 當使用者多次...

一些關於識別的胡思亂想

媽媽指著自己的眼睛說 這是眼睛 嬰兒也指著媽媽的眼睛說 這是眼睛 假設此時這個過程嬰兒已經學習了 眼睛 是什麼,那麼此時嬰兒只接受了一次有標籤資料,如果此時給他一條魚,指著魚的眼睛問嬰兒這是什麼,若嬰兒答出這是眼睛,那麼如果能知道嬰兒學習的原理,我們同樣可以用於機器學習,通過這樣減少更多訓練的資料,...