はじめに
Microsoft社から無料で公開されている機械学習ツール「lobe」を使用して犬と猿を識別してみます。
- 必要なもの
- Anaconda環境の作成
- 犬、猿データ収集
- lobeで学習(その2)
- 学習結果をテスト(その2)
1.必要なもの
実行環境は以下の通りです。
PC:Windows10
使用ツール:Anaconda、lobs、Visual Studio Code、Flickr
2.Anaconda環境の作成
Anaconda Promptを開いて新しい環境「lobe_env1」を作成します。lobeがEXPORTするモデルのtensorflowのバージョンが1.15なのでpythonはバージョンを3.7にします。
1 |
conda create -n lobe_env1 jupyter python=3.7 |
3.犬猿データ収集
データの収集はFlickrから取得します。Flickrとは個人で撮影した写真をアップロードし、保管・管理・共有することができるサイトです。無料で画像の利用ができます。
右上の[Sign Up]をクリックします。ユーザー登録を行います。パスワードはスペースなしで12文字以上必要です。
[Sign up]をクリックするとメールが送られてくるので、メールを開いて承認を行います。完了すると[Email Veified!]が表示されます。
画像はAPIを使用して取得します。以下のURLへ移動します。
https://www.flickr.com/services/api/
APIを作成するために左上の[Create an App]をクリックします。
次にAPI Keyを得るために[Request an API Key]をクリックします。
使用目的が商用かどうかで選択できます。
個人利用なので[APPLY FOR A NON-COMMERCIAL KEY]を選択します。
次にAPIの名前と使用理由を記入する欄になります。何を記入していても特に問題ないです。利用規約に同意するためチェックボックスにチェックをいれて[SUBMIT]を実行します。実行するとKeyとSecret情報が表示されるのでその情報をメモしておきます。
Flickrから画像を取得するためのkitが https://www.flickr.com/services/api/にあるのでそれを使用します。[Beej’s Python Flickr API]をクリックします。
クリックするとPython Flickr APIに移動します。。
pipでインストールできるようなので、Anaconda Promptからインストールします。
先ほど作成したAnaconda環境lobe_env1に移動し、インストールを実行します。
1 |
conda activate lobe_env1 |
1 |
pip install flickrapi |
任意のフォルダを作成し、画像保存用に saruとinuというフォルダを作成します。(フォルダ名は任意です)
ここにFlickrから画像を取得するためのpythonコードを作成します。
エディタは何でもいいですが、今回はVSC(Visual Studio Code)を使用します。
VSCを起動し、今作成したフォルダを開きます。([ファイル]⇒[新しいウィンドウ]を実行しても得られます)
[ファイル]⇒[フォルダを開く…]を実行し、作成したフォルダを指定します。
[新しいファイル]を選択してファイルを開きます。FlickrAPIを使用したpythonコード例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
from flickrapi import FlickrAPI from urllib.request import urlretrieve from pprint import pprint import os, time, sys # APIキーの情報 key = "ここにFlickr API作成時に取得したKeyを記述します" secret = "ここにFlickr作成時に取得したsecreatを記述します" wait_time = 1 #保存フォルダの指定 #第1引数がmonkeyならsaruフォルダにdogならinuフォルダに保存。 #それ以外はtestフォルダに保存 animalname = sys.argv[1] if animalname =='monkey': savedir = "./saru" elif animalname =="dog": savedir = "./inu" else: savedir = "./test" #FlickrAPIの起動 flickr = FlickrAPI(key, secret, format='parsed-json') result = flickr.photos.search( text = animalname, #検索キーワード per_page = 50, #検索するファイル数 media = 'photos', #検索するデータの種類 sort = 'relevance', #取得するデータの並び順:関連度の高い順 safe_search = 1, #セーフモード=ON extras = 'url_q, licence' #取得する情報。url_qとlicence情報 ) photos = result['photos'] for i, photo in enumerate(photos['photo']): url_q = photo['url_q'] filepath = savedir + '/' + photo['id'] + '.jpg' if os.path.exists(filepath): continue #urlretrieve(目的のURL, 保存先のファイル名) urlretrieve(url_q,filepath) time.sleep(wait_time) |
ファイル名はdl_from_flickr.pyとしました。右クリックから[ターミナルでPythonファイルを実行]を選択します。
引数を指定していなので、Errorとなります。
再度ターミナルで上ボタンを押して引数にdogを指定して実行します。
1 |
& D:/anaconda3/envs/lobe_env1/python.exe c:/lobe_env1/dl_from_flickr.py dog |
Anacondaのlobe_env1環境フォルダにあるpython.exeを使用します。dl_from_flickr.pyは任意のフォルダに作成しています。dogが検索キーワードとして検索され、50個の画像がinuフォルダに保存されます。
同様に引数をmonkeyにすることでsaruフォルダに50枚画像が保存されます。
test用の画像を保存する用にtestフォルダも追加で作成します。
lobeを使用した機械学習は次回に。
コメント