ラベル ディープラーニング の投稿を表示しています。 すべての投稿を表示
ラベル ディープラーニング の投稿を表示しています。 すべての投稿を表示

2018年10月19日金曜日

fast.aiのJupyter NotebookがGoogle Colabで動作しなくなった【対処法】

【現状の結論】fast.aiをインストール箇所を以下に変更

!pip3 install fastai==0.7.0 torchtext==0.2.3 pillow==4.1.1

諸事情あって中断していたディープラーニングの勉強を再開しようと、fast.aiのLesson1を復習しようと試みた。で、講義で使用するJupyter NotebookをGoogle Colab上で実行してみると、見たことがないエラー。

ImportError: cannot import name 'as_tensor'

どうやらfast.aiのライブラリのバージョンが1.0になったことの影響のようだ。公式フォーラムを見ると、fast.aiをpipでインストールするところでバージョンを指定してやればよいとのことで、

fastai==0.7.0

として再度実行。が、今度は

AttributeError: module ‘torch’ has no attribute ‘float32’

とな。再度公式フォーラムを見ると同様の現象が発生している模様。数日間塩漬けにして確認してみると対応方法が掲載されていた。

!pip3 install fastai==0.7.0 torchtext==0.2.3

torchtextのバージョンも指定してやる必要があるようだ。

ちなみに、私が以前使っていた時はOut of memoryが頻発して受講には使いにくかったのだが、現状で4回ほど3行コードを実行したが、一度もメモリ不足には陥っていない(GPU指定)。

<<以下追記>>
2018/10/22
Lesson1についてセルを全て実行すると、25*50の格子状に猫の写真を表示するところで、

AttributeError: module ‘PIL.Image’ has no attribute ‘register_extensions

またかよ。。。 ということで、

!pip3 install pillow==4.1.1

※参考
https://forums.fast.ai/t/google-colab-attributeerror-module-torch-has-no-attribute-float32/25327
https://forums.fast.ai/t/fastai-v0-7-install-issues-thread/24652
https://forums.fast.ai/t/attributeerror-module-pil-image-has-no-attribute-register-extensions/10689

2018年10月11日木曜日

fast.aiのDeep Learning 2018に英日同時表示の字幕を付けてみた

※2018/10/22 追記
現在Youtubeで講義の動画を見ると、

  • Lesson1は日本語の字幕があるので、そちらのほうが良い
  • Lesson2以降は外国語の字幕がついているので、それを自動翻訳すれば同等以上(現状はロシア語=>日本語がベター)

のようである。ここで作成した翻訳より上記のほうを利用したほうが良さげである。悪しからず。

fast.aiのDeep Learingは講義を見た方々の評判がすこぶる良いのだが、この字幕を作成した5月頃にはまだ日本語の情報が少なく、活用している人は比較的少数だったのではないだろうか?現状は日本語の情報も少し増えてきていたり、講義ノートをmediumなどに公開している人も増え、以前よりはハードルが下がっているようだが、それでも英語が苦手な人には手を出しにくいだろう。

評判が良いにも関わらず情報が少ないのはGPU環境を用意しなければならないことも一因であろうが、日本語字幕がないことも大きいと思う。以前私も受講したCourseraのMachine Learningの日本語情報が豊富にある理由が日本語字幕の存在にあることは容易に想像がつく。かくいう私もCourseraのMashine Learningは字幕に頼って受講していた。まあ、実際に抜けている字幕を作成してみたところ、字幕がないパートもそこそこ理解できていたのではあるが。。。

しかしながらfast.aiは文字通りFastで実装を学習するならば最良だろうと思い字幕を作成することを考えたが、Courseraの翻訳にかかった時間を考えるととてもやってられない。そこでYouTubeが出力する音声認識された英文をGoogle翻訳で日本語に訳し、それを同時表示させてみてはどうだろう?と考えた。

日英同時字幕

画像はVLC Media Player(Windows)のもの。翻訳の質はご想像の通り完全には程遠く、肝心なところがサッパリだったりもする。でも及第点のところもあり、英語がサッパリな人には「ないよりマシ」ではあろうかと。かくいう私はLesson1はコードの実行も含め受講済み、Lesson4までを「流し見」したが、やはりこの字幕がないよりはあったほうが視聴しやすい。心理的負担が軽減されているのかな?
字幕が邪魔になるケースが少なからずあるので、字幕が扱いやすい(表示非表示が簡単に切り替えられるなど)メディアプレイヤーがあれば、それで視聴することをオススメ

というわけで、英語のみのコンテンツということで躊躇している方、一度お試しあれ。

fast.ai Deep Learining 2018 字幕ファイル
https://www.dropbox.com/s/yhnwcvxnyrs54uf/fastai_DeepLearning_Part1_vtt.7z?dl=0

2018年4月30日月曜日

AzureのCustom Vision Serviceを試したら想像以上だった

2月にJapan IT Week 関西へ赴き、主にAI関連のセミナーを受講してきたのだが、Microsoftの「AIの民主化」において、AzureのCustom Vision Serviceのデモンストレーションがそこそこの衝撃だった。セミナーではWebから適当に拾ってきたアリの画像と、とある特徴のあるアリ、それぞれ50、30枚の画像を用意し、ブラウザで登録して簡単な設定をした上で訓練開始。あっという間に必要十分と思える精度で特徴のあるアリを判別してみせた。設定は対象の写真の特徴をチェックボックスで選択するだけ。
そこそこの精度とはいえ、汎用の簡単な設定と100枚に満たない画僧だけで判別できてしまうとは。。。少なくとも百枚単位の画像データを用意し、設定値を試行錯誤するものだと勝手に思い込んでいた私には驚くべき結果だった。なので、さっそく帰るなり、手元の画像を使って試してみることに。
試してみたのは、私の住む地域で古くから伝わるジャガイモの種の識別。もともとディープラーニングの勉強の題材に使おうと種の写真をストックしておいたものがあったので、それとWeb上にあるジャガイモの画像を拝借して使用。Custom Vision Serviceの使い方などは他に譲り、試用した様子をば。


