發表文章

目前顯示的是 11月, 2026的文章

VGG16遷移學習(他山之石,可以攻玉)_分辨人和馬_使用 TensorFlow Keras 實作 VGG16 遷移學習_part1.圖檔格式轉換前處理&生成自訂數據集

圖片
絕大多數教科書或是網上課程、教學文章,都會是拿內建的toy dataset(鳶尾花、手寫字...等)在做CNN訓練分類。不過這十分不接地氣,真實場景是我們會有自己前處理過的圖像資料集,要怎麼把它封裝成tensorflow可以讀取的dataset格式,是我們需掌握的基礎。 這邊就拿這個二元分類的資料集做一個示範筆記 Horses Or Humans Dataset https://www.kaggle.com/datasets/sanikamal/horses-or-humans-dataset 資料集包含 500 張以不同姿勢、出現在不同地點的各類馬匹物種渲染影像,另包含 527 張以不同姿勢、出現在不同地點的人物渲染影像。 資料集特別納入男性與女性,以及亞洲人、黑人、南亞裔與白人。驗證集則新增 6 位性別、族裔與姿勢各異的人物,以確保資料涵蓋範圍廣泛。 人、馬影像大小是300x300x4(RGBA四個通道)的png圖檔 遷移學習(Transfer Learning)是一種機器學習技術,將你在「某個任務或領域」學到的知識和權重,拿來應用到「另一個相關但不同」的新任務上。 「他山之石,可以攻玉。」 這名句最早出自《詩經·小雅·鶴鳴》,意思是別的山上的石頭,能夠用來打磨玉器或用來製成加工玉石的磨石。既比喻別國的賢才可為本國效力,也比喻能幫助自己改正缺點的人或意見。遷移學習正是如此,透過借用其他模型已經學習到的知識,幫助新模型更有效率地完成新的分類任務。 以下是VGG16原本的神經網路架構,整個神經網路都只使用了1x1、3x3的卷積核。 採用了16層(分別為13個卷積層和3個全連接層)。 在VGG中,所有使用的卷積、池化的配置都統一固定。 卷積配置:3×3的卷積核,填滿1,stride:1 池化配置:2×2的池化窗口,stride:2,池化方式:max  。 所有隱藏層的激活函數都採用ReLU函數。 https://datahacker.rs/deep-learning-vgg-16-vs-vgg-19/ 3x224x224影像輸入 Convolutional Blocks可分為C1、C2、C3、C4、C5 Fully Connected Layers可分為F6、F7、F8。 C1. conv(3,64)->ReLu->conv(64,64)->...