--- title: "【論文筆記】Convolutional Neural Networks for Fashion Classification and Object Detection" date: 2020-08-21 is_modified: false disqus: cynthiahackmd categories: - "智慧計算 › 人工智慧" tags: - "AI/ML" - "Fashion Classification" - "電腦視覺 CV" - "讀書筆記" - "文獻" --- {%hackmd @CynthiaChuang/Github-Page-Theme %} <br> > [Convolutional Neural Networks for Fashion Classification and Object Detection](http://cs231n.stanford.edu/reports/2015/pdfs/BLAO_KJAG_CS231N_FinalPaperFashionClassification.pdf) > Lao B , Jagadeesh K(2015) > Final Paper, CS231N, Stanford <!--more--> ## 閱讀前自我提問 1. 期望能了解服裝分類領域中的 Know-how,包含但不限於:常用名詞、定義與方法、挑戰與現存的 benchmark。 ## 0. Abstract 1. **本文重點放在四個任務**: 1. 服裝類型(Type)分類 2. 服裝屬性(Attribute)分類 3. 相似服裝檢索 4. 服裝物體(Object)檢測 2. **結果**: - 在服裝風格(Style)分類上準確率有 50.0 % - 在服裝屬性(Attribute)分類上準確率有 74.5% 我這邊對於**相似服裝檢索**不感興趣,因此僅專注在服裝類型(Type)與屬性(Attribute)的分類上。是說,說到 Fashion Classification,可以瞄一下 ==Fashion MNIST== 資料集。 <p class="illustration"> <img src="https://i.imgur.com/oRSeVTN.png" alt=" Fashion MNIST 資料集"> Fashion MNIST 資料集(圖片來源: <a href="https://github.com/zalandoresearch/fashion-mnist">zalandoresearch/ fashion-mnist | github </a>) </p> ## 1. Introduction 段落一開始先介紹 Fashion classification 的應用: 1. 在**電子商務**方面,可以根據服裝照片推薦相似相品,或是推薦設計師作品。 2. 在**監視環境**中,可以利用行人服裝屬性輔助進行行人再識別(ReID) 3. 在**檢索應用**方面,可以使用文字檢索圖片,例如:穿紅衣的小女孩…等 <p class="illustration"> <img src="https://i.imgur.com/HJYJ70U.png" alt="洋裝下擺與單裙下擺"> 洋裝下擺與單裙下擺(左:洋裝、右:單裙)(圖片來源: 左: <a href="https://tw.baddiary.com/product/%E5%BE%8C%E6%8B%89%E9%8D%8A%E9%96%8B%E8%A1%A9%E8%A2%96%E5%A2%8A%E8%82%A9%E7%99%BE%E8%A4%B6%E6%B4%8B%E8%A3%9D%E9%99%84%E8%85%B0%E5%B8%B6/16754/?cafe_mkt=google_tw_dy&utm_source=Google&utm_medium=cpc&utm_campaign=Google_shopping&gclid=Cj0KCQjwg8n5BRCdARIsALxKb94BR8R5d_GGycXTqWv9UyWr_UdzFvFKTQN6VJ4T91wxmY8VS9dNkwYaAgxiEALw_wcB">baddiary</a>、右:<a href="https://www.google.com/url?sa=i&url=https%3A%2F%2Fworld.taobao.com%2Fproduct%2F%25E5%2596%25AE%25E8%25A3%2599%25E9%25A1%25AF%25E7%2598%25A6.htm&psig=AOvVaw2Nentv0o4g8jWz-gOhqw-y&ust=1597222436780000&source=images&cd=vfe&ved=0CA0QjhxqFwoTCKCcx7LjkusCFQAAAAAdAAAAABAI">淘寶海外</a>) </p> 並說明了在此領域會遇到的挑戰: 1. 各類衣服會具有==相似的特徵==,如:洋裝下擺與單裙下擺。 2. 服裝由於材料的的緣故,衣服容易變形,導致==特徵縮放==。 3. 視角與長寬比的不同,容易導致==衣物特徵變形==,而看起來不同。 ## 2. Problem Statement 在 [Abstract](#Abstract) 中出現的四種分類 Type、Attribute、Object 與 Style,這邊先進行定義。不過 Type 並沒有標註在圖上,該詞僅用於相似服裝檢索,根據上下文推測指的應該是==服裝的風格==,如:淑女、學院、中性、蘿莉塔、街頭、簡約…等。 <p class="illustration"> <img src="https://i.imgur.com/Qg6EdSw.png" alt="分類任務的摘要"> 分類任務的摘要(圖片來源: <a href="http://cs231n.stanford.edu/reports/2015/pdfs/BLAO_KJAG_CS231N_FinalPaperFashionClassification.pdf">論文</a>) </p> 這篇的四個子任務主要使用 CNN 來實做,不過他這邊提到 **Fashion classification has more generally consisted of nonCNN approaches**?這讓我感到有點驚訝,剛剛在看 Pedestrian Attribute Recognition(PAR),兩者都是在辨識身上的屬性,但在 PAR 中有大半的方法引入 CNN。 :::info :information_source: **關於 CNN PAR 的時間軸** Oops! 我好像搞混時間軸了。這篇是 2015 的文章,另外一篇被認為是是第一篇的 CNN PAR 論文 - Multi-attribute learning for pedestrian attribute recognition in surveillance scenarios,發表的時間也是 2015,是同一時期的事情。 ::: ### 2.1 Clothing Type Classification 服裝類型(Type)分類,是屬於 ==multiclass classification==,訓練時使用了 [Apparel Classification with Style (ACS)](https://data.vision.ee.ethz.ch/cvl/lbossard/accv12/) 資料集進行訓練,該資料集包含了 89,484 張圖片,主要是集中==上半身==衣物的分類,共有 15 個類別。 <p class="illustration"> <img src="https://i.imgur.com/sfmFXHQ.png" alt="ACS Dataset"> ACS Dataset(圖片來源: <a href="http://cs231n.stanford.edu/reports/2015/pdfs/BLAO_KJAG_CS231N_FinalPaperFashionClassification.pdf">論文</a>) </p> ### 2.2 Clothing Attribute Classification :::warning :warning: **the multi-label CNN architecture we are using** 同一段落中有提到這句話,作者認為所使用的是 multilabel?但在一個章節看網路架構圖,比較偏向我所認知的 **Multitask Learning** 的架構。 ::: 服裝屬性分類就是分類服裝==顏色==、==圖案==、==長度==…等屬性的問題。這些屬性有些可以用二進制量來表達,如:有無領帶;但有些無法,如:上裝顏色。感覺資料格式有點類似之前在看的 [Multitask classification](/@CynthiaChuang/Difference-between-Multiclass-Multilabel-and-Multitask-Problem#Multitask-classification)。 這部份網路訓練時採用的資料集是 [Clothing Attribute (CA) Dataset](http://chenlab.ece.cornell.edu/people/Andy/publications/ECCV2012_ClothingAttributes.pdf),該資料集包含了 1856 張==上身服裝==照片,,共有 26 個類別。 <p class="illustration"> <img src="https://i.imgur.com/rAQeZh7.png" alt="CA Dataset"> CA Dataset(圖片來源: <a href="http://chenlab.ece.cornell.edu/people/Andy/publications/ECCV2012_ClothingAttributes.pdf">論文</a>) </p> ### 2.3. Clothing Retrieval Pass ### 2.4. Clothing Object Detection 服裝物體檢測,顧名思義就是找出圖片中衣服存在的區域,就像下圖這樣: <p class="illustration"> <img src="https://i.imgur.com/ENlRAdX.png" alt="Clothing Object Detection"> Clothing Object Detection(圖片來源: <a href="https://arxiv.org/pdf/1807.01394.pdf">ModaNet</a>) </p> 這邊資料集採用 [Colorful-Fashion(CF) dataset](https://ieeexplore.ieee.org/document/6630093),但該資料集是 superpixel-labeling,所以在使用前需要先將標籤轉換為 ground-truth bounding box。這邊採用 Selective Search,且 intersection over union (IOU) 設為 0.5 來做標籤的處理。 <p class="illustration"> <img src="https://i.imgur.com/eOPeWwL.png" alt="CF Dataset"> CF Dataset(圖片來源: <a href="http://cs231n.stanford.edu/reports/2015/pdfs/BLAO_KJAG_CS231N_FinalPaperFashionClassification.pdf">論文</a>) </p> 這邊題到了幾個我不太熟的幾個名詞,稍微記錄一下: 1. **Superpixel** 中文翻作超像素,它是將一系列位置相鄰且顏色、紋理、亮度相似的像素組成的一個區域。這些小區域大多保留可供圖片的做進一步分割的資訊,因此可視為對圖片做基本資訊的抽象。最終所得的圖片會從一張像素級(pixel-level)的圖,變成區域級(district-level)的圖。 <p class="illustration"> <img src="https://i.imgur.com/lThCHJY.jpg" alt="superpixel"> superpixel(圖片來源: <a href="https://stackoverflow.com/questions/50264064/gabor-filter-on-on-each-superpixel">stackoverflow</a>) </p> - **Selective Search** 是個 pixel-based 的圖像分割演算法,詳細執行步驟可以看看這篇[網誌](https://www.jianshu.com/p/99e121c3beb8)。 - **IoU(Intersection over Union)** 在目標檢測中,IoU 指的是一種衡量指標,是用來計算模型產生的 bounding box 與原先標記的 bounding box 的重疊率。簡單來說就是算框的準不準,一般來說分數大於 0.5 就可以視為不錯的結果。 ## 3. Technical Approach and Models 作者總共訓練了四個網路分進行四個任務 ### 3.1. Clothing Type Classification 這邊他直接採用 AlexNet 進行遷移學習,在這邊的 AlexNet 在論文中是使用 Caff 實做的版本故又稱做 CaffeNet。並使用 ACS 資料集共 89,484 張、15個類別進行 Fine-Tune。 ### 3.2. Clothing Attribute Classification 屬性分類的部份,它使用 AlexNet 作為基礎,後接 26 個 Softmax 層,進行分類。標準的 Multi-task learning 的網路架構。 <p class="illustration"> <img src="https://i.imgur.com/ZXCao4H.png" alt="Clothing Attribute Classification"> Clothing Attribute Classification(圖片來源: <a href="http://cs231n.stanford.edu/reports/2015/pdfs/BLAO_KJAG_CS231N_FinalPaperFashionClassification.pdf">論文</a>) </p> ### 3.3. Clothing Retrieval Pass ### 3.4. Clothing Object Detection 物件偵測的部份採用 R-CNN 做遷移學習。並用改標註 ground-truth bounding box 的 CF 資料集進行 Fine-Tune。是說有點奇怪,是作者敘述順序放錯嗎?Object Detection 怎會在最後一步? ## 4. Results ### 4.1. Clothing Type Classification 在 [ACS 論文](https://data.vision.ee.ethz.ch/cvl/lbossard/accv12/accv12_apparel-classification-with-style.pdf)中,依照特徵提取分法的不同其準確率分別落在 35.03%、 38.29% 與 41.36%。而在本文中 Fine-Tune Full-Connected 與所有的層後,所的的準確率分別 46.0% 和 50.2%,高於論文原始數據。 <p class="illustration"> <img src="https://i.imgur.com/iyhFKam.png" alt="與 ACS 比較服裝分類結果"> 與 ACS 比較服裝分類結果(圖片來源: <a href="http://cs231n.stanford.edu/reports/2015/pdfs/BLAO_KJAG_CS231N_FinalPaperFashionClassification.pdf">論文</a>) </p> ### 4.2. Clothing Attribute Classification 分類結果看來對於顏色的分類是較為準確,但是於服裝細節的分類略糟。 <p class="illustration"> <img src="https://i.imgur.com/YCffx0m.png" alt="分類結果"> 分類結果(圖片來源: <a href="http://cs231n.stanford.edu/reports/2015/pdfs/BLAO_KJAG_CS231N_FinalPaperFashionClassification.pdf">論文</a>) </p> 是說作者舉了 placket 跟 solid 的例子,我還認真去查了下這兩個到底是什樣子。 <p class="illustration"> <img src="https://i.imgur.com/JC1ESan.png?1" alt=" placket 跟 solid"> 左: placket 右:solid(圖片來源: 左: <a href="https://www.beautifulhalo.com/mens-simple-long-sleeves-half-button-placket-loose-fit-solid-color-linen-shirt-p-407928.html">Beautifulhalo</a>、右:<a href="https://www.google.com/url?sa=i&url=https%3A%2F%2Fshopee.tw%2F%25E5%259B%259E%25E8%25B3%25BC%25E7%258E%2587%25E8%25B6%2585%25E9%25AB%2598%25EF%25BC%258C%25E8%25B6%2585%25E4%25BA%25BA%25E6%25B0%25A3%25E6%258E%25A8%25E8%2596%25A6-%25E7%2599%25BD%25E8%25A5%25AF%25E8%25A1%25AB-%25E7%2594%25B7-(%25E5%258F%25B0%25E7%2581%25A3%25E7%258F%25BE%25E8%25B2%25A8-%25E6%259C%2589%25E5%258F%25A3%25E8%25A2%258B)%25E4%25B8%258A%25E7%258F%25AD%25E6%2597%258F%25E7%2599%25BD%25E8%25A5%25AF%25E8%25A1%25AB-%25E9%2595%25B7%25E8%25A2%2596-mcps20-i.6368458.662654313&psig=AOvVaw3v5kCwmoCUStkFuUqkBW-1&ust=1597301305337000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCLjDl5qJlesCFQAAAAAdAAAAABAD">蝦皮購物</a>) </p> ### 4.3. Clothing Retrieval Pass ### 4.4. Clothing Object Detection 在使用 R-CNN 做遷移學習時,做了兩階段的 Fine-Tune。在第一階段 Accuracy 達 91.25%、第二階段 達 93.4% ## 5. Discussion 簡略記錄下幾點: 1. 當圖片具有許多重疊特徵時,手動標記圖像可能會涉及一些主觀性,導致分類失誤。 2. 屬性分類中,目前顏色方面表現很好,但涉及細微屬性時,就有代加強。如果能建立一個更大的資料集,或許將能幫助模型學習。 ## 參考資料 1. Linear_Luo (2016-09-19)。[超像素(Superpixel)理解](https://blog.csdn.net/Linear_Luo/article/details/52588515) 。檢自 Linear_Luo的专栏 | CSDN博客 (2020-08-12)。 2. studyeboy (2019-06-28)。[超像素—学习笔记](https://blog.csdn.net/studyeboy/article/details/93981017) 。檢自 studyeboy的专栏 | CSDN博客 (2020-08-12)。 3. hanranV (2016-08-05)。[检测评价函数 intersection-over-union ( IOU )](https://blog.csdn.net/Eddy_zheng/article/details/52126641) 。檢自 hanranV的专栏 | CSDN博客 (2020-08-12)。 ## 更新紀錄 :::spoiler 最後更新日期:2020-08-21 - 2020-08-21 發布 - 2020-08-12 完稿 - 2020-07-31 起稿 ::: {%hackmd @CynthiaChuang/Github-Page-Footer %}