10個預訓練模型開始你的深度學習(計算機視覺部分)

作者:PRANAV DAR
編譯:ronghuaiyang

導讀

對於希望學習算法或嘗試現有框架的人來說,預訓練的模型是一個很好的幫助。由於時間限制或計算資源的限制,不可能總是從頭構建模型,這就是為什麼存在預訓練模型!

介紹

對於希望學習算法或嘗試現有框架的人來說,預訓練的模型是一個很好的幫助。由於時間限制或計算資源的限制,不可能總是從頭構建模型,這就是為什麼存在預訓練模型!你可以使用預訓練的模型作為基準來改進現有的模型,或者用它來測試對比你自己的模型。這個的潛力和可能性是巨大的。


10個預訓練模型開始你的深度學習(計算機視覺部分)

在本文中,我們將研究在Keras中具有計算機視覺應用的各種預訓練模型。為什麼Keras ?首先,因為我相信這是一個很好的開始學習神經網絡的庫。其次,我希望在本文中始終使用一個框架。這將幫助你從一個模型轉移到下一個模型,而不必擔心框架。

我鼓勵你在自己的機器上嘗試每個模型,瞭解它是如何工作的,以及如何改進或調整內部參數。

我們已經把這個話題分成了一系列文章。第二部分將重點介紹自然語言處理(NLP),第三部分將介紹音頻和語音模型。我們的目標是讓你在這些領域中啟動和運行現有的解決方案,這些解決方案將快速跟蹤你的學習過程。

目標檢測

目標檢測是計算機視覺領域中最常見的應用之一。它在各行各業都有應用,從自動駕駛汽車到計算人群中的人數。本節討論可用於檢測對象的預訓練模型。你也可以閱讀下面的文章來熟悉這個主題:

  • Understanding and Building an Object Detection Model from Scratch in Python:https://www.analyticsvidhya.com/blog/2018/06/understanding-building-object-detection-model-python/

Mask R-CNN

https://github.com/matterport/Mask_RCNN

10個預訓練模型開始你的深度學習(計算機視覺部分)


Mask R-CNN是一種靈活的對象實例分割框架。這個預訓練模型是基於Python和Keras上的Mask R-CNN技術的實現。它為給定圖像中的每個對象實例生成邊界框和分割掩碼(如上圖所示)。

這個GitHub庫提供了大量的資源,可以幫助你入門。它包括Mask R-CNN的源代碼、MS COCO的訓練代碼和預訓練權重、可以通過Jupyter notebooks 來對pipeline的每一步以及其他內容進行可視化。

YOLOv2

https://github.com/experiencor/keras-yolo2

10個預訓練模型開始你的深度學習(計算機視覺部分)

YOLO是一個非常流行的深度學習對象檢測框架。這個庫包含Keras中YOLOv2的實現。開發人員在袋鼠檢測、自動駕駛汽車、紅細胞檢測等各種目標圖像上測試了該框架,併發布了浣熊檢測的預訓練模型。