これが訓練イメージを登録したところ。左上の「honjaga」が地域の種、「potate」がWebから拝借した画像で、それぞれ58、25枚である。設定は何を選択していいのかわからなかったので汎用的に使えそうなデフォルト値(Generalだったか?)を選ぶ。じゃがいもなんて見た目にはこれといった特徴がないので、どの程度の結果が出るのか半信半疑で実行する。


適合率、再現率とも高い値。
早速、学習したモデルを使って判定を実施。まずは地元のじゃがいも。


どれも「potate」が0%。明確に判定できている。
続いて拝借したさまざまなじゃがいもの判定。


「potate」である確率が低いものがあるものの、「honjaga」の確率は全て0%。これも明確に判定できている、と言っていいだろう。
おまけ。撮影ミスで、被写体を置く手を撮影してしまったもの。指の間から辛うじてジャガイモが見えているところ。


なんと、これも「potate」の確率は0%。まあ、じゃがいも以外の特徴(背景色とか)から判別してるのだろうと思うが。。。
今回のお試しでは、地元のじゃがいもの画像が全体的に暗く土が残っているのに対し、拝借した画像の多くはきれいに洗浄されたじゃがいもで明るい画像が多かった。アルゴリズムが画像のどの特徴を捉えて判定しているかはブラックボックスだし、この結果を持って種の判定が容易に可能になったとは判断できない。しかし、当初想像していたよりもはるかに低コストで判定は可能であろう、という手ごたえが掴めたことは大きなモチベーションとなった。
ディープラーニングが「知らない人だけが損をする」時代になるのも目の前である。

2018年4月25日水曜日

「きゅうりの仕分け」記事への違和感

元組み込みエンジニアの農家が挑む「きゅうり選別AI」 試作機3台、2年間の軌跡
http://www.itmedia.co.jp/enterprise/articles/1803/12/news035.html

2年ほど前に話題となった「きゅうりの仕分け」。一日4千本のきゅうりを仕分ける作業の省力化に、と取り組まれたもので、これを機にディープラーニングに注目した地方の人もいるのではないだろうか。AIがビッグビジネスだけでなく、私たちの日常生活に入り込んくるものであることを知るきっかけともなる、とても興味深い取り組みだ。今回、ITMediaにその軌跡を辿る記事が紹介されたので読んでみた。

個人的に印象的だったのは、コンベヤによる自動仕分けによって収穫物を傷つける、というところだ。AIとは直接関連しないところだが、AIがどんなに素晴らしい判定をしたとしても、人力に代わる部分の省力化が難しいということだ。実は、自分の地域でAIを活用するアイデアや、地元の業者さんに使ってもらえそうな企画もいくつかあるのだが、実現が難しいのはハードウェアの作り込みだ。過酷な自然環境に耐えるようなハードが趣味の電子工作と日曜大工レベルの人間に簡単に作れるようになるとは到底思えない。そういったノウハウを持った業者さんに発注すれば、大きなコストがかかることは想像に難くない。紹介記事はそのことを具体的に示唆するものであり、大いに参考になった。

で、肝心の「違和感」である。記事の中では精度について述べられているのだが、印象として「精度が良くない」という内容になっていると受け取った。で、実際の数字云々はともかくとして、何に違和感があるのか?それは精度について、人間が仕分けた場合との比較が示されていないことだ。人間がどの程度の精度で仕分けができているのかがわからないと、AIの仕分け精度の良し悪しは判定できないはずだ。理想的な判定は、まずパーフェクトに仕分けられた画像が存在し、それを機械学習にかけて判定を行うことだ。そして、それが人間が仕分けた場合の精度とどちらが高いのか、これが精度の良し悪しの判定となるはずだ。しかし、記事の中では、人間の仕分け精度については全く触れられていない。そこで、「中の人」のブログがあったので、これに関する記事を探してみる。すると、「今回の場合は、各分類クラス間が離れていないため、人間がやっても“2LとL”や“LとBL”の判別は難しい(けっこう適当)だったりします。」という記述を発見。うーん、これはやはり仕分けの「正解」に問題があるのではなかろうか?

もし厳格なルールがなく、人間が一度仕分けしたものを「正解」としているのであれば、それはその「正解」の精度を疑うべきである。どんなに優れた熟練者であろうとも人間であればバイアスから逃れることは困難だし、間違いも起こす。しかも、「けっこう適当」と言っているのであればなおさらだ。やっている本人は百も承知でやっていることと思うが、記者はきっとこういったことが分からないで書いているのだろう。前回書いた記事は、実は今回の記事の伏線だったりするのだが、AIは人間のバイアスをそのまま取り込むのである。これは非常に難しい課題なのだろう。

では、このようなケースではどうやって訓練画像をカテゴライズすべきなのだろうか?そういった研究もされているのだろうか?人間が経験と勘で仕分けたものを正解とするより、AIに学習させたものを正解にするほうが最終的な精度は高くなるのではないか?などと思ったりもするのだが、実際はどなのか。そんなこともディープラーニングを勉強する中で実験できれたら、などと思うのである、今だけは。

最近の投稿

セミリタイヤ

九州へ一人旅をしてきた。 過去にも自分で節目を感じるようなときに一人で遠出し、自分自身を振り返る機会を作ったことがある。今回もそういった意味もあり、過去に行きながらも時間が足りなかった熊本(阿蘇)と長崎へ。 阿蘇の風景 カルデラそのものの阿蘇の景観は他では見るこ...

人気の投稿