如何用 Python 指令碼批量下載 Google 影象?

王樹義發表於2018-07-13

如何用 Python 指令碼批量下載 Google 影象?

分不清譚卓和郝蕾?各來200張照片,讓深度學習幫我們識別吧。

問題

如何用Python和深度神經網路識別影象?》一文中,我給你展示瞭如何用深度學習,教電腦區分機器人瓦力和哆啦a夢。

很快就有使用者在後臺留言,問:

老師,我想自己訓練一個圖片分類器,到哪裡去批量下載帶標註的訓練影象呢?

說說我寫教程的時候,是如何找圖片的吧。

最大的圖片庫,當然就是 Google 了。

在 Google 影象欄目下,鍵入"Walle"。

如何用 Python 指令碼批量下載 Google 影象?

怎麼樣?搜尋結果很符合需求吧。

你不但找到了一批高質量圖片,而且它們的標註, Google 都幫你打好了。

下面一步,自然就是把這些圖片下載下來了。

我讓學生實際動手做,每個人找兩個與別人不同的影象集合,嘗試根據教程做深度學習分類。

我提供給他們的方案(幾款不同的 Chrome 瀏覽器外掛),效果都不好。

有的才下了幾張,就停工,甚至把瀏覽器整崩潰了。

有的下載圖片,都是重複的。

學生告訴我,經驗證,最簡單有效的方法,是一張張手動點選下載……

這顯然不是正經辦法。

痛點

渴望從 Google 圖片庫高效批量獲得優質帶標註影象,不會是個案。

這個大眾痛點,真的沒有人嘗試解決嗎?

今天,一個偶然的機會,我發現了一個特別棒的 Github 專案,叫做 google-images-download

如何用 Python 指令碼批量下載 Google 影象?

Github repo 連結在這裡

專案釋出至今,只有短短5個月的時間,星標數量居然已經上了2000,看來確實非常受歡迎。

google-images-download 是個 Python 指令碼。

使用它,你可以一條命令,就完成 Google 圖片搜尋和批量下載功能。

而且,這工具還跨平臺執行,Linux, Windows 和 macOS 都支援。

簡直是懶人福音。

安裝

google-images-download 安裝很簡單。

以 macOS 為例,只需要在終端下,執行以下命令:

pip install google_images_download
複製程式碼

安裝就算完成了。

當然,這需要你係統裡已經安裝了 Python 環境。

如果你還沒有安裝,或者對終端操作命令不太熟悉,可以參考我的《如何安裝Python執行環境Anaconda?(視訊教程)》一文,學習如何下載安裝 Anaconda ,和進行終端命令列操作。

嘗試

進入下載目錄:

cd ~/Downloads
複製程式碼

我們嘗試下載一些圖片。

《我不是藥神》裡面有個叫譚卓的女演員,演的不錯。可是我一開始,把她當成郝蕾了。

如何用 Python 指令碼批量下載 Google 影象?

我們們嘗試下載一些譚卓的圖片吧。

終端裡面執行:

googleimagesdownload -k "譚卓" -l 20
複製程式碼

解釋一下,這裡的 -k 指的是 "keyword",也就是“關鍵詞”,後面用雙引號括起來要查詢的關鍵詞。

你可以看出,使用中文關鍵詞,也沒問題。

後面的 -l ,指的是"limit",也就是圖片數量限定,你需要指定自己要下載多少張影象。

本例中,我們要20張。

下面是執行過程:

如何用 Python 指令碼批量下載 Google 影象?

執行完畢。

可以看到,下載過程中,發生了一個錯誤。

但程式依然鍥而不捨,幫我們把下載流程執行完畢。

我們看看結果。

下載的圖片都存放在 ~/Downloads/downloads/譚卓 下面,google-images-download 非常貼心地,為我們建立子目錄。

我們在 Finder 裡開啟看看:

如何用 Python 指令碼批量下載 Google 影象?

看了半天,有的照片,還是跟郝蕾分不大清楚。

為了徹底分清兩位女演員,我們再下載 200 張郝蕾的照片吧。

仿照剛才的命令,我們執行:

googleimagesdownload -k "郝蕾" -l 200
複製程式碼

然後……就報錯了:

如何用 Python 指令碼批量下載 Google 影象?

解決

遇到問題,不要慌。

你得認真看看錯誤提示。

注意其中出現了一個關鍵詞:chromedriver

這是個什麼東西呢?

我們回到 google-images-downloadgithub 頁面,以 chromedriver 為關鍵詞進行檢索。

你會立即找到如下結果:

如何用 Python 指令碼批量下載 Google 影象?

原來如果你要的圖片數量超過100張,那麼程式就必須呼叫 Selenium 和 chromedriver 才行。

Selenium 在你安裝 google-images-download 的時候,已經自動安裝好了。

你只需要下載 chromedriver ,並且指定路徑。

下載連結在這裡

如何用 Python 指令碼批量下載 Google 影象?

請根據你的作業系統型別,選擇合適的版本:

如何用 Python 指令碼批量下載 Google 影象?

我選的是 macOS 版本。

下載後,壓縮包裡面只有一個檔案,把它解壓,放在 ~/Downloads 目錄下。

如何用 Python 指令碼批量下載 Google 影象?

然後,執行:

googleimagesdownload -k "郝蕾" -l 200 --chromedriver="./chromedriver"
複製程式碼

這裡 --chromedriver 引數,用來告訴 google-images-download ,解壓後 chromedriver 所在路徑。

這回機器勤勤懇懇,幫我們下載郝蕾的照片了。

如何用 Python 指令碼批量下載 Google 影象?

200張圖片,需要下載一會兒。請耐心等待。

如何用 Python 指令碼批量下載 Google 影象?

下完了。

中間也有一些報錯,部分圖片沒有正確下載。

好在,這對總體結果沒有太大影響。

為了保險起見,建議你設定下載數量時,多設定一些。

給自己留出安全邊際嘛。

我們們開啟下載後的目錄 ~/Downloads/downloads/郝蕾 看看:

如何用 Python 指令碼批量下載 Google 影象?

這回,你能分清楚她倆不?

作業

給你留個作業。

你已經學會如何一行命令,下載譚卓和郝蕾的照片。

能否活學活用我們們之前介紹的卷積神經網路知識,用 TuriCreate (或者 Tensorflow) ,建立模型識別兩個人的照片?

完成作業後,歡迎把你的測試準確率結果告訴我。

當然,如果你能舉一反三,利用我們們今天介紹的指令碼,下載其他影象集合,並且進行深度學習訓練,就更好了。

也歡迎把結果反饋給我哦。

喜歡請點贊。還可以微信關注和置頂我的公眾號“玉樹芝蘭”(nkwangshuyi)

如果你對資料科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門資料科學?》,裡面還有更多的有趣問題及解法。

相關文章