Practical Deep Learning for Codersの第2章でAzureに登録せずに画像をダウンロードする方法

Python
元教師
元教師

こんにちは!データサイエンティストの青木和也(https://twitter.com/kaizen_oni)です!

今回の記事では、「Practical Deep Learning for Coders」の第2章で、AzureのBing AIを利用せずともネットから学習用の画像をダウンロードしてくる方法を紹介します!

「えっ、Microsoft Azureに登録しないといけないの、お金を払ってまで勉強したくはないんだけど、、、」という方はぜひ本記事で紹介する方法をお使いください!

Practical Deep Learning for Codersの第2章の内容って?

Practical Deep Learning for Codersとは、その名の通り実践を通してDeep Learningを学ぶことができる米国の学習サイトで、動画教材で学習しながらColabやKaggle上でNotebookを実行し、復習として関連教材を読み進めることでDeep Learningについての知識を身につけることのできる無料の学習教材になっています。

この関連教材も無料で読み進めることができるのですが、その第2章「Production」において、「クマの種類識別モデル」を作成するために、学習用の画像を収集する場面があります。

その場面において、「Microsoft Azureに登録して、Search Keyを入力してね」という項目があるのです。

ですが、Microsoft AzureのAI検索機能を使うためには、無料プランではなく、従量課金を覚悟の上で登録を行う必要があります。

もちろん、○ヶ月無料であったり、最初に200ドル分のクレジットをもらえたりするので、上手いこと利用すれば無料でも演習を行うことができますが、うっかりするといつの間にかMicrosoftにコンサスタントにお金を払っていた、なんて状況になってしまう可能性はあります

(以前僕がAWSのRedshiftを気づけばフルでぶん回していて15万円分の請求が来たからビビっているだけかもしれませんが、、、)

Microsoft Azureに登録する以外の方法で画像を入手する方法

Microsoft Azureに登録する以外の方法で画像を入手するために修正するコードは以下の4つです。

1 . key = os.environ.get(‘AZURE_SEARCH_KEY’, ‘XXX’)とだけ書いてあるコード

key = os.environ.get('AZURE_SEARCH_KEY', 'XXX')

2 . search_images_bingとだけ書いてあるコード

search_images_bing

3 . 実際にイメージを取得している以下のコード

results = search_images_bing(key, 'grizzly bear')
ims = results.attrgot('contentUrl')
len(ims)

4 . それぞれのクマのフォルダを作成し、画像を格納する以下のコード

if not path.exists():
    path.mkdir()
    for o in bear_types:
        dest = (path/o)
        dest.mkdir(exist_ok=True)
        results = search_images_bing(key, f'{o} bear')
        download_images(dest, urls=results.attrgot('contentUrl'))

それぞれのコードを以下のように修正します。

1 . key = os.environ.get(‘AZURE_SEARCH_KEY’, ‘XXX’)のコードはコメントアウトし、duckduck_searchライブラリをインストールします。

# key = os.environ.get('AZURE_SEARCH_KEY', 'XXX')
!pip install duckduckgo_search

2 . search_images_bing はコメントアウトし、その下に「search_images」という新たな関数を以下の通り準備します。

from duckduckgo_search import DDGS

def search_images(term, max_images=200):
    print(f"Searching for '{term}'")
    with DDGS() as ddgs:
        images = list(ddgs.images(term,max_results = max_images))
        urls = []
        for image in images:
            urls.append(image['image'])
        return urls

3. search_images関数の定義に従って、画像を取り込むときのコードを少し修正します。

#results = search_images_bing(key, 'grizzly bear')
#ims = results.attrgot('contentUrl')
results = search_images('grizzly bear')
ims = results
len(ims)

4. search_images関数の定義に従って、くまのフォルダを作る際のコードも少し修正します。

if not path.exists():
    path.mkdir()
    for o in bear_types:
        dest = (path/o)
        dest.mkdir(exist_ok=True)
        # results = search_images_bing(key, f'{o} bear')
        # download_images(dest, urls=results.attrgot('contentUrl'))
        results = search_images(f'{o} bear')
        download_images(dest, urls=results)

上記のコードに修正することによって、search_images_bingではなく、duckduckgo_searchというライブラリを使って画像を収集することができるので、Microsoft Azureに登録をすることなく、第2章の演習を実施できるという寸法です。

まとめ

今回の記事では、Practical Deep Learning for Codersの第2章を、Microsoft Azureに登録することなしに乗り切る方法を紹介しました!

そうでなくともduckduckgo_searchライブラリは画像の訓練データを自動で集める際に有能なので、ぜひ活用してみて下さい!

コメント

タイトルとURLをコピーしました