iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
AI & Data

那些在科技公司和 app 背後的資料科學系列 第 26

[Day 26] Airbnb 使用 ResNet50 標記房間圖片

  • 分享至 

  • xImage
  •  

在國慶連假時,Skylar 使用 Airbnb 預定出遊的住宿地點。而在入住後,他發覺和當初在網站上看到的照片並無二致,圖片品質很好且很精確,也會依照不同房型分類照片。他好奇難道所有照片都是屋主一一輸入分類的嗎?還是使用機器學習使模型自動標註呢?

一間如此大型的訂房網站如 Airbnb,在遇到需要訓練分類模型時,究竟是重新設計一套架構,還是也會搜集文獻,模仿前人所做呢?

今天,讓我們一起來看看 Airbnb 的圖片分類模型吧!


Airbnb 為了要幫助用戶找到最有資訊量的照片,確保照片傳遞的資訊是準確的,或是能夠建議屋主如何提升照片的吸引力,需要一個能夠將照片依照不同房間類型分類的模型。

Image Classification

他們希望此模型可以先初步將照片類型分成臥室、浴室、客廳、廚房、泳池和風景,如果之後產品部門有需要增減類別的話,也可以隨時調整。

在回顧文獻後,發現 ImageNet 的分類問題中也有房間分類的題目。不過由於 Airbnb 有一些自定義類別,不能直接套用。因此他們修改了以下兩點:

  1. 修改最後幾層,以確保輸出的維度是他們所需。
  2. 重新訓練 DNN 模型,以達到滿意的表現。

經過幾個不同模型之後,他們最終選擇 ResNet50 作為架構,在最後面多加兩層全連接層(fully connected layer),還有一個 Softmax 的 activation 層。

Re-training ResNet50

在重新訓練模型時,他們希望能夠得到至少 95% 的 precision,和 80% 以上的 recall。

而訓練的方法有兩種:

  • 原本 ResNet50 的模型保持不變,只重新訓練最後兩層。此即為 fine-tuning。
  • 另外一種方式是整個模型的參數都重新訓練。

遇到的兩個困難:

  • 雖然有非常多的照片來源,但是缺乏準確的標記。
  • ResNet50 總共有超過兩千五百萬個參數,需要非常強大的 GPU。

第一個困難是 Airbnb 有數百萬張照片需要被標記,不可能全部都仰賴人工註記,因此決定採取兩種來源:

  1. 請人工標記數千到數萬張照片,這些照片被稱為 golden set。
  2. 利用屋主自行輸入的註記,不過這種來源會有資料不乾淨的問題,因為屋主並不一定是在直接描述此張照片,以下圖的幾張照片為例。

https://ithelp.ithome.com.tw/upload/images/20221010/2015232581Ks9BMqhP.png

因此,為了過濾出更精準的照片,Airbnb 必須額外設定一些篩選條件。例如,為了得到最乾淨的廚房照片,他們使用以下 query:

AND LOWER(caption) like '%kitchen%'
AND LENGTH(caption) <= 22
AND LOWER(caption) NOT LIKE '%bed%'
AND LOWER(caption) NOT LIKE '%bath%'
AND LOWER(caption) NOT LIKE '%pool%'
AND LOWER(caption) NOT LIKE '%living%'
AND LOWER(caption) NOT LIKE '%view%'
AND LOWER(caption) NOT LIKE '%door%'
AND LOWER(caption) NOT LIKE '%table%'
AND LOWER(caption) NOT LIKE '%deck%'
AND LOWER(caption) NOT LIKE '%cabinet%'
AND LOWER(caption) NOT LIKE '%entrance%'

雖然如此一來會損失很多照片資料,但是為了得到最乾淨的結果,這個步驟是必要的。

最終上線的辨識模型是數個二元分類模型,而非一個多類別的分類模型。雖然這不是最理想的作法,不過由於這些模型是線下使用,所以即便結果稍慢,也尚可接受。

最後,Airbnb 使用 golden set 以評價模型。他們發現臥室和浴室是表現最好的,其他的房間,如客廳比較不盡如人意。原因可能是因為臥室的擺設通常較固定,而客廳的陳設較多元,且客廳的照片中都偶爾會涵蓋到餐廳或廚房。另外,一個全部重新訓練的模型(紅線)表現會比只訓練最後兩層(藍線)的表現還要好。

https://ithelp.ithome.com.tw/upload/images/20221010/20152325uvH0ZLMesu.png

https://ithelp.ithome.com.tw/upload/images/20221010/20152325Ya1QY89JYq.png

Airbnb 最後使用的六個模型,其 precision 約為 95%,而 recall 為 50%。


最後是幾個 Airbnb 的小小心得和建議:

  • 高品質的標記對於模型訓練是非常重要的,因此要找到一個有效率的標記方法。
  • 可以先從 fine-tuning 開始,簡單地重新訓練後面幾層。如果資料集非常巨大,才需要考慮是否要整個模型重新訓練。

謝謝讀到最後的你,如果喜歡這系列,別忘了按下喜歡和訂閱,才不會錯過最新更新。
也歡迎到我的 medium 逛逛!


Reference:


上一篇
[Day 25] Spotify 使用 NLP 以助於 Podcast 搜尋
下一篇
[Day 27] Dropbox 的圖片搜尋演算法
系列文
那些在科技公司和 app 背後的資料科學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言