愛伊米

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

4月20日起,智東西創課推出自動駕駛系列課第二季,9位自動駕駛新勢力的創始人和高管將帶來9節系列課。

第三課由眼擎科技CEO朱繼志主講,主題為《如何克服ISP解決不了的複雜光線難題》。本文為朱繼志的主講實錄,共計14605字,預計18分鐘讀完。一起了解周朱繼志的主講提綱:

1、自動駕駛前端成像的現狀

2、ISP架構及其在自動駕駛中的侷限性

3、成像引擎如何在複雜光線下提高成像準確率

4、120dB如何在自動駕駛領域中實現

在瀏覽正文之前,可以先思考以下幾個問題:

-實驗室資料和現場資料最大的差別是什麼?

-如何正確的理解ISP(影象訊號處理)?

-動態範圍的概念是什麼?動態範圍是如何導致複雜光線問題的?

-在自動駕駛領域中,視覺相比於鐳射雷達有哪些優點?

-eyemore用四年時間開發的成像引擎有什麼特點和優勢?

「提醒:如果希望下載自動駕駛第二季每堂課的完整課件,可以在車東西公眾號(ID:chedongxi)回覆關鍵詞“系列課”獲取。如果你希望成為主講導師,可以回覆關鍵詞“導師”,進行申請」

主講環節

朱繼志:

大家好,我是眼擎科技朱繼志。很高興今天有機會在智東西的自動駕駛系列課上給大家分享關於複雜光線視覺成像這個難題。看到群裡有很多在自動駕駛以及視覺相關的各種行業的小夥伴們,我先簡單介紹我們公司,我們是一家創業公司,專注於做新型的成像引擎(我們不叫ISP),在複雜光線下如何進行視覺成像,四年來一直專注於做這一個事情。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

視覺在影象、AI的各個領域應用都特別廣,自動駕駛就不用說了。群裡可能有不少人是做影象識別的,大家經常會看到有很多影象識別能力現在做得很高,95%、97%或者98%都有可能,但這些通常指的是在實驗室的資料或者是在光線比較好的環境下,實際上有很多客戶包括很多在做智慧駕駛的客戶都反映一個問題,在實際應用中由於影象源的問題,導致識別的效果會變差,很多影象源可能有各種各樣的問題,比如噪點太多、顏色不準確、發黑等。

這類似於我們在淘寶買東西時賣家秀跟買家秀一樣,我們平時用來做訓練、學習的視覺圖片都是正常的,但是實際場景中經常會碰到不正常的圖片。而我們要做的事情就是如何去幫助大家把實驗室99%的識別率變成實際應用中99%的識別率。實驗室和現場最大的差別就是光線的差異,因為所有視覺成像的來源在影象源的時候,主要受光線的影響,差別可能會非常大。

光線的差異會帶來影象本質上的變化,最直接的影響就是會損失掉很多重要資訊,比如會造成發黑、過曝、完全沒有資訊、顏色的灰度不對、顏色偏差以及邊緣會失真、不清楚等一系列問題,反映在後端的視覺識別演算法時看到的都是跟訓練模型不一樣的效果,出現資訊量太少或者沒法檢測、沒法分析等,因此導致結果會差別非常大,這是一個本質的變化。因為視覺本身就是物體本身的顏色對光線在不同環境下的響應,所以光線變化很大的時候,帶來的差別是本質的變化,在各種環境當中,尤其是在自動駕駛裡面,又不可避免地碰到各種各樣的複雜光線的環境。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

做自動駕駛的,或者普通的使用者以及其他做影象產業相關的人會經常碰到一些問題,比如在過隧道的時候,尤其是在出隧道的時候,隧道里面會比較暗,外面特別亮,導致隧道外面一片看不清楚,出去之後車載攝像頭還需要挺長的響應時間;另外在晚上碰到對面車開遠光燈的時候,會感覺很刺眼,對機器也是一樣的,識別的時候只有幾個大的白圈,其他什麼資訊都沒有;還有在夜間環境下的紅綠燈問題,因為白天的時候,紅燈的亮度是比較正常的,也比較容易看到,而到晚上的時候,一是因為路邊有特別多的燈,紅綠燈只是其中之一,二是因為暗光下紅綠燈會特別的亮,所以它很容易過曝,顯示出來就會看不清楚,比如指示牌上的箭頭很可能變成一大塊模糊的綠色或者紅色。

這些都是複雜光線下視覺影象源在成像過程中產生的問題,除了在這些情況下,其他的比如辦公室的玻璃牆、玻璃杯以及識別人臉時候的逆光,還有一些物體某部分是高光,比如白色和黑色的反差,以及人臉晚上的時候可能會變得非常不清晰等等,這些出現在前端的視覺現象在自動駕駛領域很容易就會導致後端識別不了的問題。從成像來看的話,不管它是什麼現象,基本可以總結為三個:

1,弱光,光線太弱,太黑了,看不清楚;

2,逆光,逆光就是一個大燈,這種情況下也叫大光源;

3,背光,就有大片是白的亮的,一些小塊前面是暗的。

這幾種是最常見的場景,簡單講就是光線太暗,或者光比太大這兩個問題。不管是什麼現象,都可以用光線太弱或者光線的反差太大來解釋。通常來講,解決這個問題有幾種基本的策略:

1,感光度不好的時候提高感光度,要大幅度地提高感光度;

