
分不清譚卓和郝蕾?各來(lái)200張照片,讓深度學(xué)習(xí)幫我們識(shí)別吧。
問(wèn)題
《如何用Python和深度神經(jīng)網(wǎng)絡(luò)識(shí)別圖像?》一文中,我給你展示了如何用深度學(xué)習(xí),教電腦區(qū)分機(jī)器人瓦力和哆啦a夢(mèng)。
很快就有用戶(hù)在后臺(tái)留言,問(wèn):
老師,我想自己訓(xùn)練一個(gè)圖片分類(lèi)器,到哪里去批量下載帶標(biāo)注的訓(xùn)練圖像呢?
說(shuō)說(shuō)我寫(xiě)教程的時(shí)候,是如何找圖片的吧。
最大的圖片庫(kù),當(dāng)然就是 Google 了。
在 Google 圖像欄目下,鍵入"Walle"。

怎么樣?搜索結(jié)果很符合需求吧。
你不但找到了一批高質(zhì)量圖片,而且它們的標(biāo)注, Google 都幫你打好了。
下面一步,自然就是把這些圖片下載下來(lái)了。
我讓學(xué)生實(shí)際動(dòng)手做,每個(gè)人找兩個(gè)與別人不同的圖像集合,嘗試根據(jù)教程做深度學(xué)習(xí)分類(lèi)。
我提供給他們的方案(幾款不同的 Chrome 瀏覽器插件),效果都不好。
有的才下了幾張,就停工,甚至把瀏覽器整崩潰了。
有的下載圖片,都是重復(fù)的。
學(xué)生告訴我,經(jīng)驗(yàn)證,最簡(jiǎn)單有效的方法,是一張張手動(dòng)點(diǎn)擊下載……
這顯然不是正經(jīng)辦法。
痛點(diǎn)
渴望從 Google 圖片庫(kù)高效批量獲得優(yōu)質(zhì)帶標(biāo)注圖像,不會(huì)是個(gè)案。
這個(gè)大眾痛點(diǎn),真的沒(méi)有人嘗試解決嗎?
今天,一個(gè)偶然的機(jī)會(huì),我發(fā)現(xiàn)了一個(gè)特別棒的 Github 項(xiàng)目,叫做 google-images-download。

Github repo 鏈接在這里。
項(xiàng)目發(fā)布至今,只有短短5個(gè)月的時(shí)間,星標(biāo)數(shù)量居然已經(jīng)上了2000,看來(lái)確實(shí)非常受歡迎。
google-images-download 是個(gè) Python 腳本。
使用它,你可以一條命令,就完成 Google 圖片搜索和批量下載功能。
而且,這工具還跨平臺(tái)運(yùn)行,Linux, Windows 和 macOS 都支持。
簡(jiǎn)直是懶人福音。
安裝
google-images-download 安裝很簡(jiǎn)單。
以 macOS 為例,只需要在終端下,執(zhí)行以下命令:
pip install google_images_download
安裝就算完成了。
當(dāng)然,這需要你系統(tǒng)里已經(jīng)安裝了 Python 環(huán)境。
如果你還沒(méi)有安裝,或者對(duì)終端操作命令不太熟悉,可以參考我的《如何安裝Python運(yùn)行環(huán)境Anaconda?(視頻教程)》一文,學(xué)習(xí)如何下載安裝 Anaconda ,和進(jìn)行終端命令行操作。
嘗試
進(jìn)入下載目錄:
cd ~/Downloads
我們嘗試下載一些圖片。
《我不是藥神》里面有個(gè)叫譚卓的女演員,演的不錯(cuò)??墒俏乙婚_(kāi)始,把她當(dāng)成郝蕾了。

咱們嘗試下載一些譚卓的圖片吧。
終端里面執(zhí)行:
googleimagesdownload -k "譚卓" -l 20
解釋一下,這里的 -k 指的是 "keyword",也就是“關(guān)鍵詞”,后面用雙引號(hào)括起來(lái)要查找的關(guān)鍵詞。
你可以看出,使用中文關(guān)鍵詞,也沒(méi)問(wèn)題。
后面的 -l ,指的是"limit",也就是圖片數(shù)量限定,你需要指定自己要下載多少?gòu)垐D像。
本例中,我們要20張。
下面是執(zhí)行過(guò)程:

