Python實(shí)現(xiàn)“鳥(niǎo)臉識(shí)別”系統(tǒng),看看什么鳥(niǎo)最貪吃~ 初學(xué)者也能學(xué)會(huì)
已開(kāi)源
夢(mèng)晨 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
網(wǎng)友cldud1245是一個(gè)鳥(niǎo)類(lèi)愛(ài)好者(以下簡(jiǎn)稱(chēng)喂鳥(niǎo)哥),最近打算自學(xué)Python。
擁有其他語(yǔ)言編程經(jīng)驗(yàn)的他,可不打算按部就班從Hello World做起,一上來(lái)就挑戰(zhàn)圖像識(shí)別!
他用一個(gè)攝像頭對(duì)著自家后院的喂鳥(niǎo)器,拍到來(lái)覓食的鳥(niǎo)就嘗試判斷鳥(niǎo)的種類(lèi),并通過(guò)Twitter機(jī)器人實(shí)時(shí)發(fā)布判斷結(jié)果。
運(yùn)行第一天就拍到了17次!最多的時(shí)候每十幾分鐘就有鳥(niǎo)來(lái)光顧。
其中卡羅萊納山雀總共來(lái)過(guò)8次,就是還不能準(zhǔn)確判斷是否是同一只。
使用的技術(shù)都是開(kāi)源的!
喂鳥(niǎo)哥把代碼放到了Github上開(kāi)源,只有一個(gè)文件、三百多行。來(lái)看看他是怎么實(shí)現(xiàn)的吧!
作為初學(xué)者,他使用的都是已存在的開(kāi)源項(xiàng)目,沒(méi)有自己訓(xùn)練新的模型。
目標(biāo)檢測(cè)模型使用的是隨TensorFlow目標(biāo)檢測(cè)API發(fā)布的SSD Openimages v4。
鳥(niǎo)類(lèi)分類(lèi)模型是TensorFlow Hub上由Google發(fā)布的基于MobileNet V2的輕量級(jí)模型。
圖像處理就是經(jīng)典的Open CV了。
不過(guò)鳥(niǎo)類(lèi)分類(lèi)模型中給出的結(jié)果都是拉丁文學(xué)名,為了方便大家看懂他又寫(xiě)了一個(gè)爬蟲(chóng)從維基百科上把對(duì)應(yīng)的俗名爬了下來(lái)。
另外,該項(xiàng)目Github中有詳細(xì)的思路解說(shuō),感興趣的話(huà)可以去學(xué)習(xí)一下!
還有進(jìn)步空間
從Twitter上發(fā)布的結(jié)果目前看來(lái)準(zhǔn)確率還有待提高,比如拍到飛行中的鳥(niǎo)識(shí)別起來(lái)會(huì)遇到困難。
有時(shí)也會(huì)把兩只鳥(niǎo)識(shí)別成三只。喂鳥(niǎo)哥打算用非極大值抑制?(Non-Maximum Suppression)來(lái)修復(fù)這個(gè)問(wèn)題。
不過(guò)這才是項(xiàng)目運(yùn)行的第一天。
喂鳥(niǎo)哥使用鳥(niǎo)類(lèi)百科圖冊(cè)進(jìn)行測(cè)試,結(jié)果還是很準(zhǔn)確的,所以懷疑攝像頭是否還不夠清晰
有人建議他,把網(wǎng)友指出正確名稱(chēng)的評(píng)論爬取下來(lái),與圖片一起再加入數(shù)據(jù)集進(jìn)行訓(xùn)練,就可以不斷提高精度。
還有人提議下一步要識(shí)別鳥(niǎo)的個(gè)體身份,看看到底是同一只鳥(niǎo)反復(fù)來(lái)吃東西,還是只是一個(gè)品種的很多只鳥(niǎo)。
One More Thing
回復(fù)中有人問(wèn)到:“但是它能判斷照片是不是在國(guó)家公園拍攝嗎?”
這個(gè)梗來(lái)自網(wǎng)絡(luò)漫畫(huà)網(wǎng)站XKCD在2014年發(fā)表的一幅漫畫(huà)。
如果要判斷一張照片是否在國(guó)家公園拍攝,只需要判斷一下圖片的地理標(biāo)記信息就行了。
但是要判斷照片里有沒(méi)有鳥(niǎo),則是一個(gè)困難的多的問(wèn)題。
Flickr的工程師看到后接受了這個(gè)挑戰(zhàn),用當(dāng)時(shí)剛剛掀起新一輪熱潮的深度學(xué)習(xí)做出了漫畫(huà)中描述的這款程序Park or Bird(現(xiàn)已停止訪(fǎng)問(wèn))。
來(lái)看看當(dāng)時(shí)的深度卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)。
隨著技術(shù)的發(fā)展,今天的我們不僅能識(shí)別照片中是否有鳥(niǎo),還能判斷鳥(niǎo)的種類(lèi),甚至識(shí)別鳥(niǎo)的個(gè)體身份也不再是天方夜譚。
參考鏈接:
[1]github項(xiàng)目地址 https://github.com/cmoon4/backyard_birdbot
[2]https://twitter.com/BackyardBirdbot
[3]https://xkcd.com/1425/
[4]https://code.flickr.net/2014/10/20/introducing-flickr-park-or-bird/