2,調整曝光策略,比如我要怎麼知道能夠在哪一部分正確的曝光;

3,提高動態範圍,後面會講到動態範圍的概念,其中動態範圍是最常見的一個問題。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

在講到具體的成像過程之前,先給大家介紹一下基本的概念,因為從我們接觸的很多客戶來看,在成像這一端,大家對它的認知有很多誤解,而且大部分做影象的人都是在做影象的分析,就是得到影象之後以及後面怎麼來做識別檢測這部分的分析。成像是一個感知層面的工作,相當於我們的大腦和眼睛的分工一樣,我們做的前端成像是眼睛這部分的工作,而大部分做影象識別以及影象AI演算法和深度學習都是做大腦的事情,這兩個環節是分開的,總的來說,認知和感知是大腦做的事情,眼睛做的事情就是前端成像。

從技術上來看,成像叫Imaging,影象的分析叫Imaging Procession。視覺成像和影象處理是兩個不同的領域,其中最基本的區別是處理訊號,一個是有了圖以後怎麼進行分析,處理訊號會涉及到很多硬體,還有很多對硬體的控制以及訊號中的變換,不是一個純軟體的事情;影象分析更多的是純演算法層面的東西,大腦做的是影象分析,而眼睛做的更多是訊號處理,所以訊號處理很多時候是和硬體相關的。

我們做AI影象識別的時候,基本上都是從軟體層面進行的。軟體和硬體有一個最基本的區別是:一個是實時的,一個是非實時的。比如我們做影象處理的時候可以在CPU上執行,在ARM、英特爾等各種各樣的CPU上執行,也可以在GPU上執行,但是在做成像的過程中是不能在上面執行的,必須是在FPGA或者是ASIC上執行,因為它必須是一個非常嚴格的有時序的硬體來保證它的時延是可控的,因為在CPU或GPU上都會有一定的不確定性,很多時候眼睛能做的事情只有一件,而影象分析等在很多時候都是軟體進行的,這是幾個基本的概念。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

在講到整個視覺的時候,我們可以把它看成整個鏈條,其中視覺的處理可以分成四個環節:

1、鏡頭,它是光訊號進來,光訊號出去,是一個光學器件;

2、CMOS感測器Sensor,它是光訊號進來,電子訊號出去;

3、ISP,我們叫成像引擎,它是電子訊號進來,影象出去;

4、AI或者GPU,它是影象進來,結果出去。

這四個環節就像跑接力賽一樣,每一棒都有它最大的價值和最獨特的價值,通常情況下我們會關注誰負責最後衝刺,因此現在做AI影象處理是最熱門的。

從鏡頭和CMOS來講,第一棒是鏡頭,鏡頭主要是決定光學的特性,比如我們平時說是不是能看得很遠,一百米還是一百米多少度的視角等,這些都是由鏡頭的焦距決定的,除此之外還有一些特性,比如炫光、鏡頭的品質和光圈的大小也是由鏡頭來決定的;第二棒就是CMOS感測器,它決定了很多電子的特性,比如解析度、幀率還有一些曝光的策略等屬性,這些都是由CMOS來決定的,CMOS是一種非常重要的器件。這兩部分基本上都不涉及到演算法,主要類似於以模擬器件為主,因此是很難把演算法加進去的。

而這兩個產業已經是非常成熟的,鏡頭產業是很旁大的,同時CMOS產業也是很龐大的,這兩個產業的特點都是很難在原理上有突破,除非是材料上發生了非常大的變化,因此目前的發展空間是有限的。後面兩個環節都是和演算法相關的,包括成像引擎和影象的分析。對於前面兩個模擬器件的特點,可以說是一分錢一分貨,僅從一個引數上觀察,你很難看出這兩個器件的差別以及好和壞,比如鏡頭,同樣的鏡頭可能價格差別很大,對於賣的比較貴的,它在某一方面的特性可能會非常強,但不是所有的特性都能用引數直接標出來的,同樣CMOS也是一樣。

對於CMOS Sensor,同樣的解析度和引數,有些可能賣幾塊錢人民幣,有一些可能賣到幾百美金,其中會有很多的差別,比如在選擇鏡頭和感測器時,不能只看引數,還要看它的效能,所有的模擬性質器件的特點都是這樣的屬性。它包含很多品質、質量的因素,對於大部分數字的東西,透過引數來進行衡量可能是比較容易的。因此很多做軟體出身的人也不太容易理解,他們覺得引數是一樣的,那它的產品就是一樣的,其實不然,差別可能會是特別大,每個差別在實際應用場景當中都會產生很大的影響,比如鏡頭在逆光的時候,炫光大小就很有關係,會直接影響到後面的環節。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

接下來跟大家講一下ISP,群裡可能有做ISP的朋友,也有可能調過ISP的,也可能用過ISP的,也有可能瞭解過ISP的,如果你在網上查資料去了解的話很容易被誤解,網上會說ISP是3A、自動曝光、自動白平衡和自動聚焦。其實3A只是ISP的一些功能,那該如何來理解ISP呢?ISP的英文是Image Signal Processing,意思是影象訊號處理,包含四個部分:

1,CMOS的控制器,因為CMOS是一個大資料量的東西,沒有單獨的控制器,我們做硬體的都知道,一個觸控式螢幕或者一個語音的東西都會有一個控制器。但是所有CMOS的控制器都是放在ISP裡,因此CMOS的很多控制指令是透過ISP來實現的;

