Excel 基本操作會(huì)吧?上網(wǎng)搜索公式會(huì)吧?基本的數(shù)學(xué)理解能力有吧?OK,如果以上你都能做到,你也能上手計(jì)算機(jī)視覺項(xiàng)目了。
圖 1:將一張圖像轉(zhuǎn)換為 Excel 單元格表示的灰度圖像。可以看到,只要單元格細(xì)粒度足夠高,就可以存儲(chǔ)足夠的圖像信息。具體來說,在這個(gè)項(xiàng)目中,作者嘗試用 Excel 實(shí)現(xiàn)的樣本算法來幫助我們學(xué)習(xí)計(jì)算機(jī)視覺的基礎(chǔ)知識(shí)。為此,他用到了很多只有一行的 Excel 公式。作者表示,在這個(gè)項(xiàng)目中,用 Excel 做人臉檢測、霍夫變換都不在話下,而且不依賴任何腳本或第三方插件。以下是使用 Excel 進(jìn)行的一些計(jì)算機(jī)視覺任務(wù)。首先,我們有一個(gè)示例圖像。這是一個(gè)護(hù)照。如圖所示,Excel 的算法可以實(shí)現(xiàn)對(duì)照片人像的檢測(使用傳統(tǒng)手工算法)。同樣,這幅圖像也可以被 Excel 轉(zhuǎn)換,然后找到邊和線的特征。最后,Excel 還可以進(jìn)行 OCR 操作。首先對(duì)圖像進(jìn)行手工分割,找到相關(guān)的圖像文本,然后進(jìn)行 OCR 即可。這個(gè)項(xiàng)目不要求你提前掌握計(jì)算機(jī)視覺背景知識(shí),但需要了解 Microsoft Excel 基礎(chǔ)操作,會(huì)閱讀 Excel 文檔或上網(wǎng)搜索需要用到的公式的相關(guān)解釋。對(duì)于后者,推薦使用 Exceljet。此外,你還需要具備一些數(shù)學(xué)理解能力:如果理解不了加權(quán)平均數(shù),可能很難繼續(xù)學(xué)下去。掌握偏微分很有幫助,但不是硬性要求。項(xiàng)目中用到的復(fù)雜數(shù)學(xué)概念大多數(shù)是特征值。Excel 怎么計(jì)算圖像數(shù)據(jù)?使用 Excel 做計(jì)算機(jī)視覺,乍一聽顯得有點(diǎn)魔幻。但其實(shí)原理很簡單:這個(gè)教程利用了 Excel 強(qiáng)大的單元格計(jì)算能力,只要將圖像的像素?cái)?shù)據(jù)轉(zhuǎn)換為單元格(如下圖所示),然后計(jì)算即可。我們知道每個(gè)單元格都可以表示一個(gè)值,那么很多個(gè)單元格是不是就可以表示成矩陣了?對(duì)示例文件的截圖(樣本圖片局部),可以看到 Excel 單元格表示了圖像的灰度。
而另一方面,我們可以很方便地利用 Excel 計(jì)算單元格的數(shù)據(jù)。那么整合起來,是不是和矩陣計(jì)算很相似了?這樣,不同圖像位置表示的特征也就很容易被計(jì)算出來。自然也就方便完成下游計(jì)算機(jī)視覺的任務(wù)了,不管是傳統(tǒng)算法也好,還是機(jī)器學(xué)習(xí)也好。可是,圖像怎樣輸入到 Excel 中呢?作者提供了一個(gè)方法:用 CSV 呀。你可以用很多種方式轉(zhuǎn)換 RGB 圖像到像素點(diǎn)數(shù)據(jù),如使用一個(gè)程序等:https://alvinalexander.com/blog/post/java/getting-rgb-values-for-each-pixel-in-image-using-java-bufferedi當(dāng)圖像的像素轉(zhuǎn)換為 CSV 后,使用 Excel 讀取即可。項(xiàng)目需要的關(guān)鍵材料都可以在「Downloads」部分找到。這些材料都帶有注釋,通俗易懂,可以按部就班,一步一步學(xué)。這個(gè)項(xiàng)目是在 Excel 2016 上創(chuàng)建的,在其他版本上應(yīng)該也能打開(目前已經(jīng)在 Excel 2007 和 Mac 的 Excel 上進(jìn)行了測試)。此外,雖然這些文件能在 LibreOffice 上打開(測試版本是 6.4.0.3 (x64)),但速度極慢,可以說沒辦法用。目前還沒有在 Apache OpenOffice 上進(jìn)行測試。相關(guān) Excel 公式選項(xiàng)在打開項(xiàng)目中的 Excel 文件之前,請先把 Excel 的「公式」→「計(jì)算選項(xiàng)」調(diào)為「手動(dòng)」,因?yàn)橛行┯?jì)算(尤其是霍夫變換)非常耗時(shí)。然后根據(jù)需要手動(dòng)觸發(fā)重算。此外,不要勾選「保存工作簿前重新計(jì)算」,否則 Excel 將在每次保存文件時(shí)重新計(jì)算所有公式。注意:這個(gè)項(xiàng)目做完后,記得把設(shè)置改回來。熟悉 Excel 中 R1C1 公式引用樣式的人或者喜歡冒險(xiǎn)的人,應(yīng)該嘗試通過查看 Excel 選項(xiàng)來切換到 R1C1 引用樣式。參考下面的屏幕截圖,勾選 R1C1 引用樣式對(duì)應(yīng)的復(fù)選框來啟用這個(gè)選項(xiàng)。如此一來,我們可以把公式從「D5」類型的格式更改為「R[-1]C[2]」這樣的相對(duì)樣式,使其更接近編程語言并有助于理解。下圖所示為本項(xiàng)目的相關(guān)教程目錄和項(xiàng)目文件,總共 50MB,大家可以前往 GitHub 下載。1. 計(jì)算機(jī)視覺 Excel 基礎(chǔ)
2. 邊和線
3. 關(guān)鍵點(diǎn)和描述算子
4. 人臉檢測
5. 文本識(shí)別(OCR)
這些項(xiàng)目都有相關(guān)說明和代碼,非常詳細(xì)。作者在留下教程之余,也對(duì)相關(guān)的一些問題提供了解答。問題 1:這些技術(shù)是否可被深度學(xué)習(xí)替代?這些技術(shù)依然是相關(guān)的。盡管神經(jīng)網(wǎng)絡(luò)已經(jīng)替代了所有復(fù)雜的計(jì)算機(jī)視覺問題,特別是那些傳統(tǒng)技術(shù)沒有解決的問題。但是在簡單的計(jì)算上,傳統(tǒng)方法更快,而且計(jì)算效率更高。另外,傳統(tǒng)方法依然是邊緣設(shè)備(智能手機(jī)、網(wǎng)絡(luò)客戶端)等的首選,雖然已有很多硬件加速的方法。問題 2:為什么使用圖像的綠通道,而不是紅或藍(lán)?如果想在 Excel 中用這種方式展示彩色圖像要怎么做?作者表示,三種基本的顏色通道中,綠通道對(duì)亮度的影響最大。理論上,圖像會(huì)首先被轉(zhuǎn)換為灰度圖,即計(jì)算其亮度,在教程中為了簡便被省略了。關(guān)于彩色圖像的表示,可以看一下第 6 個(gè)問題。問題 3:護(hù)照中帶有水印的人臉為什么沒被檢測到?作者使用的是一個(gè)流行的人臉檢測算法,僅使用三個(gè)類 Haar 特征和兩個(gè)步驟。這一算法是針對(duì)蒙娜麗莎(示例)中的圖像手工設(shè)計(jì)的。而在實(shí)際應(yīng)用中,機(jī)器學(xué)習(xí)可以學(xué)習(xí)數(shù)千個(gè)這樣的特征,因此才能準(zhǔn)確檢測到人臉。問題 4:在 OCR 示例中如何選擇 mask 以及方向?對(duì)于文檔 OCR(與場景文本識(shí)別相反)來說,在識(shí)別文檔中的字符之前,文檔通常先被拉直。所以,字符一般為直立的。在示例中,作者使用單神經(jīng)元來識(shí)別大寫字母「E」。神經(jīng)網(wǎng)絡(luò)利用多層神經(jīng)元來識(shí)別所有感興趣的字符。然后神經(jīng)網(wǎng)絡(luò)輸出輸入端出現(xiàn)的字符。需要注意的是,組合神經(jīng)元將在識(shí)別每個(gè)字符的過程中共享一些神經(jīng)元。作為示例,作者使用單卷積神經(jīng)元來識(shí)別大寫字母「E」。實(shí)際系統(tǒng)通常會(huì)使用到神經(jīng)網(wǎng)絡(luò)(并不僅是單神經(jīng)元),并且在不同字體和語言上都表現(xiàn)良好。具體是如何實(shí)現(xiàn)的呢?作者使用單神經(jīng)元來同時(shí)掃描圖像和識(shí)別字母。通常情況下,掃描不同篇幅的文本需要通過不同的方法單獨(dú)完成。一旦文本的每個(gè)字符被隔離,則字符重新縮放至一個(gè)固定大小,然后使用神經(jīng)網(wǎng)絡(luò)來識(shí)別字母。手寫識(shí)別更加困難。當(dāng)筆畫數(shù)據(jù)為時(shí)間函數(shù)(如在觸摸屏上識(shí)別是寫輸入)時(shí),能夠?qū)崿F(xiàn)最佳效果。此外,在示例中,即使單個(gè)神經(jīng)元的權(quán)重是手工的,實(shí)際上也不使用訓(xùn)練算法來學(xué)習(xí)。在實(shí)際訓(xùn)練時(shí),單個(gè)神經(jīng)元的效果也比 demo 展示中的要好。問題 6:作者是如何想到用 Excel 做計(jì)算機(jī)視覺的呢?起初,作者要給亞馬遜內(nèi)部員工講授計(jì)算機(jī)視覺教程,但他們對(duì)該主題不熟悉。所以,作者通過展示圖像本質(zhì)上是數(shù)字的 2D 陣列來講述計(jì)算機(jī)視覺的基礎(chǔ)知識(shí),并想要使用 Excel 來展示。作者大約花費(fèi) 7 個(gè)小時(shí)來創(chuàng)建了第一個(gè)功能完善的版本,但不涵蓋人臉檢測和文本識(shí)別。之后的版本又做了進(jìn)一步完善。自那時(shí)起,作者已經(jīng)創(chuàng)建了以下在 Excel 中展示圖像的視頻作品或教程(附鏈接):Excel 電子表格中的圖像(包括顏色):
https://www.youtube.com/watch?v=UBX2QQHlQ_I
Excel 光線跟蹤:
https://www.youtube.com/watch?v=m28jJ7CMp8A&feature=emb_logo
Excel 3D 引擎:
https://www.youtube.com/watch?v=bFOL9kantXA
Excel 3D 圖形:
https://www.gamasutra.com/view/feature/131968/microsoft_excel_revolutionary_3d_.php
問題 7:是否有計(jì)算機(jī)視覺的交互式開發(fā)者環(huán)境?由于 Matlab 具有內(nèi)置或在工具箱中具有很多計(jì)算機(jī)視覺功能,所以它通常用于計(jì)算機(jī)視覺任務(wù)。其中,「imshow」功能可直接將陣列數(shù)據(jù)以圖像的形式顯示出來。此外,基于 Python 和 Notebooks 的工具也很流行。項(xiàng)目作者有兩位,分別為 Alok Govil 和合作者 Venkataramanan Subramanian,他們都是亞馬遜的首席工程師。其中,Alok Govil 是一位全棧技術(shù)架構(gòu)師,本科和碩士分別畢業(yè)于德里技術(shù)大學(xué)(Delhi Technological University)和美國南加利福尼亞大學(xué)。他畢業(yè)后曾先后就職于飛利浦美國研究院、高通等公司,現(xiàn)為亞馬遜首席工程師。合作者 Venkataramanan Subramanian 本科畢業(yè)于印度馬德拉斯大學(xué),之后攻讀班加羅爾國際信息技術(shù)學(xué)院的在職碩士。他畢業(yè)后先后就職于 Hexaware Technologies 和甲骨文公司,并于 2011 年入職亞馬遜擔(dān)任首席工程師至今。https://news.ycombinator.com/item?id=22357374
https://github.com/amzn/computer-vision-basics-in-microsoft-excel
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。