10個預訓練模型開始你的深度學習(計算機視覺部分)
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
本文轉自 | AI公園
對于希望學習算法或嘗試現有框架的人來說,預訓練的模型是一個很好的幫助。由于時間限制或計算資源的限制,不可能總是從頭構建模型,這就是為什么存在預訓練模型!
對于希望學習算法或嘗試現有框架的人來說,預訓練的模型是一個很好的幫助。由于時間限制或計算資源的限制,不可能總是從頭構建模型,這就是為什么存在預訓練模型!你可以使用預訓練的模型作為基準來改進現有的模型,或者用它來測試對比你自己的模型。這個的潛力和可能性是巨大的。

在本文中,我們將研究在Keras中具有計算機視覺應用的各種預訓練模型。為什么Keras ?首先,因為我相信這是一個很好的開始學習神經網絡的庫。其次,我希望在本文中始終使用一個框架。這將幫助你從一個模型轉移到下一個模型,而不必擔心框架。
我鼓勵你在自己的機器上嘗試每個模型,了解它是如何工作的,以及如何改進或調整內部參數。
我們已經把這個話題分成了一系列文章。第二部分將重點介紹自然語言處理(NLP),第三部分將介紹音頻和語音模型。我們的目標是讓你在這些領域中啟動和運行現有的解決方案,這些解決方案將快速跟蹤你的學習過程。
目標檢測是計算機視覺領域中最常見的應用之一。它在各行各業(yè)都有應用,從自動駕駛汽車到計算人群中的人數。本節(jié)討論可用于檢測對象的預訓練模型。你也可以閱讀下面的文章來熟悉這個主題:
Understanding and Building an Object Detection Model from Scratch in Python:https://www.analyticsvidhya.com/blog/2018/06/understanding-building-object-detection-model-python/
https://github.com/matterport/Mask_RCNN

Mask R-CNN是一種靈活的對象實例分割框架。這個預訓練模型是基于Python和Keras上的Mask R-CNN技術的實現。它為給定圖像中的每個對象實例生成邊界框和分割掩碼(如上圖所示)。
這個GitHub庫提供了大量的資源,可以幫助你入門。它包括Mask R-CNN的源代碼、MS COCO的訓練代碼和預訓練權重、可以通過Jupyter notebooks 來對pipeline的每一步以及其他內容進行可視化。
https://github.com/experiencor/keras-yolo2

