《python深度學習》筆記---5.3-1、貓狗分類(使用預訓練網絡)
一、總結
一句話總結:
【小型圖像數據集】:想要將深度學習應用於小型圖像數據集,一種常用且非常高效的方法是使用預訓練網絡。
【用卷積層提取的特征】:使用在ImageNet 上訓練的VGG16 網絡的卷積基從 貓狗圖像中提取有趣的特征,然后在這些特征上訓練一個貓狗分類器。
1、預訓練網絡(pretrained network)?
【預訓練網絡是保存好的網絡】:預訓練網絡(pretrained network)是一個保存好的網絡,之前已在大型數據集(通常是大規模圖像分類任務)上訓練好。
【原始數據集足夠大且足夠通用】:如果這個原始數據集足夠大且足夠通用,那么預訓練網絡學到的特征 的空間層次結構可以有效地作為視覺世界的通用模型,因此這些特征可用於各種不同的計算機 視覺問題,即使這些新問題涉及的類別和原始任務完全不同。
【例如訓練好分類動物的ImageNet用於貓狗分類】:假設有一個在 ImageNet 數據集(140 萬張標記圖像,1000 個不同的類別)上訓練 好的大型卷積神經網絡。ImageNet 中包含許多動物類別,其中包括不同種類的貓和狗,因此可 以認為它在貓狗分類問題上也能有良好的表現。
【預訓練網絡讓小數據問題非常有效】:這種學到的特征在不同問題之間的可移植性,是深度學習與許多 早期淺層學習方法相比的重要優勢,它使得深度學習對小數據問題非常有效。
2、使用預訓練網絡有兩種方法?
特征提取(feature extraction)和微調模型(fine-tuning)
3、使用預訓練網絡之特征提取(feature extraction)?
【從新樣本中提取出有趣的特征】:特征提取是使用之前網絡學到的表示來從新樣本中提取出有趣的特征。然后將這些特征輸 入一個新的分類器,從頭開始訓練。
【取出之前訓練好的網絡的卷積基】:對於卷積神經網 絡而言,特征提取就是取出之前訓練好的網絡的卷積基,在上面運行新數據,然后在輸出上面 訓練一個新的分類器
4、為什么僅重復使用卷積基?我們能否也重復使用密集連接分類器?
【卷積基學到的表示更加通用】:一般來說,應該避免這么做。原因在於卷積基學到的表示可能更加通用,因此更適合重復使用。
【卷積神經網絡的特征圖表示通用概念在圖像中是否存在】:無論面對什么樣的計算機視覺問題,這種特征圖都可能很 有用。
【dense層學到的是分類的概率信息】:但是,分類器學到的表示必然是針對於模型訓練的類別,其中僅包含某個類別出現在整 張圖像中的概率信息。
【dense層舍棄了空間信息】:此外,密集連接層的表示不再包含物體在輸入圖像中的位置信息。密集 連接層舍棄了空間的概念,而物體位置信息仍然由卷積特征圖所描述。如果物體位置對於問題 很重要,那么密集連接層的特征在很大程度上是無用的。
5、注意,某個卷積層提取的表示的通用性(以及可復用性)取決於該層在模型中的深度?
【前面是高通用特征,后面是抽象特征】:模型中更靠近底部的層提取的是局部的、高度通用的特征圖(比如視覺邊緣、顏色和紋理),而更 靠近頂部的層提取的是更加抽象的概念(比如“貓耳朵”或“狗眼睛”)。
【差異較大取卷積層前幾層】:因此,如果你的新數 據集與原始模型訓練的數據集有很大差異,那么最好只使用模型的前幾層來做特征提取,而不 是使用整個卷積基。
二、內容在總結中
博客對應課程的視頻位置: