大佬說,計算機視覺應(yīng)該這樣學(xué)

計算機視覺從入門到放肆

一、基礎(chǔ)知識

1.1 計算機視覺到底是什么?

計算機視覺是一門研究如何讓機器“看”的科學(xué)

更進(jìn)一步的說,就是使用攝像機和電腦代替人眼對目標(biāo)進(jìn)行識別、跟蹤和測量等機器視覺,并進(jìn)一步做圖形處理,使電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。

作為一門科學(xué)學(xué)科,計算機視覺研究相關(guān)的理論和技術(shù),視圖建立能夠從圖像或者多維數(shù)據(jù)中獲取'信息'的人工智能系統(tǒng)。

1.2 圖像
當(dāng)程序在讀取一張圖片時,需要考慮以下數(shù)據(jù):

  • 高度、寬度

    假如一張照片的分辨率為:1920*1080(單位為dpi,全稱為 dot per inch),1920 就是照片的寬度,1080 就是圖片的高度。

  • 深度

    存儲每個像素所用的位數(shù),比如正常RGB的深度就是 2^8 * 3 = 256 * 3 = 768 , 那么此類圖片中的深度為768,每個像素點都能夠代表768中顏色。

  • 通道數(shù)

    RGB圖片就是有三通道,RGBA類圖片就是有四通道

  • 顏色格式

    是將某種顏色表現(xiàn)為數(shù)字形式的模型,或者說是一種記錄圖像顏色的方式。比較常見的有:RGB模式、RGBA模式、CMYK模式、位圖模式、灰度模式、索引顏色模式、雙色調(diào)模式和多通道模式。

  • more
    圖像中的知識點太多,做基本圖像處理,了解以上知識個人感覺可以了。等到以后如果做深入研究,或許有機會做更多的學(xué)習(xí)

1.3 視頻

原始視頻 = 圖片序列,視頻中的每張有序圖片被稱為“幀(frame)”。壓縮后的視頻,會采取各種算法減少數(shù)據(jù)的容量,其中IPB就是最常見的。

  • 碼率

    數(shù)據(jù)傳輸時單位時間傳送的數(shù)據(jù)位數(shù),通俗一點的理解就是取樣率,單位時間取樣率越大,精度就越高,即分辨率越高

  • 幀率

    每秒傳輸?shù)膸瑪?shù),fps(有沒有一種似曾相識的感覺~~~),全稱為 frames per second

  • 分辨率

    每幀圖片的分辨率

  • 清晰度

    平常看片中,有不同清晰度,實際上就對應(yīng)著不同的分辨率

  • IPB

    在網(wǎng)絡(luò)視頻流中,并不是把每一幀圖片全部發(fā)送到客戶端來展示,而是傳輸每一幀的差別數(shù)據(jù)(IPB),客戶端然后對其進(jìn)行解析,最終補充每一幀完整圖片

1.4 攝像機

在實際應(yīng)用當(dāng)中,基本上都是通過不同種類的攝像機來獲取數(shù)據(jù),然后發(fā)送給服務(wù)端(AI Server)進(jìn)行處理,分類有:

  • 監(jiān)控攝像機(網(wǎng)絡(luò)攝像機和模擬攝像機)
  • 行業(yè)攝像機(超快動態(tài)攝像機、紅外攝像機、熱成像攝像機等)
  • 智能攝像機
  • 工業(yè)攝像機

1.5 CPU和GPU

我想大家肯定是知道,目前很多人工智能計算都遷移到GPU上進(jìn)行,tensorflow甚至還有cpu和gpu版本,所以其兩者的差別和使用方法,這是繞不開的問題。

廢話少說,先來上圖:

  • 架構(gòu)上的對比

    cpu-and-gpu-design.jpg
    • 綠色:計算單元
    • 橙紅色:存儲單元
    • 橙黃色:控制單元
  • 整體對比

    cpu-and-gpu.png
    • Cache、Local Memory : CPU > GPU
    • Threads(線程數(shù)):GPU > CPU
    • Registers(寄存器):GPU > CPU
    • SIMD Unit(單指令多數(shù)據(jù)流):GPU > CPU

CPU在設(shè)計上,低延遲,可是低吞吐量,CPU的ALU(算數(shù)運算單元)雖然少,可是很強大,可以在很少的時鐘周期內(nèi)完成算數(shù)計算,或許數(shù)量少,就可以任性的減少時鐘周期,所以其頻率非常高,能夠達(dá)到1.532 ~ 3 (千兆,10的9次方)。
大緩存容量、復(fù)雜的邏輯控制單元也可以減低延遲。

GPU在設(shè)計上,高延遲,可是高吞吐量。GPU的特點是有很多的ALU和很少的cache. 緩存的目的不是保存后面需要訪問的數(shù)據(jù)的,這點和CPU不同,而是為thread提高服務(wù)的。如果有很多線程需要訪問同一個相同的數(shù)據(jù),緩存會合并這些訪問,然后再去訪問dram(因為需要訪問的數(shù)據(jù)保存在dram中而不是cache里面),獲取數(shù)據(jù)后cache會轉(zhuǎn)發(fā)這個數(shù)據(jù)給對應(yīng)的線程,這個時候是數(shù)據(jù)轉(zhuǎn)發(fā)的角色。但是由于需要訪問dram,自然會帶來延時的問題。

參考鏈接

  • Cuda (Compute Unified Device Architecture)

    是顯卡廠商NVIDIA推出的運算平臺,采用并行計算架構(gòu),是GPU能夠解決復(fù)雜的計算問題。包含了CUDA指令集架構(gòu)以及GPU內(nèi)部的并行計算引擎。

    安裝教程自行搜索腦補就行。

