關於MATLAB 圖像處理與深度學習的作用分析和介紹

2021-01-11 電子發燒友

本文將展示如何通過圖像處理和深度學習來自動解算數獨謎題:

圖中的紅色數字均由算法生成。接下來我們將介紹如何創建該算法,並說明為何深度學習和圖像處理對於對象檢測和圖像分類同樣十分有用。

圖像處理與深度學習

我們重點介紹兩種技術:

圖像處理

按像素級別變換或者修改圖像。比如,過濾、模糊、去模糊和邊緣檢測等;

深度學習

通過學習樣本圖像自動識別圖像特點。近幾年,深度學習已經徹底改變了圖像處理領域。

我們來探討下這兩種技術之間的關聯性。這裡有兩種常見的觀點:

「深度學習已經淘汰了『傳統』的圖像處理方式。」

「深度學習需要數以百萬的學習樣本,而且只能用於貓咪圖片識別這類任務。」

但事實是:

深度學習和圖像處理都是非常有效的工具,可以解決各種難題,這些任務通常非常複雜,只有使用正確的工具才能解決問題。

數獨解謎

解算數獨(如下圖所示)的規則是:需確保每一行、每一列,以及所有 3x3 宮格都只包含 1 到 9 這九個數字,並且不能有任何重複,只有這樣才算完成。

數獨在開始時會提供一些數字。填入數字的大小和數量將決定解謎的難度。

我們希望算法能夠識別出宮格,並填入答案。但如果只是這樣,未免太簡單了點。我們還希望無論數獨位於圖片中的哪個位置,算法都能給出答案。這裡有張照片,形象地展示了算法在解謎時可能需識別何種圖像:

為此,我們需要設計相應的步驟來處理任務。這就意味著我們可以把解謎分成若干步驟:

找到數獨——在圖像中定位數獨

找到宮格——在 9x9 的盤面中確定所有宮格

識別數字——必須能夠識別手寫或列印數字

解算數獨

以上所有步驟均可用深度學習或圖像處理中的一種方法來實現。那麼,哪些步驟應該用深度學習實現,哪些步驟應該用圖像處理來實現呢?

步驟1. 找到數獨

我們無法預計圖像、圖像背景和對象大小的情況。不同圖像的拍攝角度也可能大不相同。更不用說光照、相機拍攝條件等其它因素。可變因素實在是太多了。

適用方法:深度學習

讓我們試試能否用語義分割為數獨圖片中的像素分類。為此,我們需要標記訓練數據。在 MATLAB 中使用 Image Labeler 標記需要的數據。這是標記完成後的最終輸入數據:

https://www.mathworks.cn/help/vision/examples/semantic-segmentation-using-deep-learning.html

有一點值得注意,那就是數據集非常小——只有一百幅左右的圖像。讓我們試著訓練語義分割網絡,看看數據是否充分。

設置圖像數據倉庫,以便儲存用於語義分割網絡的像素信息。

然後我們要設置網絡層。這裡要注意,我們創建了一個能夠藉助分類權重使各個分類抵消的函數。

設置網絡:

這是訓練選項:

最後訓練網絡:

net = trainNetwork(train, layers, opts);

在這個階段中,大約需要 20 分鐘才能跑完 40 次樣本訓練。具體耗時可能因電腦硬體/GPU 性能不同而有所差異。網絡經過訓練後,我們又換了一幅測試圖像,得出下述的結果:

結果很不錯!儘管圖片中的其它格狀圖形對算法產生了幹擾,但影響十分有限。可在下個步驟去除這些小範圍噪點。

步驟2. 找到宮格

現在,我們需要在數獨盤面中識別出所有小宮格。這些宮格有著很明確的界定:筆直的邊線、總是深色的墨跡,以及大小一致的方形網格。在此提醒,我們在步驟 1 中已經確定了數獨盤面的大致區域。我們可以將該區域以外的圖像全部塗黑,確保算法集中處理該區域。

適用方法:圖像處理