你可以在這裡下載浣熊數據集(https://github.com/experiencor/raccoon_dataset),現在就開始使用這個預訓練的模型!數據集包含200張圖像(160-training, 40-validation)。你可以在這裡下載整個模型的預訓練權重。根據開發人員的說法,這些權重可以用於一個類的對象檢測器。

MobileNet

https://keras.io/applications/#mobilenet

10個預訓練模型開始你的深度學習(計算機視覺部分)

顧名思義,MobileNet是為移動設備設計的架構。它是由谷歌建造的。我們在上面已經鏈接了這個特殊的模型,它在流行的ImageNet數據庫(它是一個包含數百萬張屬於20,000多個類的圖像的數據庫)上提供了預訓練的權重。

正如你上面所看到的,MobileNet的應用不僅僅侷限於對象檢測,它還跨越了各種計算機視覺任務,如人臉屬性、地標識別、細粒度分類等。

成熟/生番茄分類

https://github.com/fyrestorm-sdb/tomatoes

10個預訓練模型開始你的深度學習(計算機視覺部分)

如果給你幾百張西紅柿的圖片,你會怎麼分類——有缺陷的/沒有缺陷的,還是成熟的/未成熟的?談到深度學習,解決這個問題的關鍵技術是圖像處理。在這個分類問題中,我們需要使用預訓練過的Keras VGG16模型來識別給定圖像中的番茄是成熟的還是未成熟的。

該模型對來自ImageNet數據集的390幅成熟番茄和未成熟番茄圖像進行訓練,並對18幅不同的番茄驗證圖像進行測試。這些驗證圖像的總體結果如下:

Recall 0.8888889

Precision 0.9411765

F1 Score 0.9142857

小汽車分類

https://github.com/michalgdak/car-recognition

10個預訓練模型開始你的深度學習(計算機視覺部分)

有很多方法來分類一輛車—根據它的車身風格,門的數量,打開或關閉的頂棚,座位的數量,等等。在這個特殊的問題中,我們必須把汽車的圖像分成不同的類別。這些類包括製造商,型號,生產年份,例如2012 Tesla model s。為了開發這個模型,我們使用了斯坦福的car數據集,其中包含了196個車型類別的16,185張圖片。

使用預訓練的VGG16、VGG19和InceptionV3模型對模型進行訓練。VGG網絡的特點是簡單,只使用3×3卷積層疊加在一起,增加深度。16和19代表網絡中權重層的數量。

由於數據集較小,最簡單的模型,即VGG16,是最準確的。在交叉驗證數據集上,VGG16網絡訓練的準確率為66.11%。更復雜的模型,如InceptionV3,由於偏差/方差問題,精度較低。

人臉識別和重建

人臉識別在深度學習領域非常流行。越來越多的技術和模型正在以驚人的速度發展,以提升識別技術。它的應用範圍很廣——手機解鎖、人群檢測、通過分析人臉來分析情緒,等等。

另一方面,人臉重建是由人臉的近距離圖像生成三維模型人臉。利用二維信息創建三維結構化對象是業界的另一個深思熟慮的問題。面部再生技術在電影和遊戲行業有著廣泛的應用。各種CGI模型都可以自動化,從而節省了大量的時間和金錢。

本文的這一部分討論這兩個領域的預訓練模型。

VGG-Face Model

https://gist.github.com/EncodeTS/6bbe8cb8bebad7a672f0d872561782d9

10個預訓練模型開始你的深度學習(計算機視覺部分)

從零開始創建人臉識別模型是一項艱鉅的任務。你需要查找、收集並標註大量圖像,才能有希望構建一個像樣的模型。因此,在這個領域中使用預訓練的模型很有意義。

VGG-Face是一個包含2,622個唯一身份的數據集,包含200多萬張面孔。該預訓練模型的設計方法如下:

  • vgg-face-keras:直接將vgg-face模型轉換為keras模型
  • vgg-face-keras-fc:首先將vgg-face Caffe模型轉換為mxnet模型,然後再將其轉換為keras模型

從單張圖像重建3D人臉

https://github.com/dezmoanded/vrn-torch-to-keras

10個預訓練模型開始你的深度學習(計算機視覺部分)

這是一個很酷的深度學習的實現。你可以從上面的圖像中推斷出這個模型是如何工作的,以便將面部特徵重構成一個三維空間。

這個預訓練模型最初是使用Torch開發的,然後轉換到Keras。

分割

圖像語義分割—Deeplabv3+

https://github.com/bonlime/keras-deeplab-v3-plus

10個預訓練模型開始你的深度學習(計算機視覺部分)

語義圖像分割的任務是為圖像中的每個像素分配一個語義標籤。這些標籤可以是“天空”、“汽車”、“道路”、“長頸鹿”等。這種技術的作用是找到目標的輪廓,從而限制了精度要求(這就是它與精度要求寬鬆得多的圖像級分類的區別)。

Deeplabv3是谷歌最新的語義圖像分割模型。它最初是使用TensorFlow創建的,現在已經使用Keras實現。這個GitHub庫還提供瞭如何獲取標籤的代碼,如何使用這個預訓練的模型來定製類的數量,當然還有如何跟蹤自己的模型。

手術機器人圖像分割

https://github.com/ternaus/robot-surgery-segmentation

10個預訓練模型開始你的深度學習(計算機視覺部分)

該模型試圖解決機器人輔助手術場景下手術器械的圖像分割問題。問題進一步分為兩部分,具體如下:

  1. 二值分割:圖像中的每個像素都被標記為一個工具或背景
  2. 多類分割:將不同的儀器或儀器的不同部分與背景區分開來

該預訓練模型基於U-Net網絡體系結構,並通過使用最先進的語義分割神經網絡LinkNet和TernausNet進一步改進。對8×225幀高分辨率立體相機圖像序列進行訓練。

雜項

圖像描述

https://github.com/boluoyu/ImageCaption

10個預訓練模型開始你的深度學習(計算機視覺部分)

還記得那些遊戲嗎?在那些遊戲中,你會看到一些圖片,然後你必須為它們配上說明文字。這就是圖像標題的基本含義。它使用了NLP和計算機視覺的結合來產生字幕。長期以來,該任務一直是一個具有挑戰性的任務,因為它需要具有無偏置圖像和場景的大型數據集。考慮到所有這些約束條件,該算法必須對任意給定的圖像進行推廣。

現在很多企業都在利用這種技術,但是你如何使用它呢?解決方案在於將給定的輸入圖像轉換為簡短而有意義的描述。編碼-解碼器框架被廣泛應用於這一任務。圖像編碼器是一個卷積神經網絡(CNN)。

這是一個在MS COCO數據集上的VGG 16預訓練模型,其中解碼器是一個長短時記憶(LSTM)網絡,用於預測給定圖像的標題。要獲得詳細的解釋和介紹,建議你繼續閱讀我們關於[自動圖像標題]的文章(https://www.analyticsvidhya.com/blog/2018/04/solving-animage-title -task- use -deep-learning/)。

結束語

深度學習是一個很難適應的領域,這就是為什麼我們看到研究人員發佈了這麼多預訓練過的模型。我個人使用它們來理解和擴展我對對象檢測任務的知識,我強烈建議從上面選擇一個領域,並使用給定的模型開始您自己的旅程。

英文原文:https://www.analyticsvidhya.com/blog/2018/07/top-10-pretrained-models-get-started-deep-learning-part-1-computer-vision/

更多文章,請關注微信公眾號:AI公園

相關推薦

推薦中...