Python怎么識別圖像

這篇文章主要介紹“Python怎么識別圖像”,在日常操作中,相信很多人在Python怎么識別圖像問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python怎么識別圖像”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司主營萊陽網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),萊陽h5微信小程序定制開發(fā)搭建,萊陽網(wǎng)站營銷推廣歡迎萊陽等地區(qū)企業(yè)咨詢

我看見的時候自然會知道

只需要10幾行Python代碼,你就能構(gòu)建自己的機(jī)器視覺模型,快速準(zhǔn)確識別海量圖片??靵碓囋嚢桑?/p>

0、視覺

進(jìn)化的作用,讓人類對圖像的處理非常高效。

這里,我給你展示一張照片。

Python怎么識別圖像

如果我這樣問你:

你能否分辨出圖片中哪個是貓,哪個是狗?

你可能立即會覺得自己遭受到了莫大的侮辱。并且大聲質(zhì)問我:你覺得我智商有問題嗎?!

息怒。

換一個問法:

你能否把自己分辨貓狗圖片的方法,描述成嚴(yán)格的規(guī)則,教給計算機(jī),以便讓它替我們?nèi)祟惙直娉汕先f張圖片呢?

對大多數(shù)人來說,此時感受到的,就不是羞辱,而是壓力了。

如果你是個有毅力的人,可能會嘗試各種判別標(biāo)準(zhǔn):圖片某個位置的像素顏色、某個局部的邊緣形狀、某個水平位置的連續(xù)顏色長度……

你把這些描述告訴計算機(jī),它果然就可以判斷出左邊的貓和右邊的狗了。

問題是,計算機(jī)真的會分辨貓狗圖片了嗎?

我又拿出一張照片給你。

Python怎么識別圖像

你會發(fā)現(xiàn),幾乎所有的規(guī)則定義,都需要改寫。

當(dāng)機(jī)器好不容易可以用近似投機(jī)取巧的方法正確分辨了這兩張圖片里面的動物時,我又拿出來一張新圖片……

Python怎么識別圖像

幾個小時以后,你決定放棄。

別氣餒。

你遭遇到的,并不是新問題。就連大法官,也有過同樣的煩惱。

Python怎么識別圖像

1964年,美國***法院的大法官Potter Stewart在“Jacobellis v. Ohio”一案中,曾經(jīng)就某部電影中出現(xiàn)的某種具體圖像分類問題,說過一句名言“我不準(zhǔn)備就其概念給出簡短而明確的定義……但是,我看見的時候自然會知道”(I know it when I see it)。

原文如下:

I shall not today attempt further to define the kinds of material I understand to be embraced within that shorthand description (“hard-core pornography”), and perhaps I could never succeed in intelligibly doing so. But I know it when I see it, and the motion picture involved in this case is not that.

考慮到精神文明建設(shè)的需要,這一段就不翻譯了。

人類沒法把圖片分辨的規(guī)則詳細(xì)、具體而準(zhǔn)確地描述給計算機(jī),是不是意味著計算機(jī)不能辨識圖片呢?

當(dāng)然不是。

2017年12月份的《科學(xué)美國人》雜志,就把“視覺人工智能”(AI that sees like humans)定義為2017年新興技術(shù)之一。

Python怎么識別圖像

你早已聽說過自動駕駛汽車的神奇吧?沒有機(jī)器對圖像的辨識,能做到嗎?

你的好友可能(不止一次)給你演示如何用新買的iPhone X做面部識別解鎖了吧?沒有機(jī)器對圖像的辨識,能做到嗎?

Python怎么識別圖像

醫(yī)學(xué)領(lǐng)域里,計算機(jī)對于科學(xué)影像(如X光片)的分析能力,已經(jīng)超過有多年從業(yè)經(jīng)驗的醫(yī)生了。沒有機(jī)器對圖像的辨識,能做到嗎?

Python怎么識別圖像

你可能一下子覺得有些迷茫了——這難道是奇跡?

不是。

計算機(jī)所做的,是學(xué)習(xí)。

通過學(xué)習(xí)足夠數(shù)量的樣本,機(jī)器可以從數(shù)據(jù)中自己構(gòu)建模型。其中,可能涉及大量的判斷準(zhǔn)則。但是,人類不需要告訴機(jī)器任何一條。它是完全自己領(lǐng)悟和掌握的。

你可能會覺得很興奮。

那么,下面我來告訴你一個更令你興奮的消息——你自己也能很輕易地構(gòu)建圖片分類系統(tǒng)!

