画像を使った深層学習で面倒な画像集めを行うパッケージの紹介。
検索エンジンから画像を収集したり、画像投稿SNSや、webページからの画像をまとめて自動でDLできる
googleの画像検索エンジンの仕様変更に伴ってgoogle用の関数はまだ使えない様子
当記事投稿(2020-10-10)の4日前にもgoogleクローラーの修正が行われていたので、いずれ改善するのではないでしょうか。
検索エンジンからのダウンロード
bing,baiduからのダウンロード
from icrawler.builtin import BaiduImageCrawler, BingImageCrawler, GoogleImageCrawler
bing_crawler = BingImageCrawler(downloader_threads=4,storage={'root_dir': 'C:\\Users\\Desktop\\0\\your_dir'})
bing_crawler.crawl(keyword='cat', filters=None, offset=0, max_num=10)
画像の保存先をstorageに指定する
rooot_dirの後にpathでなく、文字を指定してやれば作業ディレクトリ中に指定した文字のファイルを自動作成してそこに収集される
keyで検索ワードを指定する
baidu_crawler = BaiduImageCrawler(storage={'root_dir': 'your_image_dir'})
baidu_crawler.crawl(keyword='cat', offset=0, max_num=100,min_size=(200,200), max_size=None)
max_numを1000に指定したところ800くらいまではDLされる
同じディレクトリを指定した場合の挙動は、ファイルの名前と拡張子が被っていた場合skipする
webサイトからのダウンロード
webサイト上の画像を片っ端から探しながらダウンロードしてくれる
ダウンロード後の振り分けが必要
from icrawler.builtin import GreedyImageCrawler
greedy_crawler = GreedyImageCrawler(storage={'root_dir': 'di'})
greedy_crawler.crawl(domains='https://ダウンロードしたい画像のあるURL.html', max_num=10,min_size=None, max_size=None)
SNS(Flickr)からのダウンロード
Flickrの検索結果をもとに画像をダウンロードする
メアドと名前程度の簡単なユーザー登録が必要(google mailではconfirmできない?)
sign in したあとAPIkeyをリクエストすることで使える
非営利であること、利用目的、などを記入してAPIkeyを発行後コードを動かす
from datetime import date
from icrawler.builtin import FlickrImageCrawler
flickr_crawler = FlickrImageCrawler('発行したkeyをここに',
storage={'root_dir': 'image_dir'})
flickr_crawler.crawl(max_num=100, tags='cat,dog',
min_upload_date=date(2019, 5, 1))
動作確認できていないがgoogleの場合
少し前までは100件しかダウンロードできない、という問題はあれどダウンロード自体はできてたんですけど
現在はダウンロードすら確認できなくなっていました
from icrawler.builtin import BaiduImageCrawler, BingImageCrawler, GoogleImageCrawler
google_crawler = GoogleImageCrawler(
feeder_threads=1,
parser_threads=1,
downloader_threads=4,
storage={'root_dir': 'er'})
google_crawler.crawl(keyword='cat', offset=0, max_num=10,
min_size=(200,200), max_size=None, file_idx_offset=0)
以上
参考サイト
Welcome to icrawler