計算機視覺入門:我推薦你這樣學習!【轉】

近年來,計算機視覺取得了很大進展。這些是我將在這裏提到的主題內容:html

技術:node

  1. 人臉檢測:Haar,HOG,MTCNN,Mobilenet
  2. 面部識別:CNN,Facenet
  3. 對象識別:alexnet,inceptionnet,resnet
  4. 遷移學習:在一個新主題上用不多的資源從新訓練大型神經網絡
  5. 圖像分割:rcnn
  6. GAN
  7. 計算機視覺硬件:選擇什麼,GPU很重要
  8. 集成視覺的UI應用程序:ownphotos

應用:git

  1. 我的照片組織
  2. 自動駕駛汽車
  3. 自主無人機
  4. 解決驗證碼/ OCR
  5. 過濾基於圖片的網站/應用程序的圖片
  6. 自動標記應用的圖片
  7. 從視頻中提取信息(電視節目、電影)
  8. 視覺問題回答
  9. 藝術

關注的人:github

  重要的深度學習創始人:Andrew ng,Yann lecun,Bengio yoshua,Hinton joffrey算法

課程 :數據庫

  1. deep learning@ coursera
  2. machine learning@ coursera

相關領域:網絡

  • 深度強化學習:使用cnn做爲輸入層,查看ppo和dqn
  • 與nlp的交互:lstm 2 cnn

人臉檢測架構

計算機視覺入門:我推薦你這樣學習!

面部檢測是關於在面部周圍放置盒子app

人臉檢測是檢測人臉的其中一項任務。有幾種算法能夠作到這一點。機器學習

https://github.com/nodefluxio/face-detector-benchmark提供了這些方法的速度基準,而且有易於重用的實現代碼。

Haar 分類器

計算機視覺入門:我推薦你這樣學習!

Haar 特徵

它們是自2000年以來在opencv中出現的舊計算機視覺方法。

它是一種機器學習模型,具備專門用於對象檢測的功能。 Haar 分類器速度快但準確度低。

請參閱https://docs.opencv.org/3.4.3/d7/d8b/tutorial_py_face_detection.html中有關如何使用它的更長解釋和示例

HOG:方向梯度直方圖

計算機視覺入門:我推薦你這樣學習!

方向梯度直方圖

HOG是一種新的生成對象檢測功能的方法:它自2005年開始使用。它基於計算圖像像素的梯度,而後將這些特徵饋送到機器學習算法中,例如SVM。它具備比haar分類器更好的精度。