不信?請跟著我下面的介紹,來試試看。

1、數(shù)據(jù)

咱們就不辨識貓和狗了,這個問題有點不夠新鮮。

咱們來分辨機(jī)器貓,好不好?

對,我說的就是哆啦a夢。

Python怎么識別圖像

把它和誰進(jìn)行區(qū)分呢?

一開始我想找霸王龍,后來覺得這樣簡直是作弊,因為他倆長得實在差別太大。

Python怎么識別圖像

既然哆啦a夢是機(jī)器人,咱們就另外找個機(jī)器人來區(qū)分吧。

一提到機(jī)器人,我立刻就想起來了它。

Python怎么識別圖像

對,機(jī)器人瓦力(WALLE)。

我給你準(zhǔn)備好了119張哆啦a夢的照片,和80張瓦力的照片。圖片已經(jīng)上傳到了這個Github項目(https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Fwshuyi%2Fdemo-python-image-classification)。

請點擊這個鏈接(https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Fwshuyi%2Fdemo-python-image-classification%2Farchive%2Fmaster.zip),下載壓縮包。然后在本地解壓。作為咱們的演示目錄。

解壓后,你會看到目錄下有個image文件夾,其中包含兩個子目錄,分別是doraemon和walle。

Python怎么識別圖像

打開其中doraemon的目錄,我們看看都有哪些圖片。

Python怎么識別圖像

可以看到,哆啦a夢的圖片真是五花八門。各種場景、背景顏色、表情、動作、角度……不一而足。

這些圖片,大小不一,長寬比例也各不相同。

我們再來看看瓦力,也是類似的狀況。

Python怎么識別圖像

數(shù)據(jù)已經(jīng)有了,下面我們來準(zhǔn)備一下環(huán)境配置。

2、環(huán)境

我們使用Python集成運行環(huán)境Anaconda。

