と。

Github: https://github.com/8-u8

複数のキーワードでGoogle画像検索の結果を集めたい

技術書典に行ってきました。

いやー、いつ行っても熱気がすごい。今回も行ってきました。

今回からフロアが複数分かれており、混雑もある程度緩和されていたように思います。*1

友人や見知った人が出版していたり、買い物していたりして、今回で参加が3回目なんですけど楽しかったです。

さて、本来なら戦利品感想文を垂れ流すつもりでしたが、あまりにも多くて読みきれない。

そう言えば最近Pythonの実装で画像を集めるやつを作ることになったのでその備忘録。

解くべき問題

検索ワードリストに当てはまる画像をGoogle画像検索から回収したい。

制約

特になし。集められればまずは良い。

言語

Python。3.7.3での動作確認

ライブラリ

google_images_downloadを使います。名前がそのまんま。

github.com

この実装をみるとkeywordsをカンマで区切れば良さそうですが、記憶にある要件だとcsv形式なので、
素直に読み込んで1ワードずつ集めたほうが、無理な加工を必要としないため、逐次実行する感じでやりました。

雑な実装

とりあえずpandas.DataFrame型での読み込みも前提にした感じでやってます。
エンジニアリングなんもわからんので、とりあえずスクリプトだけで動けばいっか、とか思っている雑実装です。
pandas.read_csv()で読み込んでそのまま突っ込める前提なので、実行文は無理やりpandas.Series型にしちまっていやす……
普通のlist型でも動くあたり、割と柔軟に読み込めるっぽい。

#%%
import pandas as pd

from google_images_download import google_images_download

#%%
images = google_images_download.googleimagesdownload()

#%% ワードリストを挿入して集める

def Image_Download(key_words, limits):
    for words in key_words:
        arguments = {'keywords': words,
                 'limit': limits,
                 'print_urls': True
              }
        images.download(arguments)

#%% 実行
exe_words = pd.Series(['猫 アメリカンショートヘア', '猫 エンジニア'])
Image_Download(key_words=exe_words, limits=1)

感想

きぬいと的画像認識学習の課題が画像を集められないことだったので、それが割と気楽に解決してしまい、
今『機運』が『高まって』いますッ*2

とはいえ、Googleの画像検索結果つかってなんかやるって何ができるんですかね*3
検索上位であることを、その検索ワードの「典型」と仮定して、それをラベルにして分類するとか……?
アカデミックに考えるとまぁまぁグレーよりのブラックですけど、お仕事で使うとしたらありなんだろうか?
たとえば「夏 ファッション」をテーマにした検索ワード群をリスト化して、画像集めて夏っぽいファッションを自動生成するとか……?

「画像」なんだから、何かの「名前」で検索して、何らかの「情報」を得るみたいなのにも使えるわけなんですけど、
使い方は皆さん次第です。被害とか加害とかあってもきぬいとは責任を負いません。活用は計画的、そして倫理的に。

*1:もっと言えば、戦利品の整理や小休止のできる空間が広かったです。次回以降はブーススペースの混雑をどううまくやるかが大きな課題かもしれませんが。

*2:ジョジョ5部のアニメを見て語彙がジョジョっぽくなってしまっている

*3:すっとぼけ