它的一個實如今dlib中。這是在face_recognition(https://github.com/ageitgey/face_recognition)庫中。

MTCNN

一種使用CNN變化來檢測圖像的新方法,精度更高但速度稍慢。請參閱https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html

MobileNet

這是我這些天用於面部檢測的最好和最快的方法,基於通用移動網絡架構。請參閱https://arxiv.org/abs/1704.04861

物體檢測

計算機視覺入門:我推薦你這樣學習!

對許多物體進行物體檢測

可使用與面部檢測相似的方法來實現對象檢測。

這裏有2篇文章介紹了實現它的最新方法。這些方法有時也提供了對象類(實現對象識別):

  • (https://towardsdatascience.com/review-r-fcn-positive-sensitive-score-maps-object-detection-91cd2389345c r-fcn
  • https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e a comparison of r-cnn, fast r-cnn, faster r-cnn and yolo)

卷積神經網絡

最近深度學習的進展使新架構取得了很大成功。

使用許多卷積層的神經網絡就是其中之一。卷積層利用圖像的2D結構在神經網絡的下一層中生成有用信息。有關什麼是卷積的詳細說明,請參閱https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning-1f6f42faee1。

計算機視覺入門:我推薦你這樣學習!

卷積層

物體識別

對象識別是將對象分類爲類別(如貓,狗,......)的通常問題

基於卷積的深度神經網絡已被用於在此任務上取得很好的效果。

ILSVR會議一直在ImageNet上舉辦競賽(http://www.image-net.org/許多圖片的數據庫,包括貓、狗等物品標籤)

更成功的神經網絡如今已經使用愈來愈多的層。

計算機視覺入門:我推薦你這樣學習!

 

ResNet架構是迄今爲止對對象進行分類的最佳選擇。

計算機視覺入門:我推薦你這樣學習!

Resnet架構

要正確地訓練它,須要使用數百萬張圖像,即便使用數十個昂貴的GPU也仍然須要花費大量時間。

這就是爲何每次都不須要在這些大數據集上進行從新訓練的方法很是有用的緣由。遷移學習和嵌入就是採用的這樣的方法。

有關resnet的預訓練模型,請訪問https://github.com/tensorflow/tensor2tensor#image-classification

人臉識別

面部識別就是要弄清楚誰是一張臉。

歷史方法

解決該任務的歷史方法是將特徵工程應用於標準機器學習(例如svm)或應用深度學習方法進行對象識別。

這些方法的問題是它們須要每一個人的大量數據。實際上,數據並不老是可用的。

Facenet

谷歌研究人員在2015年推出了Facenet( https://arxiv.org/abs/1503.03832)。它提出了一種識別面部的方法,但卻不須要爲每一個人提供大量的面部樣本。

它的工做方式是拍攝大量面孔的圖片數據集(例如http://vis-www.cs.umass.edu/lfw/)。

而後採用現有的計算機視覺架構,例如初始(或resnet),而後用計算面部嵌入的層替換對象識別NN的最後一層。

對於數據集中的每一個人,(負樣本、正樣本、第二正樣本)選擇三個面(使用啓發法)並將其饋送到神經網絡,這產生了3個嵌入。在這3次嵌入中,計算三重態損失,這使得正樣本與任何其餘正樣本之間的距離最小化,而且最大化位置樣本與任何其餘負樣本之間的距離。

計算機視覺入門:我推薦你這樣學習!

三元組損失

計算機視覺入門:我推薦你這樣學習!

 

最終結果是每一個面(即便在原始訓練集中不存在的面)如今也能夠表示爲一個嵌入,它與其餘人的面部嵌入有很大距離的嵌入(128數字的向量)。

而後,這些嵌入能夠與任何機器學習模型(甚至簡單的諸如knn)一塊兒使用來識別人。

關於facenet和face embedding很是有趣的事情就是使用它你能夠識別只有幾張照片或者只有一張照片的人。

這是它的一個tensorflow實現:https://github.com/davidsandberg/facenet

這是人臉識別管道背後的思想的一個很酷的應用,而不是識別熊臉:https://hypraptive.github.io/2017/01/21/facenet-for-bears.html

遷移學習

計算機視覺入門:我推薦你這樣學習!

在自定義數據集上快速從新構建精確的神經網絡

訓練很是深的神經網絡(如resnet)是很是耗費資源的,須要大量數據。

計算機視覺是高度計算密集型的(對多個gpu進行數週的訓練)而且須要大量數據。爲了解決這個問題,咱們已經討論過爲面部計算通用嵌入。另外一種方法是採用現有網絡並僅在其餘數據集上從新訓練其幾個層。

這是一個教程:codelab教程。它建議你從新訓練一個初始模型,訓練未知的花類。

https://medium.com/@14prakash/transfer-learning-using-keras-d804b2e04ef8提供了在進行遷移學習時應該對哪一層進行再訓練的良好指導。

圖像分割

計算機視覺入門:我推薦你這樣學習!

用於自動駕駛的圖像分割

近年來,圖像分割成爲了一項使人印象深入的新任務。它包括識別圖像的每一個像素。

此任務與對象檢測有關。實現它的一種算法是mask r-cnn。

GAN

計算機視覺入門:我推薦你這樣學習!

大規模的GAN

由ian goodfellow引入的Generative Adversial Networks是一個神經網絡架構,分爲兩部分:鑑別器和發生器。

  • 鑑別器檢測圖片是不是類,它一般在對象分類數據集上預先訓練。
  • 生成器爲給定的類生成圖像

在學習期間調整發生器的權重,以便產生鑑別器沒法與該類的真實圖像區分的圖像。

如下是最大的GAN(https://arxiv.org/abs/1809.11096)生成的圖像示例

請參閱https://github.com/eriklindernoren/Keras-GAN在keras中的GAN實現

計算機視覺硬件

計算機視覺入門:我推薦你這樣學習!

 

要訓​​練大型模型,須要大量資源。實現這一目標有兩種方法。首先是使用雲服務,例如google cloud或aws。第二種方法是本身構建一臺帶有GPU的計算機。

只需1000美圓,就能夠構建一臺體面的機器來訓練深度學習模型。

視覺界面

計算機視覺入門:我推薦你這樣學習!

面對本身的照片儀表板

Ownphotos是一個使人驚歎的用戶界面,您能夠導入照片並自動計算面部嵌入,進行物體識別和識別面部。

它用 :

  • 面部識別:face_recognition
  • 物體檢測:densecap,places365

應用

計算機視覺入門:我推薦你這樣學習!

視覺問題回答

計算機視覺有不少應用:

  • 我的照片組織
  • 自動駕駛汽車
  • 自動無人機
  • 解決驗證碼/ OCR
  • 過濾基於圖片的網站/應用程序的圖片
  • 自動標記應用的圖片
  • 從視頻中提取信息(電視節目,電影)
  • 視覺問題解答:結合NLP和計算機視覺
  • 藝術:GAN

結論

正如咱們在這裏看到的,這裏有許多新的有趣的方法和應用程序。

我認爲人工智能在通常狀況下最有趣的是特別是在能夠重複使用的學習算法中,可以將這些方法應用於愈來愈多的任務,而不須要太多的處理能力和數據:

  • 遷移學習:它可使得從新利用預訓練的大型神經網絡成爲可能
  • 嵌入(例如facenet):能夠識別許多類而無需對這些類中的任何類進行訓練

轉自:https://www.toutiao.com/i6628041041964433934/?iid=52489949221&app=news_article&group_id=6628041041964433934&timestamp=1543476801

相關文章
相關標籤/搜索