2019年10月12日 星期六

google 圖片搜尋批次下載

google 圖片搜尋 「dog drinking」 玩機器學習時, 需要有大量的訓練資料。 以圖片辨識來說, google 圖片搜尋是最佳幫手。 但是要手動把搜尋結果一張一張存檔, 很累呀! 這時可以用 github 上 (有五、六千顆星) 的 google-images-download 來批次下載。

本來想要做狗狗分類器。 研究了一下 狗狗品種族譜圖, 覺得太複雜了, 而且 ImageNet 的 1000 個標籤 裡面, 本來就已包含很多種類的狗。 於是決定換一個題目, 改做 「狗狗動作分類器」: 相片當中的狗到底正在 (1) 跳躍 (2) 睡覺 (3) 游泳 (4) 甩水 (5) 伸展 (6) 尿尿 還是 (0) 其他?

先安裝主要套件就好: pip3 install google_images_download 。 以下是幾個使用範例:

  1. googleimagesdownload -k 'sleeping dog' -l 3 搜尋 「sleeping dog」, 取最前面三張圖, 存放在 目前工作目錄 (pwd 所顯示的目錄; 未必是家目錄!) 底下的 'downloads/sleeping dog' 子目錄裡。 若想指定放在家目錄的 downloads 底下, 可以加 -o ~/downloads 選項。 搜尋關鍵詞可以是中文哦!
  2. googleimagesdownload -k 'drinking dog' -s '>400*300' -of 16 -l 20 限定圖片大小至少 400*300, 取第 16 張到第 20 張圖, 如本文插圖所示。 實際測試時, 用程式抓到的跟瀏覽看到的順序略有出入。 圖片大小並非任意數字, 而是只有幾個固定的值可選, 詳見 手冊 當中的 「relative size」。
  3. googleimagesdownload -pk 'jumping,sleeping,swimming,peeing,stretching,water shaking' -k 'dog' -s '>400*300' -l 100 搜尋 (大小至少為400*300的) 「jumping dog」, 取前 100 張, 同樣地對 「sleeping dog」、 ... 「water shaking dog」 也都各取前 100 張。 注意: 逗號前後如果加了空格, 則目錄名稱裡也會出現多餘的空格。 跟 -pk 相反的是 -sk 。 上例若把 -pk 改成 -sk, 則會變成搜尋 (還有取目錄名稱也是) 「dog jumping」、 「dog sleeping」、 ...。
  4. 當然, -k 本身也可以接受逗號分開的關鍵詞。 例如我在執行上一句時, 不知為什麼有兩個目錄是空的, 所以再執行一次: googleimagesdownload -k 'sleeping dog,stretching dog' -s '>400*300' -l 100
  5. 平時在 google 搜尋時用的減號一樣可以用哦, 例如可以用: googleimagesdownload -k 'dog -jumping -sleeping -swimming -peeing -stretching -shaking' -s '>400*300' -l 30 -i other 下載一些 「以上皆非」 的圖片。

如果需要看第 101 筆之後的搜尋結果, 那就要額外下載 ChromeDriver, 因為此時 google images download 需要把搜尋結果頁面 「向下拉」, 需要呼叫 selenium, 而 selenium 則需要呼叫 ChromeDriver。 注意! 平常上網使用的 chromium 瀏覽器跟 selenium 需要用到的 chrome drive, 兩者的版本必須匹配。 先把 chromium 瀏覽器升級到較新的版本: apt update ; apt install chromium-browser 再從 chromium 瀏覽器的主選單 => 「關於 chromium」 查出版本號碼, 最後到 ChromeDriver 官網 下載對應版本。 解壓縮之後, 就只有一個執行檔。 放哪裡都可以, 例如我放在 /usr/bin/chromedriver 那麼下 googleimagesdownload 指令時, 加上 --chromedriver=/usr/bin/chromedriver 選項, -l 的參數就可以大於 100。

有一篇 簡中教學文 也請參考。

抓回來的圖片當然還是需要人工過濾/搬移, 然後才 餵給 Keras 版的 MobileNet 做遷移學習。 但總之採用 google images download 的整個流程比當初 按照類別下載 ImageNet 訓練圖片 要簡單很多啊!

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。