讓你的電腦擁有「視力」,用卷積神經網絡就可以!

2021-01-20 雷鋒網

本文為 AI 研習社編譯的技術博客,原標題 :

How To Teach A Computer To See With Convolutional Neural Networks

作者 | Alex Yu

翻譯 | zackary、chesc

校對 | 醬番梨       整理 | 菠蘿妹

原文連結:

https://towardsdatascience.com/how-to-teach-a-computer-to-see-with-convolutional-neural-networks-96c120827cd1


近年來,計算機視覺領域取得了很大的進展。卷積神經網絡極大地提升了圖像識別模型的精度,在生活中也有很多的應用。在這篇文章中,我將描述它的工作原理、一些實際應用,以及如何用Python和Keras是實現一個卷積神經網絡。

圖片來自Amanda Dalbjörn

對於大多數人來說,視覺是我們日常生活的一部分。我們使用雙眼探索周圍的世界。我們用雙眼交流、理解。我無需告訴你視覺有多重要。視覺對我們來說如此關鍵,你甚至難以想像沒有視覺時的情形。

但是,如果我讓你解釋你是如何「看見」的呢?我們是如何理解我們眼睛傳來的信息的?首先,當你看著某樣東西,然後......發生了什麼?我們的大腦就像一臺自然進化了數百萬年的超級電腦。在識別不同的模式和物體上,我們已經變得十分在行。

許多技術都是基於自然機制的。用相機舉個例子:快門控制光線的量,就像我們眼睛裡的瞳孔,鏡頭和眼睛聚焦並翻轉圖像。相機和眼睛都通過一些方式感知光線並將它轉化為可被理解的信號。

圖片來自Alfonso Reyes

但是,很顯然地,我們不是長出了腿和胳膊的行走相機。現有的相機並不能完全理解它們拍攝的圖片。如果它們能做到的話那就有點嚇人了。對於相機和計算機來說,一幅圖片只是一串串數字組成的向量。

用矩陣表示的數字8,來自MNIST數據集

那麼我們到底如何創建一個程序,來辨別一幅圖片是狗還是貓呢?這正是我們試圖用計算機視覺解決的問題。

也就是神經網絡能夠幫助我們解決的問題!

人工神經網絡(Artificial Neural Networks)是一種基於人類大腦的程序。神經網絡由許多個聯結的神經元組成。有一些神經網絡有數百萬個節點(神經元)和數十億個聯結!

一個神經元可以看作是一個函數,它接受一個輸入值,返回一個輸出值。


人工神經元模仿生物學中的神經元

單個神經元本身不能做什麼。但是當你把很多的神經元聯結在一起的時候,事情就變得有趣多了。神經網絡的不同結構能讓你做許多很酷的事情。

 你可以得到類似的網絡

每個神經元都與自己的「權重」有聯繫。舉個例子:我們有一個神經網絡試圖分辨一張圖片是不是一個熱狗。那麼我們就會想要:在神經網絡中,包含熱狗的特徵的神經元比包含普通狗的特徵的神經元更重要。

神經網絡的權重是通過在數據集上訓練得到的。它會運行許多次,根據損失函數通過反向傳播改變各個權重。可以說神經網絡被輸入測試數據,然後得到並分析結果,取得得分並使自己變得更加準確。通過這個過程,一個神經網絡可以學習並提高預測的準確度。

我不會講述反向傳播過程和損失函數,但是有許多很棒的資源介紹了它們,例如這一篇。卷積神經網絡(Convolutional Neural Networks)是神經網絡的一種特別的類型。它們在圖像數據集上表現的很好。


卷積神經網絡圖示

正如我之前提到的,計算機將圖片看作矩陣中的一堆數字。CNN的不同層將函數應用於這些矩陣,以從圖像中提取各種特徵並降低圖像的複雜度。

讓我們一起看看訓練一個用作熱狗檢測器的卷積神經網絡所需的幾個步驟吧。

首先,我們為卷積神經網絡的權重賦予隨機的初始值。這基本上意味著網絡純粹就是在猜測。一旦網絡做出了它的預測,它將使用一個損失函數來評估自己的誤差,並更新自己的權重以在下一次獲得更好的結果。

卷積神經網絡包含一些層:卷積層和池化層。你可以這樣想像在卷積層裡發生了什麼:

想像你有一幅圖片和一個放大鏡。將你的放大鏡放在圖片左上角的正上方,你將尋找一個特別的特徵並記下你有沒有找到。慢慢地移動你的放大鏡並重複這個操作。

  可視化卷積層中的特徵提取