請到這個網(wǎng)址(https://link.jianshu.com/?t=https%3A%2F%2Fwww.continuum.io%2Fdownloads) 下載***版的Anaconda。

下拉頁面,找到下載位置。根據(jù)你目前使用的系統(tǒng),網(wǎng)站會自動推薦給你適合的版本下載。我使用的是macOS,下載文件格式為pkg。

Python怎么識別圖像

下載頁面區(qū)左側(cè)是Python 3.6版,右側(cè)是2.7版。請選擇2.7版本。

雙擊下載后的pkg文件,根據(jù)中文提示一步步安裝即可。

Python怎么識別圖像

安裝好Anaconda后,我們需要安裝TuriCreate。

請到你的“終端”(Linux, macOS)或者“命令提示符”(Windows)下面,進(jìn)入咱們剛剛下載解壓后的樣例目錄。

執(zhí)行以下命令,我們來創(chuàng)建一個Anaconda虛擬環(huán)境,名字叫做turi。

然后,我們激活turi虛擬環(huán)境。

在這個環(huán)境中,我們安裝***版的TuriCreate。

安裝完畢后,執(zhí)行:

Python怎么識別圖像

這樣就進(jìn)入到了Jupyter筆記本環(huán)境。我們新建一個Python 2筆記本。

Python怎么識別圖像

這樣就出現(xiàn)了一個空白筆記本。

Python怎么識別圖像

點擊左上角筆記本名稱,修改為有意義的筆記本名“demo-python-image-classification”。

Python怎么識別圖像

準(zhǔn)備工作完畢,下面我們就可以開始編寫程序了。

3、代碼

首先,我們讀入TuriCreate軟件包。它是蘋果并購來的機(jī)器學(xué)習(xí)框架,為開發(fā)者提供非常簡便的數(shù)據(jù)分析與人工智能接口。

import turicreate as tc

我們指定圖像所在的文件夾image。

img_folder = 'image'

前面介紹了,image下,有哆啦a夢和瓦力這兩個文件夾。注意如果將來你需要辨別其他的圖片(例如貓和狗),請把不同類別的圖片也在image中分別存入不同的文件夾,這些文件夾的名稱就是圖片的類別名(cat和dog)。

然后,我們讓TuriCreate讀取所有的圖像文件,并且存儲到data數(shù)據(jù)框。

data = tc.image_analysis.load_images(img_folder, with_path=True)

這里可能會有錯誤信息。

Unsupported image format. Supported formats are JPEG and PNG    file: /Users/wsy/Dropbox/var/wsywork/learn/demo-workshops/demo-python-image-classification/image/walle/.DS_Store

本例中提示,有幾個.DS_Store文件,TuriCreate不認(rèn)識,無法當(dāng)作圖片來讀取。

這些.DS_Store文件,是蘋果macOS系統(tǒng)創(chuàng)建的隱藏文件,用來保存目錄的自定義屬性,例如圖標(biāo)位置或背景顏色。

我們忽略這些信息即可。

下面,我們來看看,data數(shù)據(jù)框里面都有什么。

data

Python怎么識別圖像

可以看到,data包含兩列信息,***列是圖片的地址,第二列是圖片的長寬描述。

因為我們使用了119張哆啦a夢圖片,80張瓦力圖片,所以總共的數(shù)據(jù)量是199條。數(shù)據(jù)讀取完整性驗證通過。

下面,我們需要讓TuriCreate了解不同圖片的標(biāo)記(label)信息。也就是,一張圖片到底是哆啦a夢,還是瓦力呢?

這就是為什么一開始,你就得把不同的圖片分類保存到不同的文件夾下面。

此時,我們利用文件夾名稱,來給圖片打標(biāo)記。

data['label'] = data['path'].apply(lambda path: 'doraemon' if 'doraemon' in path else 'walle')

這條語句,把doraemon目錄下的圖片,在data數(shù)據(jù)框里打標(biāo)記為doraemon。反之就都視為瓦力(walle)。

我們來看看標(biāo)記之后的data數(shù)據(jù)框。

data

Python怎么識別圖像

可以看到,數(shù)據(jù)的條目數(shù)量(行數(shù))是一致的,只是多出來了一個標(biāo)記列(label),說明圖片的類別。

我們把數(shù)據(jù)存儲一下。

data.save('doraemon-walle.sframe')

這個存儲動作,讓我們保存到目前的數(shù)據(jù)處理結(jié)果。之后的分析,只需要讀入這個sframe文件就可以了,不需要從頭去跟文件夾打交道了。

從這個例子里,你可能看不出什么優(yōu)勢。但是想象一下,如果你的圖片有好幾個G,甚至幾個T,每次做分析處理,都從頭讀取文件和打標(biāo)記,就會非常耗時。

我們深入探索一下數(shù)據(jù)框。

TuriCreate提供了非常方便的explore()函數(shù),幫助我們直觀探索數(shù)據(jù)框信息。

data.explore()

這時候,TuriCreate會彈出一個頁面,給我們展示數(shù)據(jù)框里面的內(nèi)容。

Python怎么識別圖像

原先打印data數(shù)據(jù)框,我們只能看到圖片的尺寸,此時卻可以瀏覽圖片的內(nèi)容。

如果你覺得圖片太小,沒關(guān)系。把鼠標(biāo)懸停在某張縮略圖上面,就可以看到大圖。

Python怎么識別圖像

數(shù)據(jù)框探索完畢。我們回到notebook下面,繼續(xù)寫代碼。

這里我們讓TuriCreate把data數(shù)據(jù)框分為訓(xùn)練集合和測試集合。

train_data, test_data = data.random_split(0.8, seed=2)

訓(xùn)練集合是用來讓機(jī)器進(jìn)行觀察學(xué)習(xí)的。電腦會利用訓(xùn)練集合的數(shù)據(jù)自己建立模型。但是模型的效果(例如分類的準(zhǔn)確程度)如何?我們需要用測試集來進(jìn)行驗證測試。

這就如同老師不應(yīng)該把考試題目都拿來給學(xué)生做作業(yè)和練習(xí)一樣。只有考學(xué)生沒見過的題,才能區(qū)分學(xué)生是掌握了正確的解題方法,還是死記硬背了作業(yè)答案。

我們讓TuriCreate把80%的數(shù)據(jù)分給了訓(xùn)練集,把剩余20%的數(shù)據(jù)拿到一邊,等待測試。這里我設(shè)定了隨機(jī)種子取值為2,這是為了保證數(shù)據(jù)拆分的一致性。以便重復(fù)驗證我們的結(jié)果。

好了,下面我們讓機(jī)器開始觀察學(xué)習(xí)訓(xùn)練集中的每一個數(shù)據(jù),并且嘗試自己建立模型。

下面代碼***次執(zhí)行的時候,需要等候一段時間。因為TuriCreate需要從蘋果開發(fā)者官網(wǎng)上下載一些數(shù)據(jù)。這些數(shù)據(jù)大概100M左右。

需要的時長,依你和蘋果服務(wù)器的連接速度而異。反正在我這兒,下載挺慢的。

好在只有***次需要下載。之后的重復(fù)執(zhí)行,會跳過下載步驟。

model = tc.image_classifier.create(train_data, target='label')

下載完畢后,你會看到TuriCreate的訓(xùn)練信息。

Resizing images...  Performing feature extraction on resized images...  Completed 168/168  PROGRESS: Creating a validation set from 5 percent of training data. This may take a while.           You can set ``validation_set=None`` to disable validation tracking.

你會發(fā)現(xiàn),TuriCreateh會幫助你把圖片進(jìn)行尺寸變換,并且自動抓取圖片的特征。然后它會從訓(xùn)練集里面抽取5%的數(shù)據(jù)作為驗證集,不斷迭代尋找***的參數(shù)配置,達(dá)到***模型。

這里可能會有一些警告信息,忽略就可以了。

當(dāng)你看到下列信息的時候,意味著訓(xùn)練工作已經(jīng)順利完成了。

可以看到,幾個輪次下來,不論是訓(xùn)練的準(zhǔn)確度,還是驗證的準(zhǔn)確度,都已經(jīng)非常高了。

Python怎么識別圖像

下面,我們用獲得的圖片分類模型,來對測試集做預(yù)測。

predictions = model.predict(test_data)

我們把預(yù)測的結(jié)果(一系列圖片對應(yīng)的標(biāo)記序列)存入了predictions變量。

然后,我們讓TuriCreate告訴我們,在測試集上,我們的模型表現(xiàn)如何。

先別急著往下看,猜猜結(jié)果正確率大概是多少?從0到1之間,猜測一個數(shù)字。

猜完后,請繼續(xù)。

metrics = model.evaluate(test_data)  print(metrics['accuracy'])

這就是正確率的結(jié)果:

0.967741935484

我***次看見的時候,震驚不已。

我們只用了100多個數(shù)據(jù)做了訓(xùn)練,居然就能在測試集(機(jī)器沒有見過的圖片數(shù)據(jù))上,獲得如此高的辨識準(zhǔn)確度。

為了驗證這不是準(zhǔn)確率計算部分代碼的失誤,我們來實際看看預(yù)測結(jié)果。

predictions

這是打印出的預(yù)測標(biāo)記序列:

dtype: str  Rows: 31  ['doraemon', 'doraemon', 'doraemon', 'doraemon', 'walle', 'doraemon', 'walle', 'doraemon', 'walle', 'walle', 'doraemon', 'doraemon', 'doraemon', 'doraemon', 'doraemon', 'walle', 'doraemon', 'doraemon', 'walle', 'walle', 'doraemon', 'doraemon', 'walle', 'walle', 'walle', 'doraemon', 'doraemon', 'walle', 'walle', 'doraemon', 'walle']

再看看實際的標(biāo)簽。

test_data['label']

這是實際標(biāo)記序列:

dtype: str  Rows: 31  ['doraemon', 'doraemon', 'doraemon', 'doraemon', 'walle', 'doraemon', 'walle', 'walle', 'walle', 'walle', 'doraemon', 'doraemon', 'doraemon', 'doraemon', 'doraemon', 'walle', 'doraemon', 'doraemon', 'walle', 'walle', 'doraemon', 'doraemon', 'walle', 'walle', 'walle', 'doraemon', 'doraemon', 'walle', 'walle', 'doraemon', 'walle']

我們查找一下,到底哪些圖片預(yù)測失誤了。

你當(dāng)然可以一個個對比著檢查。但是如果你的測試集有成千上萬的數(shù)據(jù),這樣做效率就會很低。

我們分析的方法,是首先找出預(yù)測標(biāo)記序列(predictions)和原始標(biāo)記序列(test_data['label'])之間有哪些不一致,然后在測試數(shù)據(jù)集里展示這些不一致的位置。

test_data[test_data['label'] != predictions]

Python怎么識別圖像

我們發(fā)現(xiàn),在31個測試數(shù)據(jù)中,只有1處標(biāo)記預(yù)測發(fā)生了失誤。原始的標(biāo)記是瓦力,我們的模型預(yù)測結(jié)果是哆啦a夢。

我們獲得這個數(shù)據(jù)點對應(yīng)的原始文件路徑。

wrong_pred_img_path = test_data[predictions != test_data['label']][0]['path']

然后,我們把圖像讀取到img變量。

img = tc.Image(wrong_pred_img_path)

用TuriCreate提供的show()函數(shù),我們查看一下這張圖片的內(nèi)容。

img.show()

Python怎么識別圖像

因為深度學(xué)習(xí)的一個問題在于模型過于復(fù)雜,所以我們無法精確判別機(jī)器是怎么錯誤辨識這張圖的。但是我們不難發(fā)現(xiàn)這張圖片有些特征——除了瓦力以外,還有另外一個機(jī)器人。

如果你看過這部電影,應(yīng)該知道兩個機(jī)器人之間的關(guān)系。這里我們按下不表。問題在于,這個右上方的機(jī)器人圓頭圓腦,看上去與棱角分明的瓦力差別很大。但是,別忘了,哆啦a夢也是圓頭圓腦的。

4、原理

按照上面一節(jié)的代碼執(zhí)行后,你應(yīng)該已經(jīng)了解如何構(gòu)建自己的圖片分類系統(tǒng)了。在沒有任何原理知識的情況下,你研制的這個模型已經(jīng)做得非常棒了。不是嗎?

如果你對原理不感興趣,請?zhí)^這一部分,看“小結(jié)”。

如果你對知識喜歡刨根問底,那咱們來講講原理。

雖然不過寫了10幾行代碼,但是你構(gòu)建的模型卻足夠復(fù)雜和高大上。它就是傳說中的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)。

它是深度機(jī)器學(xué)習(xí)模型的一種。最為簡單的卷積神經(jīng)網(wǎng)絡(luò)大概長這個樣子:

Python怎么識別圖像

最左邊的,是輸入層。也就是咱們輸入的圖片。本例中,是哆啦a夢和瓦力。

在計算機(jī)里,圖片是按照不同顏色(RGB,即Red, Green, Blue)分層存儲的。就像下面這個例子。

Python怎么識別圖像

根據(jù)分辨率不同,電腦會把每一層的圖片存成某種大小的矩陣。對應(yīng)某個行列位置,存的就是個數(shù)字而已。

這就是為什么,在運行代碼的時候,你會發(fā)現(xiàn)TuriCreate首先做的,就是重新設(shè)置圖片的大小。因為如果輸入圖片大小各異的話,下面步驟無法進(jìn)行。

有了輸入數(shù)據(jù),就順序進(jìn)入下一層,也就是卷積層(Convolutional Layer)。

卷積層聽起來似乎很神秘和復(fù)雜。但是原理非常簡單。它是由若干個過濾器組成的。每個過濾器就是一個小矩陣。

