Cute is better than ugly.

かわいいものを追求しているエンジニアのブログです

まりんか(声優:高野麻里佳)がかわいすぎるので動画からまりんかがいる所だけを切り抜きたい ~画像収集編~

前の投稿よりだいぶ時間が空いてしまいました。

まりんか(声優:高野麻里佳)がかわいすぎるので動画からまりんかがいる所だけを切り抜きたい ~導入編~ - Cute is better than ugly.


 本来であれば、正月休み中に実装を終えるつもりでしたがサボってました

(ペルソナ5が一周するのに100時間ぐらいかかったし、アニメ見たりとか色々と)

 

今回は、まりんか判定器を作るために画像収集用のクローラーを作成します。


今回の記事はcrawler.pyが該当します。
github.com



クローラーを一から自分で作成するのも勉強にはなりますができるだけ手間をかけたくない。

そもそも画像収集が目的ではないのでサラッと終わらせましょう。

そのためにicrawlerを使用します。
icrawler.readthedocs.io

とりあえずインストール

pip install icrawler


手っ取り早く大量の画像を取得したいので
Google・Bing・Baiduから画像を収集します。
そのために以下をimportします。

from icrawler.builtin import BaiduImageCrawler, BingImageCrawler, GoogleImageCrawler

※指定のWebSiteで検索するならGreedyImageCrawler、画像URLが既にわかっているならUrlListCrawlerを使用します。
今回は、とにかく画像を集めてそのあと画像の精査を行うためGoogle・Bing・Baiduからひたすらに画像を集めます。


後は、importしたAPIを叩けば簡単に画像が収集できます。
私が使用しているサンプルソースを記載致します。

def crawel_auto(search_word, get_num, dir_name):
 '''
   search_word: 検索に使用する単語 
   get_num: 取得する画像数
   dir_name: 画像を保存するディレクトリ名
   '''

    print("Googleのクローリングを開始しました。")
    # Google
    googleCrawler = GoogleImageCrawler(storage={"root_dir": f'{dir_name}/google'})
    googleCrawler.crawl(keyword=search_word, max_num=get_num)

    print("Baiduのクローリングを開始しました。")
    #Baidu
    baiduCrawler = BaiduImageCrawler(storage={"root_dir": f'{dir_name}/baidu'})
    baiduCrawler.crawl(keyword=search_word, max_num=get_num)

    print("Bingのクローリングを開始しました。")
    Bing
    bingCrawler = BingImageCrawler(storage={"root_dir": f'{dir_name}/bing'})
    bingCrawler.crawl(keyword=search_word, max_num=get_num)

(例:) crawel_auto("高野麻里佳", 3000, "marinka")
実行すると現在のディレクトリにmarinkaフォルダができ、各検索サイト(Goolgle・Baidu・Bing)毎に画像が収集されます。

後は収集したい単語とフォルダ名を変えてひたすらに画像収集をすれば素材はあつまります。
クローリング中にフォルダを見ると次々と増えていく高野麻里佳さんの画像に歓喜できること間違いなしです。

次回は、画像からまりんかの顔だけを切り取るツールを作成します。