卷積層創造了一系列的特徵映射。

對於用來描述不同圖片,比如動物或者面部,的卷積神經網絡來說,卷積神經網絡尋找的特徵可以是目標的不同邊緣。就像列出圖片中各個邊緣的列表,這個列表又被傳入另一個相同功能的卷積層,只不過這一層尋找的是更大的特徵,比如說動物的一條腿或者面部的一隻眼睛。最終,所有的特徵被傳入一個全連接層,它會為圖像分類。

池化層也與卷積層一起使用,它就像另一個放大鏡,只不過它不尋找特徵,而是取區域裡的最大值以減少圖像的複雜度。

卷積神經網絡裡的池化 

這很實用,因為很多圖片都很大,它們的像素數目太大,處理器計算起來很困難。池化使得我們能夠減少圖片的大小,同時還保留了大多數重要信息。池化也被用來防止過擬合。過擬合是指模型在訓練數據上表現得很好,但是卻不能在它從未見過的數據上獲得好的結果。     

 在一個線性數據集上發生了過擬合

如你所見,圖裡的數據本可以用一條直線(黑色)表示。用藍色表示的模型匹配了所有的數據點,但是如果我們想讓這個模型預測一些點時,它卻做不到。回到卷積神經網絡,這意味著模型在它訓練集上會十分準確,但是對於其他不在訓練集裡的圖片,它卻不能作出正確的判斷。

最後,我們將卷積神經網絡變成了一個很長的特徵向量,我們基本上將數據放在一起,輸入全連接層中以作出預測。


為什麼神經網絡更好?

假如我們沒有使用神經網絡,那麼我們會如何處理這個問題?比方說,我們正在嘗試編寫一個識別貓的程序,我們可以嘗試通過尋找某些形狀來表示貓。


來自計算機視覺專家李飛飛的TED演講的貓的形狀

看起來很簡單吧?但等一下。並非所有的貓都像這樣。如果你有一隻貓在伸懶腰怎麼辦?我們需要添加更多形狀。

來自計算機視覺專家李飛飛的TED演講的更多貓形狀。

到目前為止,應該很清楚,直接告訴計算機尋找某些形狀是行不通的。貓有各種形狀和大小。並且這只是假設我們僅僅在尋找貓,如果我們想要一個可以對各種圖片進行分類的程序怎麼辦?

這就是為什麼使用神經網絡要好得多的原因。您可以讓計算機設置自己的規則。通過使用十分先進的算法,神經網絡可以瘋狂地高精度對圖像進行分類。有些模型已經在這個任務中擊敗了人類!


我們應用計算機視覺的一些非常酷的方法

隨著算法變得更有效,硬體變得更強大,我們可以用神經網絡來完成很多任務,這幾乎就像是科幻小說一樣。但這並不意味著我們現在沒有用這項技術做很多很酷的事情!

零售

你可能在新聞中聽說過它,電子商務巨頭的無人收款雜貨店--Amazon Go。你走進來,拿起一些東西,然後走出去。系統會自動向您收取所需的費用。遍布天花板的相機可以跟蹤您拾取的物品。然而系統不夠完美,可能很容易發生入店行竊。看看這個想法在未來幾年如何發展將會非常有趣。

自動駕駛汽車

在我看來,自動駕駛汽車是目前正在開展的一些最酷的事情。Waymo最初是Google的自動駕駛汽車項目,Uber和Tesla目前正在研發一些可以自動導航道路的車輛。

Waymo的自動駕駛汽車車隊已經行駛了超過1000萬英裡的路程!平均每年行駛約12,000英裡。總的來說,這是超過800年的駕駛!


Waymo的一輛自動駕駛汽車

醫療保健

在醫療保健領域,CNN被用於識別許多不同類型的疾病。通過對癌症或其他醫療條件的某些數據集進行訓練,神經網絡可以以高準確率確定其是否患病!通過神經網絡提取特徵並在數據中查找模式,它可以利用某些我們從未考慮過的圖像信息!


現在我們進一步直觀了解CNN應該怎麼運作。我們可以在Python裡使用Keras框架創建一個卷積神經網絡,其中Keras是一個用Python編寫的高級API。Keras可以幫助我們編寫易於理解和可讀性強的代碼。

您可以首先安裝Anaconda,再在命令界面中運行 conda install keras。然後你可以使用Jupyter Notebooks開始進行Python編程。如果您想在雲中運行所有內容,也可以使用Google’s Colaboratory。