使用的時候,在輸入數(shù)據(jù)上,移動這個小矩陣,跟原先與矩陣重疊的位置上的數(shù)字做乘法后加在一起。這樣原先的一個矩陣,就變成了“卷積”之后的一個數(shù)字。

下面這張動圖,很形象地為你解釋了這一過程。

Python怎么識別圖像

這個過程,就是不斷從一個矩陣上去尋找某種特征。這種特征可能是某個邊緣的形狀之類。

再下一層,叫做“池化層”(Pooling Layer)。這個翻譯簡直讓人無語。我覺得翻譯成“匯總層”或者“采樣層”都要好許多。下文中,我們稱其為“采樣層”。

采樣的目的,是避免讓機(jī)器認(rèn)為“必須在左上角的方格位置,有一個尖尖的邊緣”。實際上,在一張圖片里,我們要識別的對象可能發(fā)生位移。因此我們需要用匯總采樣的方式模糊某個特征的位置,將其從“某個具體的點”,擴(kuò)展成“某個區(qū)域”。

如果這樣說,讓你覺得不夠直觀,請參考下面這張動圖。

Python怎么識別圖像

這里使用的是“***值采樣”(Max-Pooling)。以原先的2x2范圍作為一個分塊,從中找到***值,記錄在新的結(jié)果矩陣?yán)铩?/p>

一個有用的規(guī)律是,隨著層數(shù)不斷向右推進(jìn),一般結(jié)果圖像(其實正規(guī)地說,應(yīng)該叫做矩陣)會變得越來越小,但是層數(shù)會變得越來越多。

只有這樣,我們才能把圖片中的規(guī)律信息抽取出來,并且盡量掌握足夠多的模式。

如果你還是覺得不過癮,請訪問這個網(wǎng)站(https://link.jianshu.com/?t=http%3A%2F%2Fscs.ryerson.ca%2F%7Eaharley%2Fvis%2Fconv%2Fflat.html)。

它為你生動解析了卷積神經(jīng)網(wǎng)絡(luò)中,各個層次上到底發(fā)生了什么。

Python怎么識別圖像

左上角是用戶輸入位置。請利用鼠標(biāo),手寫一個數(shù)字(0-9)。寫得難看一些也沒有關(guān)系。

我輸入了一個7。

觀察輸出結(jié)果,模型正確判斷***選擇為7,第二可能性為3。回答正確。

讓我們觀察模型建構(gòu)的細(xì)節(jié)。

我們把鼠標(biāo)挪到***個卷積層。停在任意一個像素上。電腦就告訴我們這個點是從上一層圖形中哪幾個像素,經(jīng)過特征檢測(feature detection)得來的。

Python怎么識別圖像

同理,在***個Max pooling層上懸停,電腦也可以可視化展示給我們,該像素是從哪幾個像素區(qū)塊里抽樣獲得的。

Python怎么識別圖像

這個網(wǎng)站,值得你花時間多玩兒一會兒。它可以幫助你理解卷積神經(jīng)網(wǎng)絡(luò)的內(nèi)涵。

回顧我們的示例圖:

Python怎么識別圖像

下一層叫做全連接層(Fully Connected Layer),它其實就是把上一層輸出的若干個矩陣全部壓縮到一維,變成一個長長的輸出結(jié)果。

之后是輸出層,對應(yīng)的結(jié)果就是我們需要讓機(jī)器掌握的分類。

如果只看***兩層,你會很容易把它跟之前學(xué)過的深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)聯(lián)系起來。

Python怎么識別圖像

既然我們已經(jīng)有了深度神經(jīng)網(wǎng)絡(luò),為什么還要如此費力去使用卷積層和采樣層,導(dǎo)致模型如此復(fù)雜呢?

這里出于兩個考慮:

首先是計算量。圖片數(shù)據(jù)的輸入量一般比較大,如果我們直接用若干深度神經(jīng)層將其連接到輸出層,則每一層的輸入輸出數(shù)量都很龐大,總計算量是難以想像的。

其次是模式特征的抓取。即便是使用非常龐大的計算量,深度神經(jīng)網(wǎng)絡(luò)對于圖片模式的識別效果也未必盡如人意。因為它學(xué)習(xí)了太多噪聲。而卷積層和采樣層的引入,可以有效過濾掉噪聲,突出圖片中的模式對訓(xùn)練結(jié)果的影響。

你可能會想,咱們只編寫了10幾行代碼而已,使用的卷積神經(jīng)網(wǎng)絡(luò)一定跟上圖差不多,只有4、5層的樣子吧?

不是這樣的,你用的層數(shù),有足足50層呢!

它的學(xué)名,叫做Resnet-50,是微軟的研發(fā)成果,曾經(jīng)在2015年,贏得過ILSRVC比賽。在ImageNet數(shù)據(jù)集上,它的分類辨識效果,已經(jīng)超越人類。

我把對應(yīng)論文的地址附在這里(https://link.jianshu.com/?t=https%3A%2F%2Farxiv.org%2Fabs%2F1512.03385),如果你有興趣,可以參考。

Python怎么識別圖像

請看上圖中最下面的那一個,就是它的大略樣子。

足夠深度,足夠復(fù)雜吧。

如果你之前對深度神經(jīng)網(wǎng)絡(luò)有一些了解,一定會更加覺得不可思議。這么多層,這么少的訓(xùn)練數(shù)據(jù)量,怎么能獲得如此好的測試結(jié)果呢?而如果要獲得好的訓(xùn)練效果,大量圖片的訓(xùn)練過程,豈不是應(yīng)該花很長時間嗎?

沒錯,如果你自己從頭搭建一個Resnet-50,并且在ImageNet數(shù)據(jù)集上做訓(xùn)練,那么即便你有很好的硬件設(shè)備(GPU),也需要很長時間。

如果你在自己的筆記本上訓(xùn)練……算了吧。

那么,TuriCreate難道真的是個奇跡?既不需要花費長時間訓(xùn)練,又只需要小樣本,就能獲得高水平的分類效果?

不,數(shù)據(jù)科學(xué)里沒有什么奇跡。

到此,關(guān)于“Python怎么識別圖像”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

文章名稱:Python怎么識別圖像
本文路徑:http://bm7419.com/article38/jjsesp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站改版、網(wǎng)站導(dǎo)航、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計