2,訊號處理的演算法,怎樣從電子訊號得到影象呢?過程中可能有很多CMOS的一致性不好等問題,透過CMOS不同的RGB表達方式及其原理是能夠還原出影象的,其中也會包含很多的演算法;

3,影象演算法,得到影象以後,ISP也要做很多處理,都是基於影象演算法來實現的;

4,介面,它輸出的是智慧硬體介面的格式。

這四部分加在一起就是一個實體的ISP所做的事情。

通常我們講ISP的時候,更多強調的是功能實現,因此在演算法尤其是在影象演算法上要求並不是很高。我們重點是做影象的演算法以及訊號處理中很多新型演算法的實現,這也可以看出做一個ISP是需要綜合有很多方面的技術,首先如果你對CMOS不是特別熟悉,各種各樣的CMOS都不一定是標準的,同時也需要懂電子訊號的處理、影象的演算法以及很多硬體相關的知識,這樣才能夠做一個單獨的ISP產品。之所以做ISP的人比較少,是因為它需要的東西比較多,既有硬體又有訊號處理以及軟體演算法等。

很多時候大家比較關注影象用的是什麼CMOS來決定了所有的效能,其實不完全是這樣子的。CMOS就像接力賽一樣,每一棒的效果對後面都有影響。我們經常看到各種各樣的COMS,它們的效能並不是一個確定的值,甚至會有很多引數,最關鍵的比如噪點的控制、信噪比,很多時候它取決於現有的控制。舉個例子,比如CMOS的噪聲噪點反映影象在很多時候取決於整個Camera裡面的硬體設計,如果電源設計不好,那麼CMOS本身會有很多電源的噪聲干擾,對CMOS效能產生非常大的損傷。

因此在看CMOS的時候,需要看它的整體,而不能單看CMOS,另外不同公司的CMOS,其效能不一定有標記的那麼高,或者在某些方面的引數也未必能達到預想的值,比如我們經常會看到有多少個dB的CMOS,但同樣的標準和引數值可能有賣5塊錢、50塊錢或者500塊錢的,因此CMOS不能夠僅僅從引數來看,還要看實際經驗的結果,這也是很多人不太瞭解的地方。另外一個是CMOS的效能在很大程度上取決於ISP,有點類似於發動機中的控制板ECU,發動機的控制板對發動機本身的影響是很大,這是雙方之間的一個過程,所以這是在成像過程中一個很重要的環節。在理解CMOS的時候,如果大家使用過單反相機拍照,有幾個基本的概念,其中曝光控制的概念是最基本的,我們叫正確的曝光。很多時候我們拍照拍不好是因為曝光不正確,同樣我們在自動駕駛時的成像不正確,也是因為曝光控制不好。比如在對方開大燈的時候,如果曝光控制的好,能夠把一些暗部的地方曝得清楚,但問題在於曝光控制自動曝光的時候,並不知道你想準確地讓哪一部分清楚,這是曝光控制的一個難點,因為前端成像過程中並不知道後端你想看什麼。

在曝光過程中會有幾個核心的概念,大家如果玩過相機,就知道光圈、快門以及感光度這三個概念,在技術上叫作增益,即多少倍。這三個因素制約了整個曝光環節,光圈是指鏡頭的概念;快門是指曝光時間,是控制CMOS的時間來感光;通俗來講,光圈是指開的門有多大,快門是指這個門要開多長時間,增益是指要把影象調高多少倍,所有的曝光最後都反映在這三個引數之間的平衡,如果想要曝亮一點,你可以把光圈開大一點,也可以把快門拉長一點,也可以把增益調高一點,但是每一個都會有相關的副作用。

比如,如果快門開的時間太短,它的好處是在我們運動的時候它不會拖影,而壞處是快門時間短,進的光就會少,噪點就會多,增益也是一樣的。理論上來講增益可以放的很大,感光度很高,但是感光度高了之後,噪點也有會變多。

關於理解光線和燈光,如果大家做過攝影就知道,攝影棚裡面都會有很多燈,打這麼多燈的目的是為了去平衡光線,讓各個環境的光線反差不要太大,讓每個地方拍出來都是清楚的,這是傳統的ISP透過打燈的方式來解決拍的不好的問題。而在實際應用中會有各種各樣的光線環境,在白天的時候可能還好一點,基本上光源就是外面的太陽,如果沒有太陽,天空、雲彩以及地面的反光基本上也會處於一個很大的光源,相對來說都是比較均衡的,但是光線在晚上的時候就會變得特別複雜。

我們都有晚上開車的經驗,對於路燈,首先我們不知道燈的型別、高度以及燈與燈之間的距離,然後我們在城市道路上開的時候,路邊到處都是景觀工程,有著各種各樣的燈,因此每一個現場的環境我們可以理解為有N多種不受控的光源,有些地方可能很亮,有些地方可能很暗,而且它是沒有規則地出現,從而導致了光線環境的複雜性,因此是很難去預測光線的環境。另外,在同樣的光線環境下,物體本身的顏色亮度也會有很大差異。

比如在晚上,我們把一件白色衣服和一件黑色衣服放在一起,會發現在同樣的光線情況下,這兩件衣服的反差非常大。因此整個物體的光線環境是由光源以及物體本身的特質所決定的,這樣就能夠理解在實際應用的現場當中會有N種可能性的光線,包括各種各樣的反光以及一個物體上面可能有不同的顏色和不同的亮度,統一稱之為很難預測的複雜光線。相反地,在攝影棚或者辦公室的時候,其中的燈光環境是可控的,我們可以很容易的去調節。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

接下來我想跟大家講一下信噪比這個概念,對於做過硬體和訊號的人來說,不管做什麼訊號處理都會對信噪比有一個非常好的理解,因為所有資訊的傳輸都跟信噪比有關係。但我發現很多做軟體出身的人對信噪比沒有概念,信噪比就是用資訊量S除以噪聲N,信噪比越高說明品質越好,也就是資訊量S越大越好,噪聲(Noise)N越小越好。

從視覺上看,一個物體是由它的顏色所決定的,顏色包含了灰度和亮度等,我們通常會說還原度非常高,顏色很準確,這是一個主觀的說法,從技術上看,可以理解成信噪比很高,偏差很小,在同樣一個識別演算法中的任何場景下,我們可以簡單地認為信噪比決定了可識別性,影象源的品質可以用信噪比來衡量,信噪比越高,可識別性就越高,影象源越好,那麼在同樣的識別軟體情況下,識別的準確率就會越高。所以對於信噪比,我們可以看成兩個部分,第一部分是如何不斷地提高資訊量,第二部分是如何把噪聲降到很小,這可以看成是一個降噪的過程,而ISP也有降噪的功能,但降噪並不是一個純演算法的事情,另外還由硬體、Sensor的屬性和演算法三個方面來共同決定的,如果你要做高精度的降噪,由於硬體設計精度的噪聲本來就非常小,還取決於Sensor的屬性,因此你要了解Sensor的屬性,並採用不同的方法來控制它。另外降噪的演算法可以分成單幀,多幀等多種演算法,而演算法與計算量是有很大的關係。

接下來是關於實驗值和理論值的問題,從影象上來看,我們在做產品或技術的時候,更關心的是實驗測量出來的值,並不太關心理論值是多少。在做訊號處理時,會發現有很多理論認為這個專案的演算法很好,那個專案的演算法很好,或者是這樣的方式很好,但這些都是理論值,我們不能僅看理論的推導,還要看實際的經驗值。另外關於全域性和區域性的問題,有時候我們看一張圖片,會發現它整體看上去是挺好的,但是在某些區域性上會比較差,因此如何處理資源上的平衡也是需要考慮的。

影片(在車東西公眾號回覆關鍵字“影片”獲取)

上面是一個30秒的影片,其中有四個場景:

1、過隧道的場景,左邊是我們的成像方案,和右邊對比存在很大的差異,首先,隧道外面是沒有過曝的,細節都非常清楚,隧道里面的亮度也是夠的,而右邊是普通的攝像機拍出來的影象,可以看到外面已經是過曝的了,而且裡面很暗;

2、這是一個模擬大燈的場景,大家可以看出我是用手機拍的,一般情況下,這是一個很亮的LED燈罩,下面有一個車牌,這時如果用一般的攝像頭拍,那麼只能看到一大片白的,同時我們的眼睛在這種環境下也是看不清楚車牌的;另外可以看到後面有一個螢幕,螢幕上拍的是實時成像效果,上面的燈都是沒有過曝的,燈珠都能看得很清楚,而且下面的車牌也能看得清楚;

3、這是一個暗光下的場景,用一般的攝像頭拍出來是黑白的,而且有很多噪點,也看不清楚,右邊是我們eyemore拍的影象,可以看到拍的很清楚,顏色還原也很好,這個場景是我們實驗室經常演示給客戶看的,我們公司把它叫做eyemore,意思是比眼睛看的更清楚。

這幾個場景下基本上可以驗證一點,在逆光和暗光的情況下,我們做的視覺比眼睛的視覺能力更強。

最後的場景是一個人背光的畫面,我們經常會看到這樣的場景,拍前面的人會過曝,但在我們螢幕上顯示的實時畫面就是精準的還原顏色。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

上面這幾個觀點是我想用來說明前面提到的這些問題,包括複雜光線、暗光、逆光,比如隧道等等這些常見的場景。另外我也想引出下一個話題“動態範圍”,在汽車中我們可以將大部分的問題歸結為動態範圍不夠,可能大家對動態範圍這個概念不太清楚,實際上用動態範圍是一個很複雜的事情。由於我們是做這一行的,所以我們非常清楚,甚至可以說動態範圍是導致複雜光線問題最主要的原因。

在自動駕駛中大概90%以上的場景都可以用動態範圍不夠來歸納,因為自動駕駛不會經常遇到完全黑的環境,至少我們的車是有燈的,周邊也不會很黑。簡單來講,動態範圍就是最亮地方和最暗地方的光強比值,這個比值可以說是非常嚇人的。由於人眼會自動處理動態範圍,因此我們感覺上反差沒有那麼大,比如對著夕陽,就是在逆光的時候,夕陽和前面人的反差可能會有1萬倍或者幾萬倍,包括對著月亮的時候也是一樣的,各種各樣的場景光源和被調動的反差是非常大的。

因為我們的眼睛會自動處理這種反差,所以我們的大腦就感覺不到,感覺好像就差幾倍或幾十倍,實際上是遠遠不止的,這就是動態範圍中一個比較麻煩的問題,明明眼睛看的清楚,感覺光線的反差也就是十倍或者二十倍,但就是識別不了,實際上這個動態範圍遠遠不止我們所感覺的範圍值。對於動態範圍的概念,我們要理解三個值,第一個是環境中動態範圍的值,比如在剛才講的大燈的情況下,那個大燈光源是特別亮的;第二個就是車牌和光源的反差叫作實際環境的動態範圍值;第三個動態範圍值是Sensor的動態範圍值,也就是Sensor最大能夠記錄的動態範圍值。

我們通常講,一個Sensor有多少個dB,指的就是動態範圍值的概念,歐盟在自動駕駛領域的車規寫的比較清楚,就是120dB,也就是2的20次方,意味著最亮和最暗的反差可以有2的20次方,大家可以算一下,這個是一個非常大的數值,但是有個地方在很多時候我們很容易誤解,CMOS Sensor的值(我們叫作RAW的動態範圍)以及後面識別軟體可用的值,這兩個值經常是不對等的,傳統ISP存在一個非常大的問題,就是儘管CMOS的動態範圍很高,但沒辦法輸出給後面的識別軟體。

傳統的ISP可能就是八位的,八位ISP的動態範圍是48dB,儘管前面接了一個120dB的CMOS Sensor,這個ISP本身也並不具備處理該動態範圍的能力,它輸出的動態範圍是不夠的,所以這三個值大家要去理解。如果環境值能夠被最後可用的值裝得下動態範圍,那麼這個資訊基本上就不會損失,也不會有特別大的問題,但很多時候環境的反差特別大,這時要麼裁掉亮部,要麼裁掉暗部,就相當於很多時候現場的環境是有20個車道的,突然之間前面變成只有四車道或者八車道,這樣其他的車就開不進去了,這就是動態範圍的概念,所以資訊被大量丟失。

我們經常碰到一些客戶會問,我們用的攝像頭模組的動態範圍是120dB或者100dB的,為什麼測出來的效果這麼差?有一種可能是因為ISP的輸出沒有這個能力,但他也並沒有標錯,他標的CMOS是可能有這麼高範圍值的,因此大家一定要確認。120dB可以說是接近我們人眼的處理能力,在隧道里面的動態範圍是不會超過120dB的,大概100dB就能解決大部分的問題,除非在隧道出口就有一個太陽正對著。剛剛也講過了120dB對應著2的20次方,如果是在CMOS中,相當於要用20位的資料來處理動態範圍。

通常情況下,我們的ISP都是八位的,用八位的ISP是承載不了20位的ISP的。在前面看到的幾段影片中,大鏡頭逆光那部分基本上是接近120dB的效果,如果真正實現端到端的120dB,就需要用到AI識別軟體,如果輸出已經是120dB的影象,那就可以解決絕大部分現場複雜光線的問題。晚上特別容易出現動態範圍寬的問題,因為暗的地方會特別暗,而亮的地方又是個燈,這兩個反差特別容易變大,因此在晚上動態範圍特別容易出問題。

其中有一個難點,目前所有做AI識別和訓練的庫用到的圖片都是基於八位的JPEG,但我們很難去改變這個東西,這是一個歷史原因。如何用20位的東西輸入到8位中來呢?大家可能知道有個傳統的技術叫做Tone Mapping,但在歷史上並沒有人能很好地把它做好。eyemore花了很長的時間做了很多新型的演算法來使得在八位JPEG標準下的輸出能夠承載20位的動態範圍值。在剛剛的影片裡面也有這個概念,這些都是標準的影片,所有動態範圍的資訊都已經在裡面了,並沒有過曝。

動態範圍經常會有一些處理的情況,包括單次曝光和多次曝光。對於多次曝光,我們目前的手機在逆光時也清晰,比如OPPO和華為手機,他們都是透過多次曝光,也就是拍幾張照片進行合成,這種方式的問題在於場景受限,對於靜止的物體是可以的,但在車裡面這種方式是有很大問題的,因為車在高速地運動,這時如果進行多次曝光合成的話是會有很多問題的,所以單次曝光會是一個更好的方案。另外動態範圍要適應各種各樣的場景,我們也花了幾年的時間去對動態範圍進行調整和處理,使它在各種各樣的場景下都能夠正常執行。

如果場景適應性不夠,動態範圍會影響很多東西,比如顏色不對、邊緣不清晰、邊緣上有很多條紋、亮度過曝等問題都是動態範圍導致的。瞭解過專業電影攝像機的人都知道攝像機的Log格式,這是介於RAW和JPEG之間的一種壓縮格式,其中動態範圍是保留的,但我們做的是不一樣的。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

接下來我們要在鏈條中瞭解成像的概念是什麼?做自動駕駛以及ADAS方案的人可能更關注的是攝像頭,而攝像頭裡面用的方案可能是一個模組,模組中會有晶片,比如安防裡面可能用海思的、OV的,這些晶片會有很多功能,其中成像這塊是個IP,有著專門的核心,這幾個不同的措施對應著不同的產業鏈,我們可能會比較關心輸出的介面是什麼?輸出的介面可能是光纖的、USB的以及網口的,其中輸出介面又分為內部介面和外部介面,這裡我們會比較關注成像過程中的延時,而延時有很多環節,包括有曝光的延時、成像演算法產生的延時以及傳輸中的延時。

在成像引出來時可能延時是非常低的,只有幾十行的曝光時間,就是一幀的幾十分之一,但是如果你用USB輸出,那麼USB要在接收端顯示,就必須要緩衝一幀,假如一幀包含的時間是二十五分之一,產生40毫秒延時,因此可以看到延時是不同行業的不同環節產生的。另外是車規,在自動駕駛中,晶片在汽車行業中都是有滯後的,主要是由於汽車行業週期太長了,目前很多處理器要滿足車規也是有難度的。在不同的層級解決的問題是不一樣的,有些是透過攝像頭或者鏡頭解決,有些是透過模組或者晶片解決,還有一些是由於晶片本身的屬性所決定的,因此我們很難透過所謂的Tuning方式來解決這些技術問題。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

目前所有汽車的安防攝像頭都來源於同一個源頭“數碼相機”,比如索尼、尼康和佳能的單反以及電影的攝像機及高階產品,在安防中,都是先有數碼相機才有數碼攝像頭,相比於這些專業的裝置,汽車中的安防攝像頭都是非常低端的。我們每個人可能都有開車的經驗,都知道車上的攝像頭實在是讓人難受,比手機的都要差很多,因此核心最高階的成像引擎都是日本公司做的,而其他的公司都是來copy或者抄他們同樣的架構來實現。

傳統的攝像頭拍出來的圖片是給人看的,在過去的很多年裡,大部分做影象的包括做手機或者相機的,都把很多功夫花在了P圖上面,就是怎麼樣讓顏色變得更好看一點,但這對於識別來講是沒有任何幫助的。在AI之前的所有相機和成像技術都是做來給人看的,但在AI開始之後,包括自動駕駛的影象都是要給機器看的,這是一個非常大的變革,從膠捲時代轉到數碼時代再到AI時代,這對每個行業都有很大的變革,而很多傳統的P圖方式對於識別是沒有什麼效果提升的。

目前手機相機中會有很多畫素,做影象識別的都知道,識別對於畫素的要求並不高,關鍵的是畫素的質量,畫素的質量比畫素的數量要更加重要,畫素的質量反映出來的是信噪比,整個圖上的信噪比越高,那麼影象的識別就會越準確。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

相信做視覺的人都用過鐳射雷達,我認為鐳射雷達產生的原因主要是因為現在攝像頭的成像品質太差,無法很好地處理一些複雜關係。由於還有一些特殊場景,比如下雨、霧天遮擋等等,因此鐳射雷達變得越來越重要。鐳射雷達和視覺相比,我個人認為主要有三個大方面:

1,成本,數字晶片的成本是可以無窮低的,這是被證明過的;而鐳射雷達它是一個光機電一體化的產品,它是成本不一定能夠做到很低;

2,從生態來看,視覺的生態是一個開放的生態,不只是在自動駕駛,在人臉識別等各個領域都做的特別多,因此它是個開放的生態;而鐳射雷達更多的是一個封閉的生態,做雷達的人自己在做著各種各樣的模型和學習訓練,很難把它變成一個完全開放的生態;

3,從效率上來看,視覺的效率是非常高的,比如我們能經常看到一秒鐘產生多少個T的資料。而鐳射雷達在很多時候資料的資訊量非常少,只是相當於一個非常低解析度的黑白照片,這跟視覺有很大的差別。

我們跟特斯拉也會有一些交流,特斯拉認為以後的自動駕駛一定要解決全天候的被動光學成像,意思是在各種光線環境下都能夠看得很清楚,其實就是eyemore所做的複雜光線的事情。目前很多人都認為多感測器有用,但我認為多感測器有一個悖論,就是當每一個感測器都不可靠的時候,加上更多的感測器不會提高整個系統的可靠性。假如我每個系統都是99%的可靠性或者可用性,那麼多加一個系統這叫作備份。但是如果每個系統的功能只有60%,你放五個60%就相當於五個60%相乘,乘出來以後會發現整個系統的不穩定性肯定是更高。當然現在每個方面都在進步,以後肯定還是多處理器以及多感測器融合的方式。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

下面介紹一下我們的成像引擎是怎麼解決這個問題的。成像引擎是個非常複雜的系統,並沒有大家想象得那麼簡單,我們用了四年時間只做這一個事兒,而且我們團隊在這方面都有很豐富的經驗,做這個事情之前我們會先給自己定目標:

1,我們的輸入和輸出必須都是傳統行業標準的CMOS模式,都是大家可以識別的影象輸入和輸出;

2,我們要求是所見即所得,就是在取景的時候,原始看到的東西就是最後所得到的東西,不會允許有很多後端軟體的處理在我們環境裡面;

3,我們希望能夠適應絕大部分場景,我們不會允許有很多種模式都讓它去試,而是一個成像引擎應該能夠適應絕大部分的產品;

4,不能有明顯的副作用,之前做視覺成像的,包括影象的識別處理都有很多明顯的副作用,比如由多幀合成的方式來解決動態範圍的問題,副作用就是隻要人一動它就有拖影,我們也是不允許的;

5,要做統一的架構,並不是不同的場景有不同的系統架構;

6,要兼顧全域性和區域性,不能是整體看上去很好,而區域性卻是不好的,或者區域性是挺好的,而全域性看上去結果很差;

7,以顏色還原度為唯一的準繩,各種情況下顏色還原度怎麼樣?我們的要求是在不正常光線環境下的結果也跟正常光線環境下的結果一樣的。

這就是我們創立公司去合作開發架構時給自己定的原則,做所有的東西,如果沒有原則和方向,就需要去試驗現存的幾百種方法,系統也很難成熟,這也是目前我們為什麼會碰到這麼多視覺問題的原因。

現在我們的實現方式有幾個,第一,我們做了一個全新的硬體處理架構,這個架構是能夠處理所有的RAW資料,不管它是多少位的,在這個架構之上,我們要做到很多以效果為核心的新演算法,包括很多降噪的演算法以及解決動態範圍變化的演算法。

成像端和所有的演算法都是理論值,它能不能夠解決你的問題,現場各種光線環境是有無窮多種組合,我們也花了大量的時間去測各種各樣的場景,最後才變得開始熟練,它在絕大部分場景下都是正常的。這三個東西加在一起,我們把它叫作一個新的成像引擎技術,由於這個與ISP的出發點是完全不一樣的,因此我們不把它叫做ISP。有很多客戶和合作夥伴在看到我們公司的展示後都會覺得很驚奇,都會問是怎麼做到的,是不是發明了什麼新的原理。其實我們並不是發明一個新的原理和paper,而是理解Know How,就是不斷的經驗值積累,這就像發動機一樣,所有發動機的原理都是一樣的,但是做5。0的發動機跟做1。0的發動機,其中有很多的Know How是不一樣的。

最後一個,只有看到結果才能驗證理論值是否有用,尤其是適應環境的時候更要看到這個結果,需要在這個地方測過它是OK的它才是OK的,這就是eyemore所做的事情,跟傳統ISP的思路是完全不一樣的,ISP是實現功能,而我們是要解決問題,我們解決的問題出發點是因為傳統所有的ISP在幾十年以來都沒有解決好複雜光線下的問題,在以前來說,這些都是沒有關係,因為拍照拍得不好,我可以到光線好的地方拍。但到了AI之後,比如自動駕駛汽車事故,包括Uber撞人等問題都是因為環境太複雜所造成的,因此是必須要解決這個問題的,同時這也是我們給自己設定的方向,以及在這個方向我們花了四年時間來實現這些東西。

如何克服ISP解決不了的複雜光線難題?眼擎科技朱繼志給出答案!

我們釋出了一個針對汽車行業的參考設計方案,叫作DX120。它包含兩個方面,第一個方面,從某種層面來看,前端輸入的是車規級Sensor;第二個方面,輸出的是120dB和標準的八位JPEG或者YUV格式的影象,也就是說後面的識別軟體可以把它當成一個正常的影片進行瀏覽處理,但是所有動態範圍的資訊已經包含在裡面,同時也是採用了我們的全新的eyemore成像引擎架構,它是一個完整的模組,也可以說是技術方案,對於所提供的標準介面,我們也會不斷地去豐富我們的介面,包括USB、光纖、HDMI網口以及可定製的介面。

這個產品會在5月底正式上市,對於做自動駕駛汽車的人來說,首先它是一個測試產品,我們會提供一個類似於工業相機大小的模組,它包含供電裝置以及輸出的介面。關於成像方面的東西,一定是要先要測試效果能不能滿足,然後才是第二步的介面方案問題。我們是來幫大家來解決這個問題的,如果這個方案不能解決問題,就可以不用考慮我們的方案。而我們的方案是能夠適應95%以上的複雜環境的,包括動態範圍不夠場景下的問題。

在拿到這個模組去測試之後,如果測試的結果跟大家的要求是匹配的,能解決問題的,這時我們再去溝通具體的對接模式(包括有硬體介面和軟體介面),在5月底大家就可以拿到這個模組的成品了。

我的介紹大概就是這麼多內容,最後有一個小廣告,eyemore,意思是要讓AI機器比人眼要看得更清楚,我們只做眼睛,不做識別的東西。在自動駕駛領域,我們要做的事情就是讓車比人眼看得更加清楚,能夠解決目前很多在視覺成像上的痛點。這就是我今天分享的內容,謝謝大家。

Q&A環節

提問一

熊林雲-Motovis-ISP工程師

1、自動駕駛的模組鏡頭選型需要重點考慮哪些引數指標?

2、自動駕駛技術用到的ISP除了3A,sharpen,denoise等基礎功能外,還需要哪些必要的功能,如WDR?

朱繼志:

1,這些引數指標在上面也講過了,鏡頭是一個模擬器件,很多時候大家一定要去實測。在自動駕駛領域,影響最大的因素是炫光,造成不同的炫光,可能有鏡頭的原因,也有CMOS和成像的原因,這是綜合因素。但是鏡頭是第一關,鏡頭對炫光的影響是複雜光線下影響最大的,因此這個一定要測。很難用一個引數就直接表述出來。

2,ISP是個籠統的概念,所以我們叫作成像引擎。前面也講過,ISP最基本的功能,首先是CMOS Controller,第二部分是訊號的處理,第三部分是影象的處理,最後是介面上面的事情。WDR對傳統ISP來講是可用可不用的,做的好不好沒有人關注,但是在動態範圍處理是自動駕駛中必須要有的基本功能,比如120dB,那麼可能要90個dB或者是100個dB。

提問二

熊林雲-Motovis-ISP工程師

1、後端視覺理解對於前端成像和isp影象處理有哪些重點要求?

2、自動駕駛主要場景分哪幾類,建議ISP用何策略識別和切換場景引數?

3、對於多路Sensor接入,如何幀同步和AE同步?不同角度的成像如何儘量保持拼接後整體畫面的均衡,拼接處過渡自然?

朱繼志:

1,這是個很好的問題。通俗來講,在沒有大腦之前,前面的眼睛是很差的,但在AI大腦強大之後發現眼睛不行了,要提高眼睛的能力。比如按照我們的方案發展下去,眼睛也會變得很強大,這就產生了第三個問題,大腦跟眼睛該如何互動?我們人的大腦跟眼睛互動是一件非常神奇的事情,大腦跟眼睛是協同工作的,目前並沒有很好的方法來鑑定。我也跟很多人探討過這個問題,對於後端的識別,哪方面做的好一點更容易識別等問題。在以前沒有識別的時候,可能還能做一些事情,現在到AI深度學習就變得特別麻煩。

為什麼會特別麻煩呢?因為AI識別的深度學習層次太多了,可能很少有做AI、做Training的人能夠把底層的東西講清楚,這個系統太複雜了。從原則上來講肯定是希望邊緣越清晰也好,但是這些東西都有待於驗證,因此以後我們也會逐漸地去跟合作伙伴以及客戶一起完善和升級。

2,實際上,我認為這個問題是有一定道理的,但很多時候它是個偽命題。要去知道某個場景是很難的,無論是前端還是後端或者是成像端去明確場景都是不太現實的。最理想的方案是不用分場景,一個模式能夠自動適應絕大部分場景。這樣,在後面少部分的情況下,比如在我們能檢測到但識別不出來的時候,可以將這個指令發給前端和成像端來解決,這是一種比較好的方式。

場景最好是在成像端解決,這就是eyemore做的方向和原則,我們的目標就是要讓成像端無論在什麼環境或者什麼場景下,所有看到的都是清楚的,就跟光線正常一樣,這樣以來,後端的識別軟體就可以什麼都不用管了。傳統的方式在很多行業裡面是可以人工去控制的,但是在自動駕駛和AI裡面就不是這個邏輯了,因為沒辦法在那麼短時間之內進行人工干涉或者讓系統自動去識別場景,因此我們認為最好的方案就是前面成像端能夠解決絕大部分環境適應性問題,這就是我們做的事情。

3,前面的一個問題是個非常具體的問題。對於幀同步,在前端成像部分會有相關的硬體介面。在不同的Sensor之間,需要多個攝像頭之間協同處理,這是硬體層面的問題。對於硬體的介面方式,我們都有各種硬體介面和軟體的控制協議,因為行業沒有標準的東西,是需要大家去探討的。對於不同角度的成像如何儘量保持拼接後整體畫面的均衡,拼接處過渡自然,這是一個特別綜合的問題,這個問題不僅僅涉及到影象拼接,還有每個畫面本身的程度。

比如我們看到一個很自然的影象,這個影象可能有一邊很暗,一邊很亮,這樣對後面的識別拼接一定是很有困難的。而我們更關注的是從源頭上能夠把每一個影象都做的更好,那麼在後面拼接的時候就會更容易。另外是拼接的演算法問題,也有一部分屬於源的問題,從源的層面來看,永遠都只有一個原則,就是它的保真度越高越好,這樣它能夠看的非常清楚,後面的拼接也會跟識別一樣變得更加容易。

提問三

王潤柱-徵圖三維-slam

怎樣將視覺slam應用到夜間?

朱繼志:

我自己個人也花了很多時間在晚上各種各樣的環境下進行測試,發現夜間主要有高感光度和動態範圍兩個問題。其實在很多道路上主要的問題不是感光度,因為都有路燈和各種各樣的燈,而更多是動態範圍的問題。如果在很暗的情況下,它的動態範圍容易變大。舉個很簡單的例子,比如分別有個穿白衣服和黑衣服在一個正常燈光的情況下,這兩個的反差不會很大,但是如果在一個很暗的情況下,白色和黑色的反差會特別大,動態範圍會變得更寬,因此相比於白天,晚上的問題會更多。

對於SLAM該怎麼應用。首先我們不做SLAM,但是我們認為SLAM也是一樣的原則,只要影象的信噪比越高,噪點越少,資訊量越大,那麼SLAM的準確度就會越高,我相信未來SLAM的發展會隨著成像水平的提升而越來越高,如果信噪比還原得非常精準,那麼SLAM的精度也會大幅度的提升,SLAM有SLAM對應的演算法,源圖也非常重要,如果源圖是模糊的,噪點很多,就會極大地影響SLAM的精確度。

提問四

王吉志-貴師大-經管

ISP可否增加影象採集層數,削減收取資訊的缺失,多層疊加,更趨於實際資料?

朱繼志:

對於ISP的層數,我不知道你是怎麼理解的。其實這個問題迴歸到本質上來講還是動態範圍的處理。資訊量越大,削減的資訊就越多,你說的多層疊加應該是指多幀的合成,通常情況下,我們是不用多幀合成的方法的,因為多幀合成容易導致在運動時出現很多不可預知的副作用,這個在前面也講過。要注意到在我們提高了一個東西的同時會不會損失其他東西。這是一個整體的概念,不能單方面地把引數提高。