iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
AI & Data

然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)系列 第 25

[Day 25] Final Project (1/5) — 目標、計畫說明

  • 分享至 

  • xImage
  •  

目標:資料飛輪

[Day 02] Why MLOps — 從"地平說" 走向宇宙 我們提到了資料飛輪 (Data Flywheel) 代表的意義是更好的模型會使產品更好,而產品更好則會吸引更多使用者,更多使用者代表更多的資料,更多資料則又會讓模型變得更好,如此生生不息的循環下去。
在這次鐵人賽挑戰的最後 project 中,我們就要試著來建立一個實踐資料飛輪的應用。
首先,資料飛輪的概念就是藉由錯誤分析來了解模型的弱點並加以解決,如下圖:
data flywheel

在 2019 的 Tesla Autonomy Day 中,Andrej Karpathy 提到了特斯拉如何利用這樣的概念來改進自駕車的模型:
Tesla Autonomy Day
*圖片來源:Tesla Autonomy Day

可以看到他們藉由增加模型表現較差的資料 (例如隧道內的影像) 來使模型更加進步。

Project 簡介

而這次的 project 啟發自 Daniel Bourke 在 Stanford CS 329S: Machine Learning Systems Design 給的部署教學,我們要建立一個名為 Ironbird 的台灣常見鳥兒分類模型。
其中模型使用 EfficientNetB0 作為 Backbone,並搭配 ImageNet 預訓練權重做 Transfer learning。
在這個 Project 使用 ImageNet 預訓練權重特別有效的原因在於 ImageNet 本身就包含了 59 種鳥類 (參考自Building a bird recognition app and large scale dataset with citizen scientists)

而我們使用的資料來源為 Kaggle 上的 300 Bird Species - Classification 資料集中的 10 種鳥兒:

  • 台灣藍鵲 (TAIWAN MAGPIE)
  • 藍腹鷴 (SWINHOES PHEASANT)
  • 八哥 (MYNA)
  • 麻雀 (HOUSE SPARROW)
  • 家燕 (BARN SWALLOW)
  • 野鴿 (ROCK DOVE)
  • 喜鵲 (EURASIAN MAGPIE)
  • 鴛鴦 (MANDRIN DUCK)
  • 綠繡眼 (MALAGASY WHITE EYE)
  • 綠頭鴨 (MARLLARK DUCK)

其中所有的資料都是 224 X 224 X 3 的 jpg 圖片,資料夾的結構已經整理成可以利用 tf.keras.utils.image_dataset_from_directory 創造訓練、驗證 Dataset 的模式:

main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg

可以到其 Kaggle 頁面看看資料如何收集的。
值得注意的是這個訓練集並沒有平衡過,但每個種類都至少有 120 張訓練圖片,唯一有疑慮的地方在於資料中的雌雄比例很不平均,大部分收集到的圖片都是色彩鮮豔的雄鳥,因此模型在分類雌鳥時可能會有較差的表現,雖然這個模型並不會參與重大決策,但沒錯,我們有大機率得到一個有性別歧視的模型哈哈哈 (還記得 [Day 10] 模型達到商業指標的挑戰 — Test set performance 的殞落 提到的關鍵子集嗎 ?)。

我們的目標就是建立類似特斯拉的資料飛輪,所以將上圖修改之後可以得到我們的願景圖如下:
my flywheel

今天大概就先把大概的目標說明一下,明天再來說明怎麼實踐囉!
/images/emoticon/emoticon78.gif


上一篇
[Day 24] Scoping — 計画通り
下一篇
[Day 26] Final Project (2/5) — 準備開始
系列文
然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言