跳轉到

2009 - ImageNet 資料集#

案件摘要#

2009 年,李飛飛(Fei-Fei Li)團隊在 CVPR 發表 ImageNet:以 WordNet 層級為骨架、包含 1,400 萬張標註影像、2 萬餘類別的超大資料集:

\[ \text{ImageNet} = \text{WordNet 概念樹} \times \text{百萬級標註影像} \]

一句話:資料集即基石。深度學習革命的引爆缺的不是演算法(1986 反向傳播早已備好),而是資料——ImageNet 補上了這一塊,為 2012-AlexNet影像革命.md 鋪路。

前因 -- 為什麼會有這個案子#

  • 1989-LeCunCNN手寫辨識.md 的陰影:CNN 在數萬張影像上就餵不飽,1990 年代的資料集(Caltech 101、PASCAL VOC,僅數千到數萬張)撐不起深網路——資料飢渴是視覺智能的瓶頸。
  • 機器學習的主流文化是「演算法為王」:大家比的是在同一個小資料集上誰的模型好。李飛飛的洞見反其道而行:如果資料不夠大,再好的演算法也看不到世界——孩子的視覺是靠數億次的注視訓練出來的。
  • WordNet(George Miller, 1985, Princeton)提供了 2 萬餘個有層級的英文概念樹——李飛飛的動機:以 WordNet 為藍圖,把整個視覺世界建成資料集。
  • 2006–2007 年的工程難題:1,400 萬張影像的人工標註需要數十年人力——解方是 Amazon Mechanical Turk 群眾外包(平均每張影像約數十秒人工確認)。
  • 李飛飛的自述:2006 年在 Caltech,她對學生說「數據改變了一切」——如果視覺演算法只看過幾千張圖,它就像一個只看過幾本繪本的孩子。給機器整個視覺世界,成了 ImageNet 的原始動機。
  • 2007 年前後,深度學習還在蟄伏(見 2006-Hinton深度信念網路.md)——沒有人預料到,這個資料集即將引爆一場革命。

線索與推理 -- 數學式、程式、理論#

第一條線索:WordNet 層級——資料集的骨架#

ImageNet 不是雜亂的圖庫,而是語義層級:每個節點是 WordNet 同義詞集(synset),影像掛在概念樹的葉上。

層級 範例 數量級
頂層概念 生物、人造物 數十
中層 動物 > 脊椎動物 > 犬科 數千
葉(可標註類別) 柯基犬、柴犬、金魚 21,841 個 synset
影像 每葉平均數百張 1,400 萬張

層級的意義:類別之間有語義距離與父子關係——這預示了「視覺概念是分佈式表徵、有幾何結構」的想法(見 1986-反向傳播演算法.md 第三條線索)。

第二條線索:規模的法則——為什麼資料是基石#

經驗法則(scaling law 的先聲):模型效能隨資料量冪律增長:

\[ \text{Error} \propto N^{-\alpha}, \qquad \alpha \approx 0.2\text{–}0.5 \text{(視覺任務)} \]
資料集 年份 影像數 類別數 能餵飽的模型
Caltech 101 2003 \(\sim\) 9,000 101 淺層
PASCAL VOC 2005 \(\sim\) 1 萬 20 淺層
ImageNet 2009 1,400 萬 2 萬 深網路

淺層方法(SVM + 手工特徵)在數萬張影像上已飽和;深網路(數千萬參數)需要百萬級標註才能發揮——ImageNet 與深網路是彼此的缺席拼圖。

第三條線索:群眾外包——標註的工業化#

1,400 萬張的人工標註按傳統方式(研究生時薪)需要數十年。李飛飛的工程解法:

  • 2007–2009 年透過 Amazon Mechanical Turk,動員 167 個國家、約 4.9 萬名標註員。
  • 每張影像經「候選生成(關鍵字搜尋網路圖庫)→ 群眾確認(是不是這個概念?)→ 多人投票品管」的管線。
  • 標註成本壓到每張約數美分——標註的工業化本身就是一項發明,預示了日後大模型時代的資料工程。

第三條線索補遺:標註的品質管線——群包的偵探細節#

步驟 操作 目的
1. 候選生成 以 synset 名稱的英文/多語關鍵字搜尋網路圖庫(Flickr 等) 大量候選影像
2. 群眾確認 標註員判斷「這張影像是否屬於該概念?」 排除誤配
3. 多人投票 每張影像多位標註員交叉確認 控制品質
4. 層級檢查 影像掛回 WordNet 樹的正確節點 語義一致性

偵探的判讀:候選生成是「由機器廣撒網、由人類精過濾」的人機分工——這個管線哲學在二十年後的資料工程(RLHF、資料清洗)中原樣重現:機器負責規模,人類負責判斷。

第四條線索:競賽的設計——把資料變成戰場#

2010 年起,ImageNet 附帶 ILSVRC(Large Scale Visual Recognition Challenge):1,000 類、120 萬張訓練影像的子集,每年公開比武:

  • 2010–2011 年冠軍仍是手工特徵方法(錯誤率 \(\sim 28\% \to 25\%\) ,擠牙膏式進步)。
  • 2012 年 AlexNet 以深度 CNN 把錯誤率一刀砍到 15.3%(見 2012-AlexNet影像革命.md)——10 個百分點的斷崖,震撼整個視覺社群。
  • 競賽設計的智慧:公開、可比、年度——把資料集變成領域的進度條與聚光燈。

