2009 - ImageNet 資料集#
案件摘要#
2009 年,李飛飛(Fei-Fei Li)團隊在 CVPR 發表 ImageNet:以 WordNet 層級為骨架、包含 1,400 萬張標註影像、2 萬餘類別的超大資料集:
一句話:資料集即基石。深度學習革命的引爆缺的不是演算法(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 的先聲):模型效能隨資料量冪律增長:
| 資料集 | 年份 | 影像數 | 類別數 | 能餵飽的模型 |
|---|---|---|---|---|
| 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 三股線索在此交會,缺一不可。