2020年1月22日水曜日

Jupyter Notebookのホームディレクトリーの変更

2018年12月13日の投稿でJupyter Notebookの設定について書きました。
私はanaconda navigatorを、UbuntuとWindowsとで使っているのでこの方法で設定していますが、Windowsの場合にいちいちanaconda navigatorを開かなくても、Jupyter Notebookを指定のホームディレクトリーから開くことが出来ますのでメモしておきます。

【手順】
1.スタートメニューからJupyter Notebookを選び右クリック
2.その他の中のファイルの場所を開くを選択する。


3.目的とするJupyter Notebookを選び右クリック
4.プロパティを選択する


5.リンク先の"%USERPROFILE%/"の部分を目的とするディレクトリーに書き換えると出来上がり。
 私の場合は、外付けHDDのF:ドライブなので"F:/"と書き換えました。
 これでスタートメニューのJupyter Notebookを開くと、F:ドライブをホームディレクトリーとするブラウザが起動します。




2020年1月8日水曜日

画像データセットの収集

独自の画像でDeep learningの画像分類などを行おうとするとき、労力のかかる作業の一つは画像データセットの収集です。
fast.aiのlesson1に方法がありましたので記載しておきます。


1.google Imageを使う方法

fast.aiのlesson1の方法です。 google Imageを開き、欲しい画像(この例ではスペースシャトル)を検索します。画像を下まで表示し、場合によっては「結果をもっと表示」ボタンを押して、全ての画像を表示します。
command+option+Jでjavascriptコンソールを開き、次のコマンドを入力して(貼り付けて)、Enterキーを押し、画像のURLリストをダウンロードします。


urls = Array.from(document.querySelectorAll('.rg_di .rg_meta')).map(el=>JSON.parse(el.textContent).ou); window.open('data:text/csv;charset=utf-8,' + escape(urls.join('\n')));



この状態でダウンロードされたファイル名は拡張子なしの「ダウンロード」。このファイル名を例えば「urls_space_shuttle.txt」に変更しておきます。
モジュールをインポートします。ここでは、fast.aiがインストールされていることを前提としています。まだの方は、fastaiのページWelcome to fastaiを参照してください。


from fastai.vision import *



画像の保存フォルダーと先程のurlsリストのurls_space shuttle.txtをそれぞれ、folder,fileに設定します。



folder = 'space_shuttle'
file = 'urls_space shuttle.txt'


クラス名を設定します。


classes = ['space shuttle']

画像を保存するフォルダーを作成します。


path = Path('data')
dest = path/folder
dest.mkdir(parents=True, exist_ok=True)

 ここでは、プログラムのあるフォルダーの下に「data」フォルダーを作成します。
 またその下に「space_shuttle」フォルダーが出来ているはずです。

urlsリストのurls_space shuttle.txtをこのdataフォルダーに移します。以上で画像をダウンロードする準備は終了です。

それではURLから画像をダウンロードします。fast.aiには、それを可能にする機能があります。
download_imagesです。urls_space shuttle.txtには、画像のurlsが691あります。
download_imagesには取り込む画像の数を指定するmax_picsがありますが、とりあえず初期値のまま使用します。ダウンロードできたのは683枚です。何らかの理由でダウンロード出来ないものもあります。


download_images(path/file, dest, max_pics=3000)

【注意】
以前はこれで問題なく画像がダウンロード出来たのですが、今実行してみると「SystemExit: 1」が出て、プログラムが中断してしまいます。原因は分かりません。
しかし、とりあえず画像はダウンロード出来ているようです。
 
ダウンロード出来た画像ファイル(恐らく画像ファイル?)でも、開かない画像もありますが、そのようなファイルも削除できます。


for c in classes:
    print(c)
    verify_images(path/c, delete=True, max_size=500)

画像ファイルの数が677枚になりました。


以上です。

2.yahooの画像検索を使う方法

①yahooの画像検索画面で、google Imageと同じように全ての画像を表示します。

②画面上で右クリックし、「名前を付けて保存」で任意の場所に保存すると「「スペースシャトル」の検索結果 - Yahoo!検索(画像)_files」というフォルダーができます。

③フォルダー内のyjimage名のファイルは全てスペースシャトルの画像ファイルなので、拡張子「.jpg」を追加すると画像ファイルとして開くことが出来る。
  画像ファイルの枚数は572枚でした。

 画面をhtmlファイルとして保存しているだけなので、当たり前と言えば当たり前。でもこれもアリかと・・・別にyahoo云々は関係ないですネ

★最後の作業

ただ1の方法にしろ、2の方法にしろ、スペースシャトルとは全く関係のない画像が含まれている可能性があります。しかしそのような画像を取り除くには、手作業に頼らざるを得ないようです。
これこそAIで出来れば楽チンですよね。・・・
うーむ話があべこべか・・・