結案 -- 後果與影響#

  • 2012 年 AlexNet 奪冠(見 2012-AlexNet影像革命.md),深度學習革命正式開場——沒有 ImageNet,就沒有 AlexNet 的引爆點。
  • 「資料集驅動研究」成為範式:此後每個子領域都有自己的 ImageNet(COCO、LibriSpeech、SQuAD),大資料 + 大模型 + 基準競賽的三件套。
  • 伏筆:ImageNet(影像)+ 反向傳播(1986)+ GPU(2012)的三角會合之後,同一配方在 2017 年被 2017-Transformer.md 移植到語言,再以自監督學習把「標註」外包給資料本身——規模法則一路長到 2020 年代的 GPT。
  • 李飛飛後續推動以人為本的 AI(Stanford HAI);ImageNet 標註員的勞動問題也引發了對資料勞動的反思(ImageNet Roulette, 2019)。
  • ImageNet 的類別偏差(西方、網路圖庫來源)成為日後 AI 公平性研究的經典案例。

關鍵人物與文獻#

  • 李飛飛(Fei-Fei Li):ImageNet 的發起人,「資料集即基石」的主張者。
  • Deng, Dong, Socher, Li, Li & Fei-Fei, ImageNet: A Large-Scale Hierarchical Image Database, CVPR, 2009。
  • Russakovsky et al., ImageNet Large Scale Visual Recognition Challenge, IJCV, 2015。
  • Miller, WordNet: A Lexical Database for English, Communications of the ACM, 1985(骨架)。
  • Krizhevsky, Sutskever & Hinton, ImageNet Classification with Deep Convolutional Neural Networks, 2012(引爆點)。
  • 相關案件:1989-LeCunCNN手寫辨識.md、2006-Hinton深度信念網路.md、2012-AlexNet影像革命.md、2017-Transformer.md

補充 -- 程式實作(python + numpy + sklearn + torchvision)#

本案兩條可執行線索——規模冪律 Error ∝ N^(−α) 與增廣管線——見 _code/2009-ImageNet.py(已實測可跑):

# 2009 - ImageNet 資料集: 規模法則 + 增廣管線
import numpy as np
import torch
import torchvision.transforms as T
from sklearn.linear_model import LinearRegression


def main():
    # (1) 冪律擬合: 誤差點 (N: 資料量, err: top-5錯誤率示意)
    N = np.array([1e4, 1e5, 1e6, 1e7, 1.4e7])
    err = np.array([0.62, 0.38, 0.22, 0.13, 0.10])
    reg = LinearRegression().fit(np.log10(N).reshape(-1, 1), np.log10(err))
    alpha = -reg.coef_[0]
    print(f"擬合 log(err) = a - α·log(N): α={alpha:.2f} (書中 α≈0.2-0.5, 資料每增10倍誤差打 {10 ** -alpha:.1%} 折)")
    print(f"  R²={reg.score(np.log10(N).reshape(-1, 1), np.log10(err)):.3f} (冪律在log-log下是直線)")

    # (2) 增廣管線: AlexNet 靠它把 120萬張洗成等效數倍
    aug = T.Compose([T.RandomResizedCrop(32, scale=(0.5, 1.0)),
                     T.RandomHorizontalFlip(p=1.0),
                     T.ColorJitter(0.4, 0.4, 0.4),
                     T.ToTensor()])
    from PIL import Image
    img = Image.fromarray((np.random.default_rng(0).random((64, 64, 3)) * 255).astype("uint8"))
    outs = torch.stack([aug(img) for _ in range(4)])
    print(f"增廣輸出: {tuple(outs.shape)} (4個版本, 均值={outs.mean():.3f}, 標準差={outs.std():.3f})")
    print("結論: 資料集×增廣 = 2012 年的燃料; 沒有 ImageNet 就沒有 AlexNet")


if __name__ == "__main__":
    main()

執行結果(python3 _code/2009-ImageNet.py):

擬合 log(err) = a - α·log(N): α=0.24 (書中 α≈0.2-0.5, 資料每增10倍誤差打 57.2% 折)
  R²=0.991 (冪律在log-log下是直線)
增廣輸出: (4, 3, 32, 32) (4個版本, 均值=0.464, 標準差=0.121)
結論: 資料集×增廣 = 2012 年的燃料; 沒有 ImageNet 就沒有 AlexNet

程式解說:(1) 用 sklearn 在 log-log 尺度做一元線性回歸,估出 α=0.24、R²=0.991——本文第二條線索的冪律在此是可算的數字:資料每增 10 倍,誤差約打六折;ImageNet 把資料從萬級推到千萬級(3 個數量級),誤差因而砍半再砍半。(2) 同一張圖走四遍增廣管線(裁剪+翻轉+抖色)得四個版本——AlexNet 論文的增廣把 120 萬張洗成等效 2048 倍,此即「資料也是架構」的含義。Dataset+增廣+GPU 三股線索在此交會,缺一不可。