執(zhí)行完畢。
可以看到,下載過(guò)程中,發(fā)生了一個(gè)錯(cuò)誤。
但程序依然鍥而不舍,幫我們把下載流程運(yùn)行完畢。
我們看看結(jié)果。
下載的圖片都存放在 ~/Downloads/downloads/譚卓 下面,google-images-download 非常貼心地,為我們建立子目錄。
我們?cè)?Finder 里打開(kāi)看看:

看了半天,有的照片,還是跟郝蕾分不大清楚。
為了徹底分清兩位女演員,我們?cè)傧螺d 200 張郝蕾的照片吧。
仿照剛才的命令,我們執(zhí)行:
googleimagesdownload -k "郝蕾" -l 200
然后……就報(bào)錯(cuò)了:

解決
遇到問(wèn)題,不要慌。
你得認(rèn)真看看錯(cuò)誤提示。
注意其中出現(xiàn)了一個(gè)關(guān)鍵詞:chromedriver。
這是個(gè)什么東西呢?
我們回到 google-images-download 的 github 頁(yè)面,以 chromedriver 為關(guān)鍵詞進(jìn)行檢索。
你會(huì)立即找到如下結(jié)果:

原來(lái)如果你要的圖片數(shù)量超過(guò)100張,那么程序就必須調(diào)用 Selenium 和 chromedriver 才行。
Selenium 在你安裝 google-images-download 的時(shí)候,已經(jīng)自動(dòng)安裝好了。
你只需要下載 chromedriver ,并且指定路徑。
下載鏈接在這里。

請(qǐng)根據(jù)你的操作系統(tǒng)類(lèi)型,選擇合適的版本:

我選的是 macOS 版本。
下載后,壓縮包里面只有一個(gè)文件,把它解壓,放在 ~/Downloads 目錄下。

然后,執(zhí)行:
googleimagesdownload -k "郝蕾" -l 200 --chromedriver="./chromedriver"
這里 --chromedriver 參數(shù),用來(lái)告訴 google-images-download ,解壓后 chromedriver 所在路徑。
這回機(jī)器勤勤懇懇,幫我們下載郝蕾的照片了。

200張圖片,需要下載一會(huì)兒。請(qǐng)耐心等待。

下完了。
中間也有一些報(bào)錯(cuò),部分圖片沒(méi)有正確下載。
好在,這對(duì)總體結(jié)果沒(méi)有太大影響。
為了保險(xiǎn)起見(jiàn),建議你設(shè)置下載數(shù)量時(shí),多設(shè)置一些。
給自己留出安全邊際嘛。
咱們打開(kāi)下載后的目錄 ~/Downloads/downloads/郝蕾 看看:

這回,你能分清楚她倆不?
作業(yè)
給你留個(gè)作業(yè)。
你已經(jīng)學(xué)會(huì)如何一行命令,下載譚卓和郝蕾的照片。
能否活學(xué)活用咱們之前介紹的卷積神經(jīng)網(wǎng)絡(luò)知識(shí),用 TuriCreate (或者 Tensorflow) ,建立模型識(shí)別兩個(gè)人的照片?
完成作業(yè)后,歡迎把你的測(cè)試準(zhǔn)確率結(jié)果告訴我。
當(dāng)然,如果你能舉一反三,利用咱們今天介紹的腳本,下載其他圖像集合,并且進(jìn)行深度學(xué)習(xí)訓(xùn)練,就更好了。
也歡迎把結(jié)果反饋給我哦。
喜歡請(qǐng)點(diǎn)贊。還可以微信關(guān)注和置頂我的公眾號(hào)“玉樹(shù)芝蘭”(nkwangshuyi)。
如果你對(duì)數(shù)據(jù)科學(xué)感興趣,不妨閱讀我的系列教程索引貼《如何高效入門(mén)數(shù)據(jù)科學(xué)?》,里面還有更多的有趣問(wèn)題及解法。