1.6 編程語言 + 數(shù)學(xué)基礎(chǔ)

  • python

    推薦作為入門語言,簡單容易上手,需要了解一些庫:numpy、pandas、matplotlib等。

  • C++

    作為深入了解并嘗試進(jìn)行優(yōu)化,C++必不可少,也是編寫并修改的最佳語言。當(dāng)然,如果你了解C、Matlab等語言那也是甚好的。

  • 線性代數(shù)

    可以把重點放在矩陣運算上。

  • 概率統(tǒng)計

    了解基本概率統(tǒng)計知識、高斯分布、中值、標(biāo)準(zhǔn)差和方差等概念。

  • MachineLearning

    能夠用公式表示代價函數(shù)、使用低度下降法來優(yōu)化模型。當(dāng)然機器學(xué)習(xí)內(nèi)容實在是很多,建議能夠完整走一遍,也可以看斯坦福的CS229課程

1.7 計算機視覺的應(yīng)用

計算機視覺之于未來人工智能,就好比眼睛之于人的重要性一樣。是未來很多領(lǐng)域自動化獲取數(shù)據(jù)的主要渠道之一,也是處理數(shù)據(jù)的重要工具之一。目前可以預(yù)想到的應(yīng)用主要有如下:

  • 無人駕駛
  • 無人安防
  • 人臉識別
  • 文字識別
  • 車輛車牌識別
  • 以圖搜圖
  • VR/AR
  • 3D重構(gòu)
  • 醫(yī)學(xué)圖像分析
  • 無人機
  • more ......

二、推薦參考書和公開課

2.1 參考書籍

2.2 公開課

這兩門課我覺得經(jīng)典的課程,如果認(rèn)真學(xué)完的話,基本上是已經(jīng)入門了,找一般的工作工作應(yīng)該是沒有問題。

2.3 網(wǎng)站

  • Visionbib

    這個網(wǎng)站是國外大佬從1994年開始專注于計算機視覺研究,上面收錄了很多與此相關(guān)文獻(xiàn),大家可以看一些里程碑文獻(xiàn),讓自己能夠更好地理解視覺發(fā)展歷程。

  • vision.stanford

    沒事上斯坦福大學(xué)計算機視覺研究團(tuán)隊官網(wǎng)看看,大佬們有沒有發(fā)表一些研究成果文章,學(xué)習(xí)一番之后,將其翻譯成blog也不失為一個好的學(xué)習(xí)方法(裝逼方法)。

這兩個網(wǎng)站已經(jīng)足夠了,不要太多,學(xué)好才是最關(guān)鍵的。

三、你還是需要學(xué)習(xí)一些深度學(xué)習(xí)知識

關(guān)于深度學(xué)習(xí),評價最高的莫過于:《Deep Learning》Written by lan Goodfellow and YoshuaBengio

deep-learning-book.jpg

購買鏈接,這本AI圣經(jīng)我就不多廢話了,攢錢買回去好好修煉吧!

四、開源框架必不可少

關(guān)于開源框架,仁者見仁智者見智,我也免得引起戰(zhàn)爭,所以就羅列給一下個人不成熟的小建議。

  • Caffe

    深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)開源框架。

  • Tensorflow

    開源機器學(xué)習(xí)深度學(xué)習(xí)框架。

  • (Torch and Maxnet)

    其他深度學(xué)習(xí)開源框架

  • ffmpeg

    強大的視頻處理工具

流行框架的對比圖:

frames.png

參考鏈接

五、深入,則必須閱讀相關(guān)文獻(xiàn)

當(dāng)我們需要學(xué)習(xí)各種經(jīng)典模型的時候,到哪里去找資料呢?一般大家都會直接wikipedia,可是我只想說,上面的也只是英文版漢譯過來的,最好還是找一手資料,不然你吸收的知識,就不知道是被多少人消化過多少遍后得來的。當(dāng)然也是有好的,不過那些大牛都是直接看原版才能得出更加深刻的結(jié)論,所以看原版文獻(xiàn)是一件很重要的學(xué)習(xí)途徑,不然就永遠(yuǎn)裝不了*(學(xué)習(xí)不到最純正的knowledge)。

5.1 里程碑式的文獻(xiàn)

先熟悉所在方向的發(fā)展歷程,歷程中的里程碑式的文獻(xiàn)必須要精讀。

例如,深度學(xué)習(xí)做目標(biāo)檢測,RCNN、Fast RCNN、Fater RCNN、SPPNET、SSD和YOLO等模型;又例如,深度學(xué)習(xí)做目標(biāo)跟蹤,DLT、SO-DLT等等;再例如,對抗網(wǎng)絡(luò)GAN、CGAN、DCGAN、LAPGAN等等。

5.2 文獻(xiàn)網(wǎng)站

arxiv :每天去更新一下別人最新的工作

5.3 計算視覺的頂會

  • ICCV:國際計算機視覺大會
  • CVPR:國際計算機視覺與模式識別大會
  • ECCV:歐洲計算機視覺大會

5.4 計算機視覺的頂刊

  • PAMI:IEEE 模式分析與機器智能雜志
  • IJCV:國際計算機視覺雜志

六:總結(jié)

無論別人給出多好的資料,最終還是要靠自己踏實下來,對各種知識點細(xì)嚼慢咽。AI 不易,且行且珍惜


我個人對計算機視覺非常感興趣,接下來會不斷的分享各種關(guān)于CV的學(xué)習(xí)心得和干貨。小白上路,大家如果能施舍一些star或者follow將會是給我最大的動力。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容