[Day 25] Final Project (1/5) — 目标、计画说明

目标:资料飞轮

[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


<<:  [Day25] Array methods 阵列操作方法(3)

>>:  学习Python纪录Day25 - 批次处理档案

Log Agent - Fluent Bit Multiline Parsing

Fluent bit回顾 Log Agent - Fluent Bit 简介 Log Agent -...

[第七只羊] 迷雾森林舞会前夕 建立使用者关联

天亮了 昨晚是平安夜 关於迷雾森林故事 秘密通道 Rocky 循着发光的脚印继续寻找爸爸妈妈的下落 ...

Day16 奶盖绿茶拿铁半糖少冰加珍珠

Mixed and Stacked scale Chart 有时候我们需要堆叠多种图表来表达资料的...

Day1 麦块农场资讯化,模组 ComputerCraft: Tweaked 出场

大家好,我这次的铁人赛系列,主要是学习 Lua 关於 Lua 语言的介绍,可以直接参考另一位铁人朋友...

认识 .NET

干古 微软开发的一个跨平台开源的开发框架, 以前叫 .NET Core, 也继承 .Net Fram...