知乎live:計算機視覺從入門到放肆--羅韻
知乎 : 計算機視覺從入門到放肆 羅韻
計算機視覺跟深度學習的結合是必然的事情
計算機視覺,圖像處理 基礎:
計算機視覺,機器視覺,圖像處理的關系是什么?
人工智能領域下的一個分支:計算機視覺
針對場景、方法、工具都不一樣
入門提前知道的東西↑
圖像的基礎知識:
圖像深度:(存儲每一個像素用到的bits),占用的bit數越多,所能表現的顏色越多,越豐富
例如 : 400*400 8位(深度)圖,數據量有多少呢?
計算方法: 400*400*8/8 == 160k
根據深度的取值范圍:每個像素的取值范圍,決定了顏色的豐富度 2^8,0-255
圖像的數據量=圖像的分辨率 *圖像深度/8
圖像分辨率是指 一幅圖像橫向和縱向的像素點數相乘
圖像的壓縮格式:jpg,png,bmp,tif 本質上是做壓縮編碼
奇怪的例子:兩張圖的大小,長寬,位數都一樣,但壓縮后的大小不一樣
一個很復雜的圖,和一張很簡單的圖,他們都是一張jpg,但他們的大小是不一樣的,是因為圖片使用的壓縮格式和編碼不一樣
圖片的通道數:灰度圖(單通道),RGBA(四通道):包括了RBG跟A(透明度)
兩通道的圖(一個通道放實數,另一個通道放虛數):主要為了編程的方便
16位圖:本來是三通道圖,為了減少數據量,壓縮到16位(剛好兩個通道),
常見:RGB555(R占5位,G占5位,B占5位),RGB565 古老通道形式
監控攝像頭,模擬相機:yuv,yuyv這些數據格式,關乎於圖片的通道數和存儲方式
視頻的基礎知識:
IPB幀,幀率,碼率,分辨率
視頻分析的第一步,視頻的結構,特點,比如(幀率和碼率特別低,是不能套模版的)
比如做目標跟蹤,人家是每秒30幀情況下跟蹤效果很好,但是如果你每秒只有2幀,那你
跟蹤效果,肯定會有影響(有可能人在上一幀有,下一幀就沒有了,跟蹤個P啊。。)
維度:
IPB:原始的視頻可以理解為是一些圖片的序列
而視頻里面每一張有序的圖片,我們叫做一幀
視頻:有序的圖片序列
(圖片都有壓縮,那視頻肯定也有壓縮啊)
而IPB指的是,在壓縮完的視頻里面,只會存在的三種幀
I幀:關鍵幀,(會把一張圖片完整的保留下來),很重要,I幀不能出錯,出錯全GG
P幀:指的是當前這一幀和上一張關鍵幀的區別,解碼的時候很簡單,只需要用之前
緩存的畫面疊加上這一幀的差別,就能生成最終的畫面,所以我們就不需要把畫面 完全保留下來,而是保留下 P幀(當前幀和上一個I幀的差別)
B幀:雙向差別幀(跟上一個I幀的差別,下一個I幀的差別)
解碼B幀,cpu會比較累
所以一個視頻被壓縮后,只有這三種幀。
視頻在當前更多的使用方式,已經不是用硬盤去讀取,而是用網絡的形式去讀取
例如:網絡攝像頭,視頻的網絡地址(對於I幀的要求更高)
如果傳輸卻一個I幀,視頻會缺一段。。。
碼率:碼率越大,視頻體積越大,碼率越小,視頻體積越小
碼率:視頻傳輸的時候,單位時間傳送的單位數,kb/s,
采樣率:單位時間內取樣越多,精確度越大
視頻碼率很低--->單位時間內采樣率很低,
一個視頻,碼率不夠的情況,我們得到的視頻可能只有原數據的一半,就會很模糊
如果你了解到你這個視頻本身碼率很低的情況下,你要用的方法是低碼率的方法,
如果碼率很高,可以用常用的數據庫和數據集去學習訓練
幀率:每秒有多少幀。
分辨率:圖像的大小和圖像的質量 正比關系
網絡攝像機:網絡視頻地址的形式去訪問,清晰度比模擬攝像機高處不少,
比模擬攝像機的市場占有率高的多
工業攝像機:高精密儀器檢測。。
焦距:決定了取景范圍
顯卡GPU計算,谷歌TPU(高性能處理器)
GPU與CPU的差別:
性能(低延時性)和吞吐量
CPU:低延時性,高性能,低吞吐量,local cache比較大,同時讀入大量的數據,集中分析
GPU:吞吐量很高,延時性比較高 ,cache小,並行線程非常多,處理小量數據
一張圖片特別合適用GPU分析,把每一個像素,當做一個線程處理,發揮GPU性能
計算機視覺設計到的面非常多,除了它是人工智能的一個分支外
包括 機器學習,數學,認知神經心理學,機器人控制,信號處理。。。
計算機視覺:偏軟件處理,跟應用場景相關。
機器視覺:硬件上的結合,機器人,工業級的攝像機,工業級的檢測,跟計算機本身交集多
圖像處理:更側重圖像像素級別的處理
cs231n 李飛飛 計算機視覺
編程語言: python(numby,scipiy,實現論文中的算法),c/c++(生產環境),熟練c/c++
Matlab(實現算法),java(實現算法)
數學基礎:概率學和統計學(對樣本分布的理解)---了解基本知識
幾何代數,微積分,機器學習(MachineLearning)
第一本:適合入門級別(本科結束--研究生階段,基礎知識多,matlabcodes,slis(音譯))
第四本:有一定計算機視覺基礎(入門后),opencv軟件庫,非常接地氣,一個情景一個 理論對應一個實現方法,快速進入開發,具備良好開發能力
第二本:對cv有一個深入的理解,計算機視覺領域的寶典,包含各個領域,權威書,工具 書
第三本:3D圖形學,ar,vr,photograph,cv里面的幾何知識。
兩門足夠了,認真看完,就是中等的cv研究人員,講的都很深入
Cs223b,講的更理論,純cv
Cs231n,非常經典的課程,比223b進步的地方主要是結合深度學習的
如果主攻3D重構,圖像,有cs223a(機器人導論???,live說錯了嗎),專門講重構,ar,vr
非常有用的網站↑
從1994開始做的索引,涵蓋了cv的所有topic,subtopic,著作,論文,教材,各類主題的關鍵詞,會議,期刊,書籍,剛才書的第二本就有提到
深度學習的知識,唯一要看的書!
還有一些論文。。。
深度學習的入門書籍!(里面包含數學知識)
對於那行數學知識,不需要了解非常深入,但要了解到這本書前五個章節
學習一些開源的軟件,框架,opencv必不可少(快速實現經典算法和函數)
重要性排序:Opencv,tensorflow(更像一門編程語言),caffe(深度學習子方向,卷積神經網絡)
Torch mxnet看情況使用。。。
Ffmpeg視頻轉換處理,批量處理,格式的處理,很方便。
相關的論文:
每個研究方向。。
熟悉所在方向的發展歷程,有那些里程碑式的文獻(必須精度),研究人員寫的博文
,可以從論文前言,摘要,領域的研究現狀,研究過往,找到對應的文獻。。
例子:利用深度學習做目標檢測,這個領域在這兩年里程碑式的論文,包括RNN,FAST RNN,
並且要精度。。。
每天去看一下這個網站,更新最新的研究論文。
最好寫論文筆記,他解決了什么問題,用的什么方法,有沒有創新點,達到了什么效果,
存在着那些缺點。
自己做的研究領域,當前頂會和頂刊,沒有,可能是你after了,或者人做的少。
如果有的,你要去跟進當前最新的進展(過一遍),知道當前的潮流
----------------------------------------------------------------------------
一些問題的答案:
未來cv就業,工業應用級別C++是必須的。
cv需求還挺大
粗暴入門做項目。。。