Safebooruからアニメ画像ダウンロード
はじめに
GANでアニメ画像生成したい。そのためには、データとして大量のアニメ画像を集める必要がある。 スクレイピングするのと、動画のSSとる方法があるが、今回は、楽そうな方のスクレイピングで画像集めることにした。
前にアニメデータセット探した中で、sabebooruというサイトを知った。 https://msdd.hatenablog.com/entry/2019/11/21/235937msdd.hatenablog.com
sabebooruは、画像のアーカイブをタグ付きで保存してあるサイトで、検索もできる。
画像が大量に欲しいので、このサイトからダウンロードすることにした。
画像ダウンロード
apiがあったので、それを使った。
api アクセスのurl: https://safebooru.org/index.php?page=dapi&s=post&q=index
limit:どれだけの投稿を検索するか。max100。
pid : ページ数。
tags: 検索するタグ。
などを追加して検索できる。 とりあえず、https://safebooru.org/index.php?page=dapi&s=post&q=indexにアクセスしてみると、xmlが表示されたので、pythonでxmlを扱って、urlから画像ダウンロードするスクリプト作った。
api_strはページ番号pidと検索するtagsを設定した文字列で、これを送りxmlを取得する。
今回は、一人の顔画像が欲しいので、タグはface 1girl solo
のものをダウンロードすることにした。
api_str="https://safebooru.org/index.php?page=dapi&s=post&q=index&pid={pid}&tags={tags}".format(pid=page,tags=request_tags.replace(" ","+")) with urllib.request.urlopen(api_str) as response: content=response.read()
pythonのxmlはElementTreeというもので扱うようだ。xmlをパースした後、それぞれ投稿の画像urlを取得した。一回のリクエストで、100件得られる。
xml=ET.fromstring(content) for post in xml.iter("post"): file_url=post.get("file_url")
これを今回は50回ループさせて、5000枚集めた。サイズは3.3G。集めた画像のサンプルが下の画像。
きちんと、一人のキャラの顔が写っている画像を集めることができた。
今後
このデータを使ってGANでアニメ画像生成していきたい。