我們將在MNIST數據集上進行實驗,這個數據集是Keras庫的一部分。它包含60,000個手寫數字的訓練樣本和10,000個測試樣本。讓我們開始吧!


MNIST數據集中的前幾個訓練樣本

首先,我們想要從Keras庫導入我們需要的所有包。這包括Sequential model,這意味著我們可以通過添加 layers 來輕鬆構建模型。接下來我們將導入Conv2D(Convolution2D),MaxPooling2D,Flatten和Dense 層。前3個是明顯的,而Dense層會幫我們構建全連接層。

我們需要Keras Utils來幫助我們對數據進行編碼,以確保它與我們模型的其他部分兼容。這使得我們不會把數字9看作比1更好 。最後,我們導入將用於訓練模型的MNIST數據集。

導入數據集後,我們需要將其拆分為訓練數據和測試數據。訓練數據是我們要用神經網絡進行學習的。測試數據是我們將用來衡量準確度的。我們將調整數據以匹配TensorFlow後端所需的格式。接下來,我們將對數據進行標準化,以使值的範圍保持在0到1左右,並對MNIST標籤進行分類編碼。

非常棒!現在我們可以開始構建我們的模型。我們首先創建一個順序模型,它是一個線性的layers堆棧。正如您在下面的代碼中看到的,這使我們可以非常輕鬆地向模型添加更多層。


在我們完成模型構建之後,我們將編輯它。該模型使用Adam優化器,它是一種用於調整權重的梯度下降算法。我們的模型使用的損失函數是分類交叉熵,它告訴我們這個模型離結果有多遠。metrics參數用於定義如何評估性能。它類似於損失函數,但在實際訓練過程中不會使用。

我們將在訓練集上 fit 或 train 我們的模型。batch size決定了每次迭代時我們將考慮的圖像數量。epochs的數量決定了模型迭代整個數據集的次數。在一定次數的epochs之後,該模型將基本上停止改進。

verbose值決定模型是否會告訴我們模型的進度,validation_data決定模型在每次迭代之後如何評估其損失值。

最後,我們將列印出我們模型的準確度。最終結果應介於98%和99%之間。

您可以在我的Github上找到完整的代碼,也可以在 Google Colaboratory上運行。


  關鍵要點

神經網絡鬆散地基於我們的大腦解釋信息的方式。

卷積神經網絡特別適用於圖像。

計算機視覺有很多真實世界的應用。

創建自己的神經網絡實際上非常簡單。

感謝您閱讀我的第一篇文章!我在寫作的過程中學到了很多東西。如果您喜歡它,請:

想要繼續查看該篇文章相關連結和參考文獻?

長按連結點擊打開或點擊底部【讓你的電腦擁有「視力」,用卷積神經網絡就可以!】:

https://ai.yanxishe.com/page/TextTranslation/1290


AI研習社每日更新精彩內容,觀看更多精彩內容:雷鋒網雷鋒網雷鋒網(公眾號:雷鋒網)

五個很厲害的 CNN 架構

一文帶你讀懂計算機視覺

用Pytorch做深度學習(第一部分)Python高級技巧:用一行代碼減少一半內存佔用


等你來譯:

(Python)3D人臉處理工具face3d25個能放到數據湖中的語音研究數據集如何在數據科學面試中脫穎而出 Apache Spark SQL以及DataFrame的基本概念,架構以及使用案例