我們曾多次探討圖像處理,如果你不是圖像處理領域的專家,你只要記住——這並不會妨礙你!MATLAB提供了各種應用,能讓處理過程十分輕鬆。試試 Image Segmenter (https://www.mathworks.cn/help/images/ref/imagesegmenter-app.html),嘗試用它來檢測圖像中的宮格。下面這段代碼由該應用自動生成,可用於檢測圖像中的所有宮格。

首先需清理圖像,確保消除所有噪點。

BW_out = bwpropfilt(networkMask, 'Area', [100000 + eps(100000), Inf]);

然後要縮放遮罩,確保它覆蓋住整個盤面。

maskDilated = imdilate(BW_out, strel('disk', 120));

由於只需注意盤面所在區域,所以將其它區域全部塗黑。

grayIm = rgb2gray(im); grayIm(~maskDilated) = 0;

然後在圖像中精準摳取盤面。

可以看到執行的結果非常準確,而且能夠經受住各種幹擾!

步驟3. 識別數字

有很多種方法可以識別手寫數字和列印數字。這個問題的難點在於,我們必須考慮到各種字號和字體。好在辦法也不少:

光學字符識別(OCR)是一種常見方法

結合了機器學習分類器的方向梯度直方圖(HOG)是另一種方法點擊此處查看MATLAB示例

好在手寫識別同樣是一個被廣泛研究的機器學習分類問題(請查看本示例,了解如何使用常見的MINST數據集來解決該問題;我寫過一篇類似文章,請點擊此處閱讀)。

適用方法:深度學習

該環節旨在識別列印數字或手寫數字,然後通過深度學習將其數位化(如下圖所示)。

為此,我們需要海量訓練數據來幫助算法理解字符之間的差異。考慮到訓練數據的海量程度,我們不可能手寫出所有訓練樣本,這太費時間了。

這時即可藉助 MATLAB 生成合成數據。就手寫數字而言,這一步很簡單——只需從MNIST數據集中提取現成數據,然後與下圖中的背景圖像合成。在合成各類列印數字時,我們希望數字看上去儘可能不同,以便確保它們無論採用何種字體(新羅馬、維丹娜等),都能被算法識別。

在合成以上兩類數字時,我們會儘可能確保數字的大小和位置每次都不盡相同。因為這樣我們就能儘可能多地生成數據!

合成圖像:手寫類型/列印類型

註:宮格的方框厚度同樣會隨機變厚或變薄,從而確保宮格各不相同。限於篇幅限制,本文對於合成數據的介紹十分有限。今後我會推出更多有關該主題的文章,請持續關注!

現在我們可以訓練網絡了。設置訓練選項,創建層,然後像之前那樣訓練網絡。

結果顯示,該網絡的準確度約為97.8%。就數獨解算而言,這個結果已經足夠精確了。

步驟4. 解算數獨

我們已經識別了宮格和數字。現在輪到填寫答案了。

適用方法:都不需要!這是一個優化問題

整合各個步驟

現在我們已經完成了所有四個步驟,藉助深度學習和圖像處理創建了一個能夠尋找最優解的數獨解算器。

當您在處理和圖像或視頻有關的任務時,請務必牢記以下兩點重要提示:

深度學習適合解決某些問題,但並非所有問題都適合用深度學習解決。

圖像處理和深度學習都是十分有用的工具,可以將它們組合使用以便尋求最優方案。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 深度學習下的醫學圖像分析(一)
    近年來,深度學習技術一直都處於科研界的前沿。憑藉深度學習,我們開始對圖像和視頻進行分析,並將其應用於各種各樣的設備,比如自動駕駛汽車、無人駕駛飛機,等等。A Neural Algorithm of  Artistic  Style是一篇最新發表的研究性論文,論文向我們介紹了如何將一種風格和氣質從藝術家身上轉移至一張圖像,並由此創建出另一張新圖像。
  • 深度學習下的醫學圖像分析(四)
    對與深度學習相關的醫療保障工作而言,2017年的「Nvidia GTC大會」絕對是一個絕佳的信息來源。在大會上,有諸如Ian GoodFellow和Jeremy Howard的深度學習專家分享了他們對深度學習的見解;還有一些頂級醫學院(例如西奈山醫學院、紐約大學醫學院、麻省綜合醫院等)和Kaggle在大會上介紹他們的建模戰略。
  • 深度學習與圖像識別 圖像檢測
    CNN等為什麼對圖像領域更加有效,因為其不但關注了全局特徵,更是利用了圖像識別領域非常重要的局部特徵,應該是將局部特徵抽取的算法融入到了神經網絡中。圖像本身的局部數據存在關聯性,而這種局部關聯性的特徵是其他算法無法提取的。深度學習很重要的是對全局和局部特徵的綜合把握(2)深度學習不是一個黑箱系統。
  • 深度學習下的醫學圖像分析(二)
    《深度學習下的醫學圖像分析(一)》的後續文章。 在《深度學習下的醫學圖像分析》系列的第一篇文章中,我們介紹了一些使用OpenCV和DICOM圖像基礎知識進行圖像處理的過程。本文,我們將從「卷積神經網絡」的角度討論深度學習。
  • 前沿研究丨深度學習在醫學超聲圖像分析中的應用
    文章指出,在醫學超聲圖像分析中,深度學習展示了巨大的應用潛力,簡要介紹了一些流行的深度學習結構,討論了深度學習方法在超聲圖像分析的各種特定任務(如圖像分類、物體檢測與目標分割)中的應用。文章指出了深度學習在醫學超聲圖像分析應用中所面臨的挑戰以及潛在的發展趨勢。
  • 遙感圖像處理中的深度學習專題 《中國科學:信息科學》英文版
    過去幾年來, 遙感圖像處理相關的深度學習研究快速增長, 包括高光譜遙感圖像、合成孔徑雷達(SAR)圖像等處理、分類、參數反演及目標檢測識別. 除了遙感數據的高解析度、高維度和大尺寸之外, 該領域還存在一些特殊的挑戰, 如不同傳感器及其不同工作模式的複雜性和特殊性, 隱含在遙感數據中的獨特物理屬性, 信息反演的物理原理等.
  • 關於深度學習在各個領域的應用分析
    深度學習網絡作為一個功能多樣的工具,雖然最初僅用於圖像分析,但它已逐漸被應用到各種不同的任務和領域中。高準確性和高處理速度,使得用戶無需成為領域專家即可對大型數據集執行複雜分析。 小編邀請 MathWorks 產品經理 Johanna 分享一些深度學習網絡的使用示例以供參考: 文本分析 在本例中,我們將分析推特數據,了解針對特定詞或短語的情感是積極的還是消極的。情感分析有很多實際的應用,如品牌推廣、競選活動和廣告營銷。 過去(目前仍然)進行情感分析通常使用機器學習。
  • 自然語言處理深度學習的7個應用
    原文:7 Applications of Deep Learning for Natural Language Processing作者:Jason Brownlee翻譯:無阻我飛揚摘要:在這篇文章中,作者詳細介紹了自然語言處理深度學習的7種應用,以下是譯文。自然語言處理領域正在從統計方法轉變為神經網絡方法。
  • 超全深度學習細粒度圖像分析:項目、綜述、教程一網打盡
    選自arXiv作者:Xiu-Shen Wei、Jianxin Wu、Quan Cui機器之心編譯參與:李詩萌、張倩在本文中,來自曠視科技、南京大學和早稻田大學的研究者對基於深度學習的細粒度圖像分析進行了綜述,從細粒度圖像識別、檢索和生成三個方向展開論述。此外,他們還對該領域未來的發展方向進行了討論。
  • Matlab數字圖像處理初步
    0~255雙精度圖像可標準化圖示如imshow(A/255)彩色圖像處理 彩色圖像的通道分離與圖像存儲 對於RGB格式的彩色圖像矩陣A,B=A(:,:,1)即可提取彩色圖像的紅色通道值,其中B將以二維矩陣的形式存儲表示
  • 使用Matlab圖像處理(三)——圖像濾波原理
    既然是去除噪聲,接下來我們就介紹幾種常見的噪聲。常見噪聲種類?首先我們介紹最著名的噪聲——高斯噪聲:無論是做什麼的小夥伴,或多或少都會聽說過高斯噪聲。小白不想把複雜的數學公式拿上進行講解,大家可以簡單記成這種噪聲符合正態分布就可以啦,我們用「影響圖像處理最深遠的人」的相片來直觀的展現一下高斯噪聲的樣子。
  • 零基礎入門深度學習(六):圖像分類任務之LeNet和AlexNet
    從本課程中,你將學習到:深度學習基礎知識numpy實現神經網絡構建和梯度下降算法計算機視覺領域主要方向的原理、實踐自然語言處理領域主要方向的原理、實踐02 圖像分類概述圖像分類是根據圖像的語義信息對不同類別圖像進行區分,是計算機視覺中重要的基礎問題,是物體檢測、圖像分割、物體跟蹤、行為分析、人臉識別等其他高層次視覺任務的基礎。
  • 如何將深度學習應用於無人機圖像的目標檢測
    本文全面概述了基於深度學習的對無人機航拍圖像進行物體檢測的方法。截至今天,無人機被用於農業,建築,公共安全和安全等領域,同時也被其他領域迅速採用。隨著基於深度學習的計算機視覺為這些無人機「提供動力」,行業專家們預測無人機將在以前難以想像的應用場景中被前所未有地廣泛使用。我們將探索一些應用以及伴隨著它們的挑戰,這些應用基於深度學習完成了基於無人機的自動化監測。
  • 一場深度學習引發的圖像壓縮革命
    而 TNG 一改傳統的這些編碼技術,轉而乘上深度學習這艘大船。據圖鴨科技 CEO 武俊敏介紹,他們從 16 年 8 月開始對 TNG 技術進行研發,歷經傳統算法和深度學習算法兩個階段。他舉了如下例子:一些利用 HEVC 或 JPEG 壓縮的圖像存在塊效應(塊效應:基於塊的變換編碼在圖像壓縮編碼中得到廣泛應用,隨著碼率的降低,量化變得粗糙,在塊的邊界會出現不連續,形成重建圖像的明顯缺陷)。但用 TNG 網絡處理後,塊效應就會消失。可以看到,將深度學習技術應用於 TNG 中,帶來了非常強大的視覺效果。
  • 基於PyTorch圖像特徵工程的深度學習圖像增強
    介紹在深度學習黑客競賽中表現出色的技巧(或者坦率地說,是任何數據科學黑客競賽) 通常歸結為特徵工程。 當您獲得的數據不足以建立一個成功的深度學習模型時,你能發揮多少創造力?我是根據自己參加多次深度學習黑客競賽的經驗而談的,在這次深度黑客競賽中,我們獲得了包含數百張圖像的數據集——根本不足以贏得甚至完成排行榜的頂級排名。那我們怎麼處理這個問題呢?
  • 自然語言處理(NLP)中的深度學習發展史和待解難題
    王小新 編譯自 sigmoidal量子位 出品 | 公眾號 QbitAI自然語言處理(NLP)是指機器理解並解釋人類寫作與說話方式的能力。近年來,深度學習技術在自然語言處理方面的研究和應用也取得了顯著的成果。技術博客Sigmoidal最近發布了一篇文章,作者是機器學習工程師Rafal。
  • 從語言學到深度學習NLP,一文概述自然語言處理
    本文從兩篇論文出發先簡要介紹了自然語言處理的基本分類和基本概念,再向讀者展示了深度學習中的 NLP。這兩篇論文都是很好的綜述性入門論文,希望詳細了解自然語言處理的讀者可以進一步閱讀這兩篇論文。本文第一部分介紹了自然語言處理的基本概念,作者將 NLP 分為自然語言理解和自然語言生成,並解釋了 NLP 過程的各個層級和應用,這一篇論文很適合讀者系統的了解 NLP 的基本概念。
  • matlab符號微積分及應用舉例
    上述的方法可以用來解決函數極限相關的問題,一般在研究相關問題時,可以做出函數的圖像,更直觀的反應出極限值。 例、求當x趨於0時,函數y=sin(x^2)exp(x)的值,並會出相應圖像觀察。 exp(x)表示e^x.
  • 深度學習遇上物理學,更好地識別粒子和分析數據
    深度學習遇上物理學,更好地識別粒子和分析數據 工程師8 發表於 2018-05-11 12:01:00 當你向Facebook上傳了一張你朋友的照片後,這張照片就進入了一個複雜的幕後處理過程
  • 復旦大學宋志堅教授:深度學習在mpMRI圖像處理、醫療數據增強方面...
    這幾年,人工智慧尤其是深度學習得到了廣泛應用,我們也開展了一些這方面的研究工作,今天想結合我們實驗室工作的具體工作,和大家交流一下深度學習給醫學診斷和治療帶來的機遇及其存在問題。大家都知道,要讓計算機為我們人類工作,幫助我們解決問題,大致可以分為兩個思路。