YOLO是一個非常流行的深度學習對象檢測框架。這個庫包含Keras中YOLOv2的實現。開發(fā)人員在袋鼠檢測、自動駕駛汽車、紅細胞檢測等各種目標圖像上測試了該框架,并發(fā)布了浣熊檢測的預訓練模型。
你可以在這里下載浣熊數據集(https://github.com/experiencor/raccoon_dataset),現在就開始使用這個預訓練的模型!數據集包含200張圖像(160-training, 40-validation)。你可以在這里下載整個模型的預訓練權重。根據開發(fā)人員的說法,這些權重可以用于一個類的對象檢測器。
https://keras.io/applications/#mobilenet

顧名思義,MobileNet是為移動設備設計的架構。它是由谷歌建造的。我們在上面已經鏈接了這個特殊的模型,它在流行的ImageNet數據庫(它是一個包含數百萬張屬于20,000多個類的圖像的數據庫)上提供了預訓練的權重。
正如你上面所看到的,MobileNet的應用不僅僅局限于對象檢測,它還跨越了各種計算機視覺任務,如人臉屬性、地標識別、細粒度分類等。
https://github.com/fyrestorm-sdb/tomatoes

如果給你幾百張西紅柿的圖片,你會怎么分類——有缺陷的/沒有缺陷的,還是成熟的/未成熟的?談到深度學習,解決這個問題的關鍵技術是圖像處理。在這個分類問題中,我們需要使用預訓練過的Keras VGG16模型來識別給定圖像中的番茄是成熟的還是未成熟的。
該模型對來自ImageNet數據集的390幅成熟番茄和未成熟番茄圖像進行訓練,并對18幅不同的番茄驗證圖像進行測試。這些驗證圖像的總體結果如下:
| Recall | 0.8888889 |
|---|---|
| Precision | 0.9411765 |
| F1 Score | 0.9142857 |
https://github.com/michalgdak/car-recognition

有很多方法來分類一輛車—根據它的車身風格,門的數量,打開或關閉的頂棚,座位的數量,等等。在這個特殊的問題中,我們必須把汽車的圖像分成不同的類別。這些類包括制造商,型號,生產年份,例如2012 Tesla model s。為了開發(fā)這個模型,我們使用了斯坦福的car數據集,其中包含了196個車型類別的16,185張圖片。
使用預訓練的VGG16、VGG19和InceptionV3模型對模型進行訓練。VGG網絡的特點是簡單,只使用3×3卷積層疊加在一起,增加深度。16和19代表網絡中權重層的數量。
由于數據集較小,最簡單的模型,即VGG16,是最準確的。在交叉驗證數據集上,VGG16網絡訓練的準確率為66.11%。更復雜的模型,如InceptionV3,由于偏差/方差問題,精度較低。
人臉識別在深度學習領域非常流行。越來越多的技術和模型正在以驚人的速度發(fā)展,以提升識別技術。它的應用范圍很廣——手機解鎖、人群檢測、通過分析人臉來分析情緒,等等。
另一方面,人臉重建是由人臉的近距離圖像生成三維模型人臉。利用二維信息創(chuàng)建三維結構化對象是業(yè)界的另一個深思熟慮的問題。面部再生技術在電影和游戲行業(yè)有著廣泛的應用。各種CGI模型都可以自動化,從而節(jié)省了大量的時間和金錢。
本文的這一部分討論這兩個領域的預訓練模型。
https://gist.github.com/EncodeTS/6bbe8cb8bebad7a672f0d872561782d9

從零開始創(chuàng)建人臉識別模型是一項艱巨的任務。你需要查找、收集并標注大量圖像,才能有希望構建一個像樣的模型。因此,在這個領域中使用預訓練的模型很有意義。
VGG-Face是一個包含2,622個唯一身份的數據集,包含200多萬張面孔。該預訓練模型的設計方法如下:
vgg-face-keras:直接將vgg-face模型轉換為keras模型
vgg-face-keras-fc:首先將vgg-face Caffe模型轉換為mxnet模型,然后再將其轉換為keras模型
https://github.com/dezmoanded/vrn-torch-to-keras

這是一個很酷的深度學習的實現。你可以從上面的圖像中推斷出這個模型是如何工作的,以便將面部特征重構成一個三維空間。
這個預訓練模型最初是使用Torch開發(fā)的,然后轉換到Keras。
圖像語義分割—Deeplabv3+
https://github.com/bonlime/keras-deeplab-v3-plus

語義圖像分割的任務是為圖像中的每個像素分配一個語義標簽。這些標簽可以是“天空”、“汽車”、“道路”、“長頸鹿”等。這種技術的作用是找到目標的輪廓,從而限制了精度要求(這就是它與精度要求寬松得多的圖像級分類的區(qū)別)。
Deeplabv3是谷歌最新的語義圖像分割模型。它最初是使用TensorFlow創(chuàng)建的,現在已經使用Keras實現。這個GitHub庫還提供了如何獲取標簽的代碼,如何使用這個預訓練的模型來定制類的數量,當然還有如何跟蹤自己的模型。
https://github.com/ternaus/robot-surgery-segmentation

該模型試圖解決機器人輔助手術場景下手術器械的圖像分割問題。問題進一步分為兩部分,具體如下:
二值分割:圖像中的每個像素都被標記為一個工具或背景
多類分割:將不同的儀器或儀器的不同部分與背景區(qū)分開來
該預訓練模型基于U-Net網絡體系結構,并通過使用最先進的語義分割神經網絡LinkNet和TernausNet進一步改進。對8×225幀高分辨率立體相機圖像序列進行訓練。
圖像描述
https://github.com/boluoyu/ImageCaption

還記得那些游戲嗎?在那些游戲中,你會看到一些圖片,然后你必須為它們配上說明文字。這就是圖像標題的基本含義。它使用了NLP和計算機視覺的結合來產生字幕。長期以來,該任務一直是一個具有挑戰(zhàn)性的任務,因為它需要具有無偏置圖像和場景的大型數據集。考慮到所有這些約束條件,該算法必須對任意給定的圖像進行推廣。
現在很多企業(yè)都在利用這種技術,但是你如何使用它呢?解決方案在于將給定的輸入圖像轉換為簡短而有意義的描述。編碼-解碼器框架被廣泛應用于這一任務。圖像編碼器是一個卷積神經網絡(CNN)。
這是一個在MS COCO數據集上的VGG 16預訓練模型,其中解碼器是一個長短時記憶(LSTM)網絡,用于預測給定圖像的標題。要獲得詳細的解釋和介紹,建議你繼續(xù)閱讀我們關于[自動圖像標題]的文章(https://www.analyticsvidhya.com/blog/2018/04/solving-animage-title -task- use -deep-learning/)。
深度學習是一個很難適應的領域,這就是為什么我們看到研究人員發(fā)布了這么多預訓練過的模型。我個人使用它們來理解和擴展我對對象檢測任務的知識,我強烈建議從上面選擇一個領域,并使用給定的模型開始您自己的旅程。

交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~