相關焦點

  • 用樂高積木搭建的首臺——卷積神經網絡樂高分揀機
    美國樂高達人丹尼爾·韋斯特(Daniel West)經過兩年的研發,用10,000多種樂高積木、 6個樂高電機和9個伺服電機提供動力。製作了一臺通用樂高分揀機。請點擊輸入圖用樂高積木搭建的首臺---機器可以從輸入後端到18個不同的輸出桶對樂高零件進行分類,每2秒以1塊磚的速度進行分類。它通過使用卷積神經網絡的人工智慧技術來工作。
  • 卷積神經網絡理解(一):濾波器的意義
    卷積神經網絡的發展二. 卷積神經網絡的重要性三. 卷積神經網絡與圖像識別四. 濾波器一.卷積神經網絡的發展卷積神經網絡受到視覺細胞研究的啟發,1962年,Hubel和Wiesel發現初級視覺皮層中的神經元會響應視覺環境中特定的簡單特徵(比如有向的邊等)。
  • 改進卷積神經網絡,你需要這14種設計模式
    自從 2011 年深度卷積神經網絡(CNN)在圖像分類任務中優於人類開始,它們就成為了計算機視覺任務中的行業標準,這些任務包括圖像分割、目標檢測、場景標記、跟蹤以及文本檢測等等。然而,訓練神經網絡的技巧並不容易掌握。與之前的機器學習方法一樣,細節是最恐怖的地方,然而在卷積神經網絡中有更多的細節需要去管理:你所用的數據和硬體的限制是什麼?你應該以哪種網絡作為開始呢?
  • 用TensorFlow和Keras構建卷積神經網絡
    全文共9940字,預計學習時長20分鐘或更長不同神經網絡結構各有所長。本文主要介紹如何在Python中使用TensorFlow和Keras構建卷積神經網絡。 卷積神經網絡是過去十年中深度學習成為一大熱點的部分原因。今天將使用TensorFlow的eager API來訓練圖像分類器,以辨別圖像內容是狗還是貓。
  • 卷積神經網絡預測模型:提前24個月預測ENSO
    「『阿爾法狗』為什麼厲害」,它的背後是專家利用神經網絡算法,將圍棋高手的比賽記錄輸入計算機,並讓計算機自己與自己進行比賽,在這個過程中不斷學習訓練。既然『阿爾法狗』能夠擊敗世界圍棋冠軍,說明它具有很強的優越性,那麼我們的ENSO預測能否也引入機器學習呢?」羅京佳表示,「『阿爾法狗』用的深度神經網絡與傳統的神經網絡不一樣,它有很強大的自我學習能力。」
  • ​卷積神經網絡與Transformer結合,東南大學提出視頻幀合成新架構
    ​卷積神經網絡與Transformer結合,東南大學提出視頻幀合成新架構 2020-12-09 17:59 來源:澎湃新聞·澎湃號·湃客
  • 基於PVANet卷積神經網絡模型的交通標誌識別算法
    結果表明, 所構建的卷積神經網絡具有優秀的小目標物體檢測能力, 相應的交通標誌檢測算法可以實現較高的準確率。 計算機目標檢測是指計算機根據視頻、圖像信息對目標物體的類別與位置的檢測, 是計算機視覺研究領域的基本內容。隨著硬體和軟體技術的發展, 尤其是基於卷積神經網絡目標檢測算法的普及應用, 計算機目標檢測的準確率及速度都有了很大提高[1]。
  • 蘋果筆記本電腦防藍光貼膜,保護視力緩解眼睛疲勞
    所以,要想好好保護眼睛,擁有一個抗藍光的保護膜也是必不可少的。同時貼上鋼化膜之後的筆記本電腦,也擁有一定的防刮花磕碰保障,讓我們使用更加安心。今天就結合蘋果筆記本電腦,給大家推薦幾款實用的抗藍光鋼化膜,保護視力緩解眼睛疲勞,一起來看看有沒有你需要的款式吧。
  • 用於圖像分割的卷積神經網絡:從R-CNN到Mask R-CNN
    選自Athelas作者:Dhruv Parthasarathy機器之心編譯參與:王宇欣、hustcxy、黃小天卷積神經網絡(CNN)的作用遠不止分類那麼簡單!在本文中,我們將看到卷積神經網絡(CNN)如何在圖像實例分割任務中提升其結果。
  • 毀掉孩子視力的四大「原罪」,不是電腦也不是手機,而是它們......
    其實,造成孩子視力不好的因素是多方面的。我們往往只是看到危害孩子視力的「表面因素」,而忽視了影響孩子視力的這四大「原罪」!環境影響除了先天遺傳的因素外,環境對孩子視力的影響也是不容忽視的。比如家裡面使用的各種LED燈逐漸取代了傳統燈具。LED燈節能環保,和傳統的白熾燈相比,擁有更長的壽命。
  • 視力還好嗎?科學家:觀看深紅色的光,可以拯救你下降的視力!
    天天看手機看電腦,你的視力還好嗎?已知線粒體的密度在感光器中最大,它有著高能量的需求並介導色覺的視錐細胞。因此,雖然看似我們是在慢慢變老,但實際上視網膜的衰老速度比其他器官要快得多。有沒有什麼辦法減緩這一過程呢?可能真的有!
  • 做完近視手術可以達到1.5的視力嗎?
    有很多小夥伴在做近視手術前會要求醫生,想要達到1.2甚至1.5的視力,那麼事實真是如此嗎?視力可以達到多少是醫生可以決定的嗎? 近視手術後的視力是因人而異的,這與是否佩戴眼鏡、驗光是否正確、戴眼鏡的度數、眼球的發育,特別是視網膜的功能等關係密切。一般來說,術後裸眼能達到的視力是術前最好的矯正視力。
  • 卷積神經網絡與Transformer結合,東南大學提出視頻幀合成新架構
    選自arXiv作者:Zhouyong Liu 等機器之心編譯機器之心編輯部研究者表示,這是卷積神經網絡與深度卷積神經網絡(CNN)是功能非常強大的模型,在一些困難的計算機視覺任務上性能也很卓越。儘管卷積神經網絡只要有大量已標記的訓練樣本就能夠執行,但是由於物體的變形與移動、場景照明變化以及視頻序列中攝像頭位置的變化,卷積神經網絡在視頻幀合成方面的表現並不出色。
  • ​卷積神經網絡與Transformer結合,東南大學提視頻幀合成新架構
    選自arXiv作者:Zhouyong Liu 等機器之心編譯機器之心編輯部研究者表示,這是卷積神經網絡與 Transformer 首度結合用於視頻幀合成。深度卷積神經網絡(CNN)是功能非常強大的模型,在一些困難的計算機視覺任務上性能也很卓越。儘管卷積神經網絡只要有大量已標記的訓練樣本就能夠執行,但是由於物體的變形與移動、場景照明變化以及視頻序列中攝像頭位置的變化,卷積神經網絡在視頻幀合成方面的表現並不出色。
  • 是什麼在偷走你的視力?瞳視角為你解答!
    只要你壽命足夠長,你至少會患上一種眼病,近期《柳葉刀-公共衛生》發布了眼科數據統計,我國中度和高度近視患病率發展最快,以此也反映出我國視力健康十分的嚴峻!那麼面對如此嚴峻的視力健康問題,我們到底應該做些什麼來保護我們的視力,保護我們祖國未來花朵們的視力呢?
  • 【12.12年終摘鏡福利】做完近視手術後可以達到1.5的視力嗎?
    【12.12年終摘鏡福利】做完近視手術後可以達到1.5的視力嗎?有很多小夥伴在做近視手術前會要求醫生,想要達到1.2甚至1.5的視力,那麼事實真是如此嗎?視力可以達到多少是醫生可以決定的嗎?
  • 愛眼日 | 為「EYE」前行,保護視力,這些事情你要知道!
    共同呵護好孩子的眼睛讓他們擁有一個光明的未來6月6日,全國愛眼日!視覺2020,關注普遍的眼健康! 護眼指南注意視力問題的9個信號1、視力下降:眼睛突然看不見,但一會就好了;持續性視力喪失。2、視物變形或變色:看東西彎曲變形,直線看成了彎曲的線;有時看東西變暗或者發紅、發黃。
  • 藍光損害視力只是其一,損傷皮膚才難修護,常用電腦的你要小心了
    藍光對眼睛的傷害通常很容易發現,因為我們會出現眼睛乾澀、視力模糊等生理反應,因此警惕性會更強一些,護眼產品早早就用起來了。而藍光對皮膚的傷害才是更嚴重的,因為皮膚的反應相對較慢,通常在幾年或者幾十年後,才體現出與同齡人巨大的皮膚狀態差距,而這些損傷是極難修護的。
  • 十年前的電腦能用嗎?我來告訴你懂得愛護電腦,還可以用得很流暢
    前天有個粉絲留言:你的文章配圖什麼都是XP系統,還有雙PS2接口的電腦,都是十年開外的老電腦了。他問對了,我現在用的電腦就是十年以前的電腦,雖然是很老舊,但是卻用得順心順手,沒有半點煩惱。不像某些人,電腦只用了兩三年就覺得心煩氣躁,恨不得一腳把它踢爛。
  • 久視一族要注意,用眼過度不但會視力下降,還會影響健康
    現代人眼睛的壓力越來越大,如每天盯著屏幕的用電腦人員、寒窗苦讀的學子、注意力高度集中的司機等,這部分人群的工作和學習決定了他們的眼睛要特別辛苦。當你長時間面對電腦或手機屏幕的時候,你會發現你的眼睛特別不舒服,眼睛發花、看不清東西、發紅、流淚、酸脹、乾澀,嚴重的甚至誘發白內障、青光眼、視網膜剝離等嚴重的眼病。愛美的女士們在電腦前待久了,不只眼睛不舒服,你會發現自己變成了「黃臉婆」, 臉色漸漸失去原有的光彩,變暗沉、變黃。