之前通過三篇文章簡單介紹了機器學習常用的幾種經典演算法,當然也包括了目前很火的 CNNs 演算法了:
這些演算法各有各的優缺點和適用的領域,瞭解熟悉它們是很有必要的,但如何應用它們還需要具體問題具體分析,而機器學習常見的應用方向,包括以下幾個:
- 計算機視覺(CV)
- 自然語言處理(NLP)
- 語音識別
- 推薦系統
- 廣告
等等
更詳細的可以參考之前推薦過的一個網站:
這個網站非常詳細劃分了 16 個大方向,包括總共 1081 個子方向。如果想進入機器學習領域,首先還是選擇一個方向領域,然後瞭解和熟悉該方向領域內所需要的演算法,特定的解決技巧等。
當然,這篇文章主要介紹的是計算機視覺的應用,計算機視覺也算是這 16 個方向裡面最熱門也是發展最成熟的其中一個方向了。
計算機視覺可以分為以下幾大方向:
- 影象分類
- 目標檢測
- 影象分割
- 風格遷移
- 影象重構
- 超解析度
- 影象生成
- 人臉
- 其他
雖然這裡說的都是影象,但其實視訊也屬於計算機視覺的研究物件,所以還有視訊分類、檢測、生成,以及追蹤,但篇幅的關係,以及目前研究工作方向也集中於影象,暫時就不介紹視訊方面應用的內容。
每個方向會簡單介紹該方向需要解決的問題,以及推薦一些 Github 專案、論文或者是綜述文章。
1. 影象分類(Image Classification)
影象分類,也可以稱為影象識別,顧名思義,就是辨別影象是什麼,或者說影象中的物體屬於什麼類別。
影象分類根據不同分類標準可以劃分為很多種子方向。
比如根據類別標籤,可以劃分為:
- 二分類問題,比如判斷圖片中是否包含人臉;
- 多分類問題,比如鳥類識別;
- 多標籤分類,每個類別都包含多種屬性的標籤,比如對於服飾分類,可以加上衣服顏色、紋理、袖長等標籤,輸出的不只是單一的類別,還可以包括多個屬性。
根據分類物件,可以劃分為:
- 通用分類,比如簡單劃分為鳥類、車、貓、狗等類別;
- 細粒度分類,目前影象分類比較熱門的領域,比如鳥類、花卉、貓狗等類別,它們的一些更精細的類別之間非常相似,而同個類別則可能由於遮擋、角度、光照等原因就不易分辨。
根據類別數量,還可以分為:
- Few-shot learning:即小樣本學習,訓練集中每個類別數量很少,包括
one-shot
和zero-shot
; - large-scale learning:大規模樣本學習,也是現在主流的分類方法,這也是由於深度學習對資料集的要求。
推薦的 Github 專案如下:
論文:
- ImageNet Classification With Deep Convolutional Neural Networks, 2012
- Very Deep Convolutional Networks for Large-Scale Image Recognition, 2014.
- Going Deeper with Convolutions, 2015.
- Deep Residual Learning for Image Recognition, 2015.
- Inceptionv4 && Inception-ResNetv2,2016
- RexNext,2016
- NasNet,2017
- ShuffleNetV2,2018
- SKNet,2019
文章:
常用的影象分類資料集:
- Mnist:手寫數字資料集,包含 60000 張訓練集和 10000 張測試集。
- Cifar:分為 Cifar10 和 Cifar100。前者包含 60000 張圖片,總共10個類別,每類 6000 張圖片。後者是 100 個類別,每個類別 600 張圖片。類別包括貓狗鳥等動物、飛機汽車船等交通工具。
- Imagenet:應該是目前最大的開源影象資料集,包含 1500 萬張圖片,2.2 萬個類別。
2. 目標檢測(Object Detection)
目標檢測通常包含兩方面的工作,首先是找到目標,然後就是識別目標。
目標檢測可以分為單物體檢測和多物體檢測,即影象中目標的數量,例子如下所示:
以上兩個例子是來自 VOC 2012 資料集的圖片,實際上還有更多更復雜的場景,如 MS COCO 資料集的圖片例子:
目標檢測領域,其實有很多方法,其發展史如下所示:
從上圖可以知道有幾個方法系列:
- R-CNN 系列,從 R-CNN 到 Fast R-CNN、Faster R-CNN,Mask R-CNN;
- YOLO 系列,從 v1 到 2018 年的 v3 版本
Github 專案:
論文:
- R-CNN,2013
- Fast R-CNN,2015
- Faster R-CNN,2015
- Mask R-CNN,2017
- YOLO,2015
- YOLOv2,2016
- YOLOv3,2018
- SSD,2015
- FPN,2016
文章:
- 一文讀懂目標檢測:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
- 教程 | 單級式目標檢測方法概述:YOLO 與 SSD
- 從 RCNN 到 SSD,這應該是最全的一份目標檢測演算法盤點
- 從 R-CNN 到 RFBNet,目標檢測架構 5 年演進全盤點
常用的資料集:
3. 影象分割(Object Segmentation)
影象分割是基於影象檢測的,它需要檢測到目標物體,然後把物體分割出來。
影象分割可以分為三種:
- 普通分割:將不同分屬於不同物體的畫素區域分開,比如前景區域和後景區域的分割;
- 語義分割:普通分割的基礎上,在畫素級別上的分類,屬於同一類的畫素都要被歸為一類,比如分割出不同類別的物體;
- 例項分割:語義分割的基礎上,分割出每個例項物體,比如對圖片中的多隻狗都分割出來,識別出來它們是不同的個體,不僅僅是屬於哪個類別。
一個圖形分割的例子如下所示,下圖就是一個例項分割的例子,用不同的顏色表示不同的例項。
Github:
論文:
文章:
4. 風格遷移(Style Transfer)
風格遷移是指將一個領域或者幾張圖片的風格應用到其他領域或者圖片上。比如將抽象派的風格應用到寫實派的圖片上。
一個風格遷移的例子如下, 圖 A 是原圖,後面的 B-F 五幅圖都是根據不同風格得到的結果。
一般資料集採用常用的資料集加一些著名的藝術畫作品,比如梵高、畢加索等。
Github:
- A simple, concise tensorflow implementation of style transfer (neural style)
- TensorFlow (Python API) implementation of Neural Style
- TensorFlow CNN for fast style transfer
論文:
- A Neural Algorithm of Artistic Style,2015
- Image Style Transfer Using Convolutional Neural Networks, 2016
- Deep Photo Style Transfer,2017
文章:
- 影象風格遷移(Neural Style)簡史
- Style Transfer | 風格遷移綜述
- 感知損失(Perceptual Losses)
- 影象風格轉換(Image style transfer)
- 風格遷移(Style Transfer)論文閱讀整理(一)
5. 影象重構(Image Reconstruction)
影象重構,也稱為影象修復(Image Inpainting),其目的就是修復影象中缺失的地方,比如可以用於修復一些老的有損壞的黑白照片和影片。通常會採用常用的資料集,然後人為製造圖片中需要修復的地方。
一個修復的例子如下所示,總共是四張需要修復的圖片,例子來自論文"Image Inpainting for Irregular Holes Using Partial Convolutions"。
論文:
- Pixel Recurrent Neural Networks, 2016.
- Image Inpainting for Irregular Holes Using Partial Convolutions, 2018.
- Highly Scalable Image Reconstruction using Deep Neural Networks with Bandpass Filtering, 2018.
- Generative Image Inpainting with Contextual Attention, 2018
- Free-Form Image Inpainting with Gated Convolution,2018
- EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning,2019
Github:
文章:
6. 超解析度(Super-Resolution)
超解析度是指生成一個比原圖解析度更高、細節更清晰的任務。一個例子如下圖所示,圖例來自論文"Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network"。
通常超解析度的模型也可以用於解決影象恢復(image restoration)和修復(inpainting),因為它們都是解決比較關聯的問題。
常用的資料集主要是採用現有的資料集,並生成解析度較低的圖片用於模型的訓練。
Github:
- Image Super-Resolution for Anime-Style Art--用於動漫圖片的超解析度應用,14k 的 stars
- neural-enhance
- Image super-resolution through deep learning
論文:
- Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network, 2017.
- Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution, 2017.
- Deep Image Prior, 2017.
- ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks,2018
文章:
7. 影象生成(Image Synthesis)
影象生成是根據一張圖片生成修改部分割槽域的圖片或者是全新的圖片的任務。這個應用最近幾年快速發展,主要原因也是由於 GANs 是最近幾年非常熱門的研究方向,而影象生成就是 GANs 的一大應用。
一個影象生成例子如下:
Githubs:
- tensorflow-generative-model-collections--整合了多種 GANs 的程式碼
- The-gan-zoo--收集了當前的所有 GANs 相關的論文
- AdversarialNetsPapers
論文:
- Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.
- Conditional Image Generation with PixelCNN Decoders, 2016.
- Pix2Pix--Image-to-image translation with conditional adversarial networks,2016
- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017.
- bigGAN--LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS,2018
文章:
- 乾貨 | 深入淺出 GAN·原理篇文字版(完整)
- 深度 | 生成對抗網路初學入門:一文讀懂GAN的基本原理(附資源)
- 獨家 | GAN之父NIPS 2016演講現場直擊:全方位解讀生成對抗網路的原理及未來(附PPT)
- 英偉達再出GAN神作!多層次特徵的風格遷移人臉生成器
8. 人臉
人臉方面的應用,包括人臉識別、人臉檢測、人臉匹配、人臉對齊等等,這應該是計算機視覺方面最熱門也是發展最成熟的應用,而且已經比較廣泛的應用在各種安全、身份認證等,比如人臉支付、人臉解鎖。
這裡就直接推薦幾個 Github 專案、論文、文章和資料集
Github:
- awesome-Face_Recognition:近十年的人臉相關的所有論文合集
- face_recognition:人臉識別庫,可以實現識別、檢測、匹配等等功能。
- facenet
論文:
- FaceNet: A Unified Embedding for Face Recognition and Clustering,2015
- Face Recognition: From Traditional to Deep Learning Methods,2018
- MSFD:Multi-Scale Receptive Field Face Detector,2018
- DSFD: Dual Shot Face Detector,2018
- Neural Architecture Search for Deep Face Recognition,2019
文章:
資料集:
10. 其他
實際上還有其他很多方向,包括:
- 圖文生成(Image Captioning):給圖片生成一段描述。
Show and Tell: A Neural Image Caption Generator, 2014.
- 文字生成圖片(Text to Image):基於文字來生成圖片。
AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks, 2017.
- 圖片上色(Image Colorization):將圖片從黑白變為彩色圖。
Colorful Image Colorization, 2016.
- 人體姿態估計(human pose estimation):識別人的行為動作
Cascaded Pyramid Network for Multi-Person Pose Estimation, 2017
還有包括 3D、視訊、醫學影象、問答、自動駕駛、追蹤等等方向,具體可以檢視下面這個網站:
paperswithcode.com/area/comput…
而如果認定一個方向,想開始學習這方面的內容,首先推薦可以先查詢中文方面的綜述文章或者論文,當然如果英語閱讀能力比較好的,也可以檢視英文的綜述文章,通過看綜述來檢視下自己需要閱讀的論文,論文推薦先看最近3-5年內的論文,太過久遠的論文,除非需要更加深入瞭解某個演算法,否則都不太需要閱讀。
此外,就是需要結合實際專案來加深對演算法的瞭解,通過跑下程式碼,也可以更好了解某個演算法具體是如何實現的。
參考
小結
本文簡單介紹了幾個計算機視覺方面的應用,包括應用解決的問題以及推薦了幾個 Github 專案和論文、文章,和常用資料集。
歡迎關注我的微信公眾號--機器學習與計算機視覺,或者掃描下方的二維碼,大家一起交流,學習和進步!
往期精彩推薦
機器學習系列
- 初學者的機器學習入門實戰教程!
- 模型評估、過擬合欠擬合以及超引數調優方法
- 常用機器學習演算法彙總比較(完)
- 常用機器學習演算法彙總比較(上)
- 機器學習入門系列(2)--如何構建一個完整的機器學習專案(一)
- 特徵工程之資料預處理(上)