数値解析系

2018年8月16日 (木)

コンビニが予測よりも2個多くおにぎりを仕入れる理由とは?

よくAIが人間の仕事を奪うといわれてますが、私は比較的楽観的です。そんなことはないだろうと。

その証左となる話がこちらです。

コンビニがおにぎりを2つ多く仕入れる理由――顧客に“響く”データ活用のコツ - ITmedia エンタープライズ

最近のビッグデータ解析により、かなりコンビニの売り上げ予測って向上したらしいです(まだまだともいわれてますけど)。

ただ、予測通りの数値で仕入れると、上記リンク先にもある通り機会損失を招くということもあるようです。

全てにおいてリンク先のような法則が成り立つわけではないですが、なればこそデータの裏付けと人の経験とを組み合わせる必要があるようです。

もし、AIによって仕事が奪われるとしたら、それは機械学習や分析技術の向上により、それをうのみにして思考停止してしまう人じゃないかと思います。

最近は”AIの民主化”が進み、どこでも誰でもAI技術を使える時代となりつつあります。ということは、そのデータ分析の結論をどう反映するかが、このAI時代に生き残れる否決になるような気がします。

どうでしょうねぇ、そういう人、身の回りにいるでしょうか?ですが、どこまでいっても最後は人、特に社内での影響力の大きい経営者、管理職によって決まるような気がします。AIが10個売れると言ったから、10個仕入れてませんか?特に日本ではそういう指向が強く、結果的に機会損失を招いているような気がします。

ビジュアル図解 コンビニのしくみ (DO BOOKS)

2018年7月27日 (金)

AIで雑草だけを見つけて除去する技術が開発中

田んぼでの雑草除去は、大変な作業です。やったことはないですけど、稲とそうでないものを見分けながら取るわけですからね。しかも、暑い最中に。大変でなかろうはずがありません。

私なんぞは、自宅の狭い敷地の草むしりごときで音を上げてます。

そういう作業を自動化する技術が出てきました。

人工知能で雑草だけをピンポイントで除草するロボット登場

カリフォルニアのスタートアップ企業が進めている、スマート農業機器の研究開発の一環として公表された技術です。ごらんのとおり、雑草とそうでないものを見分けて、最終的には雑草のみを除去しようという試みです。

除草剤をまけば済む話にも見えますが、最近農薬の使い過ぎの結果か、除草剤の効かない”スーパー雑草”なるものがでてきたとか。これに対抗するため、こういう技術がひつようなんだとか。

たしかに、農薬ばかりに頼るというのもよくないですよね。AIを使って、農薬が必要な作物だけをピンポイントで見つけ出すという仕組みも考えられているようですし。

先のトマトを収穫するロボットなんてものも出ましたが、農薬ではなく、機械が持った”知恵”で良質な農作物が収穫される時代がもうすぐそこまで来ているのかもしれません。

ラクラク農作業台車 腰掛けラッキー

2018年7月18日 (水)

「ゼロから作るディープラーニング」を解説した動画が公開

私も読みました、「ゼロから作るディープラーニング」。

第3次AIブームに乗って、この本で勉強しようという方も多いかと思います。

が、やはり難しい本です。これ。文字を追って読むというのが苦痛だという方も多いかと思います。

そこで、これを解説した動画がYouTubeにて公開されています。

「ゼロから作るディープラーニング」を動画でまとめている人がいたので紹介します。|Dai|note

全部で11章。リンク先には学ぶ知識の概要と、動画へのリンクが載せられています。ぜひそちらを参照願います。

大体、1つ10分前後程度の動画でまとめられています。

ここでは、一番最初の導入編と

私が最も難しいと感じた誤差逆伝播法の動画を載せておきます。

決してわかりやすいとは言い難いですが、本だけ読むよりは頭に入りやすいと思われます。

もうちょっと早く、これに出会っていればよかったですね。いや、今からでも復習できますが。

この本を買って挫折しちゃったという方は、ぜひ一度ご覧いただくことをお勧めします。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

2018年7月 6日 (金)

最新の物体検出YOLO v3 (Keras2.2.0+TensorFlow 1.8.0)を独自データで学習できるようにしてみた

物体検出コードといえば、Faster-RCNN、SSD、そしてYOLOが有名ですが、そのYOLOの最新版である”YOLO v3”のKeras+TensorFlow版を使って、独自データにて学習できるところまで持っていきましたので、ここに手順を書きます。

まず、YOLO v3の威力をご覧ください。

YOLO: Real-Time Object Detection

最近出たアルゴリズムなので、SSDよりも高速&正確であるというのが謳い文句です。ごらんのとおり、物体検出数も精度のなかなかです。

制度と速度を他の物体検出コードと比較したグラフです。わざとグラフの横軸からはみ出すように作ってますが・・・実際動かしてみると、確かに以前試したTensorFlow+Keras版SSDよりも速く動作します。

基本的には、READMEを読めば分かるように作られている・・・はずですが、クイックスタートでさえちょっとてこずりました。ましてや深層学習して学習モデル適用は、READMEだけではわかりません。

このAI民主化時代(誰でもAIを使える時代)に、これではいただけません。

ということで、以下、Windows版Anaconda 3(我が家はVer.4.4.0)にTensorFlow 1.8.0+Keras 2.2.0をインストールして、クイックスタートから独自データによる学習、および推論コード実行まで実施いたしましたので、紹介します。

準備 & クイックスタート

最初に、準備がてら動かしてみましょう。

※ Windows版Anaconda 3のインストール方法、TensorFlow 1.8.0+Keras 2.2.0のインストールについては省略します。以下のサイトなどを参考に、あらかじめ導入をお願いします。

Windows10にKeras(+TensorFlow)をインストールしてAnaconda+Jupyterで動かしてみる

まず、”YOLO v3”のコードを、以下から入手します。

https://github.com/qqwweee/keras-yolo3

Windowsの場合は「Clone or Download」を押して「Download ZIP」をクリックしてダウンロード。ファイルを解凍します。

学習済みデータを入手します。YOLO: Real-Time Object Detectionのページの中ほど、「Detection Using A Pre-Trained Model」のところに”here (237 MB)”というのがあるので、これをクリックします。

すると、”yolov3.weights”というファイルが得られます。これを、先ほど解凍したフォルダに入れます。

ここでAnaconda 3のプロンプトを開き、TensorFlow実行環境に変えて(activate tensorenv 等)、上の解凍フォルダに入ります。

まず、入手した学習済みデータをKeras用に変換します。以下のコマンドを入力します。

$ python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

これで、Keras用の学習済みデータが「model_data」フォルダに入ります(yolo.h5)。

ここで、とりあえず動かしてみます。

静止画を認識させたい場合は、YOLO v3のフォルダに検出させたい画像ファイルを入れておきます。

$ python yolo.py

と入力。

「Input image filename:」と出てくるので、あらかじめYOLO v3の入ったフォルダに入れた画像ファイルのファイル名をコロンの後ろに入力します。

Yolo300

こんな画像が出れば、成功です。

動画を使いたい場合は、同様にYOLO v3のフォルダに動画を入れて、

$ python yolo_video.py (動画ファイル名)  [出力ファイル名]

と実行します。動かすだけなら、出力ファイル名のところは何も入れなくても動作します。

独自データでの準備

以降は、VOC2007形式でのデータセットを作って、これを学習させるまでの手順を書きます。

※以下、TensorFlow+KerasでSSDを独自データで使えるようにしてみた: EeePCの軌跡の記事と同じです。

まずは、独自データとなる画像を集めます。これは必須。

続いて、「AnnotationTool.exe」のリンクをクリックして、アノテーションツールをダウンロードします。

私がとりあえず作ったWindows上で動かすアノテーションデータ作成ソフトです。

使い方は以下を参照。

-----------------------------------------------------------------------

Annotation00

① まずアノテーションファイル(*.xmlと”trainval.txt”)を保存するフォルダ(作業フォルダ)を作りドラッグ&ドロップ

② アノテーションを作成したい画像ファイルをドラッグ&ドロップ

③ 画像ファイルが出てくるので、物体をマウスで囲みます

④ ”ラベル名”のテキストボックスに物体の名前を書きます(半角英数) 

⑤ ”ラベル作成”をクリックすると登録

同一画像内で認識させたい物体の数だけ③~⑤を繰り返します。

⑥ 一通り終わったら「Annotation追加」をクリック

次の画像ファイルを読み込むため、再び②で別の画像を読み込み、⑥までを繰り返します。

すべての画像ファイルのアノテーション登録が終わったら

⑦ ”終了”をクリック

-----------------------------------------------------------------------

これを実行すると、画像ファイル分の「~.xml」ファイルと、「trainval.txt」ができているはずです。

これを、以下のように「VOCdevkit/VOC2007」に反映。

・ 「Annotations」フォルダには作成されたxmlファイルを全部入れます

・ 「ImageSets/Main」にある「trainval.txt」に、上で作られた「trainval.txt」の中身を追記します。

・ 「JPEGImages」フォルダに、独自データの画像ファイルをすべて入れます

これで、データセットの準備は完了です。

独自データによる学習実行

いよいよ学習ですが、いくつか下準備が必要です。

まず、YOLO v3フォルダの直下に、上で作った「VOCdevkit」フォルダをそのまま置きます。

VOCdevkitの中の「VOC2007/ImageSets/Main」の中にある「trainval.txt」をコピーして、「train.txt」「val.txt」「test.txt」の3つのファイルを作っておきます。

続いて、「model_data」フォルダにある「yolo.h5」をコピーして「yolo_weights.h5」というファイル名に変えます。

また、「model_data」フォルダにある「voc_classes.txt」のラベル名を書き換えます。

この中にはaeroplane、bicycle、bird、boat・・・という20のラベル名が書かれているはずです。これを、上から順に独自データ用のラベル名に書き換えておきます。

voc_annotation.py」の6行目も同様に書き換えます。

ここまで出来たら、以下のコマンドを実行。

$ python voc_annotation.py

すると、YOLO v3フォルダに「2007_val.txt」「2007_train.txt」「2007_test.txt」が生成されます。このうち「2007_train.txt」のみを「train.txt」とファイル名を変更しておきます(後の2つは使いません。消してもOK)。

これで学習実行準備完了。

あとは、

$ python train.py

と実行するだけ。

Yolo301

こんな感じに、学習が実行されます。

---------------------------------------

さて、デフォルトでは50エポックほど実行されますが、学習途上で終わった(loss値がまだ減少しそう)ならば、「logs/000」フォルダ内にある学習済みデータ(~.h5)を「model_data」フォルダに移します。

最後まで実行していたら「trained_weights_stage_1.h5」というファイルがあるはず。途中でも「ep~-loss~-val_loss~.h5」というファイルができているので、これの一番新しいのを用いてもいいです。

学習済みファイルを移したら、「train.py」の中の33行目の「freeze_body=2, weights_path='model_data/yolo_weights.h5')」yolo_weights.h5の部分を書き換えます。

エポック数を増やす場合は、「train.py」の63行目にある「epochs=50,」の数字を変えます。

独自データによる学習済みデータを使った推論

いよいよ独自データの学習モデルで推論を実行します。

コマンドはクイックスタートと同じですが、「yolo.py」を以下のように書き換える必要があります。

22行目:「self.model_path = 'model_data/yolo.h5'」 ⇒ 「yolo.h5」のところを、新しい学習モデル(logs/000/~.h5)名に書き換え。

24行目:「self.classes_path = 'model_data/coco_classes.txt'」「coco_classes.txt」「voc_classes.txt」に変更。

あとは、クイックスタートと同じです。

静止画は

静止画を認識させたい場合は、YOLO v3のフォルダに検出させたい画像ファイルを入れておきます。

$ python yolo.py

とコマンド入力。動画は

動画を使いたい場合は、同様にYOLO v3のフォルダに動画を入れて、

$ python yolo_video.py (動画ファイル名)  [出力ファイル名]

と実行。

所感とまとめ

SSDに対抗意識を燃やして作っているだけあって、SSDよりもちょっと速くて検出数も多いです。

ただ、どっちの精度が高いかはよくわからないので、TensorFlow+KerasでSSDを独自データで使えるようにしてみた: EeePCの軌跡の記事を参考に、SSDと共に検討してみるのがよろしいかと思われますね。

幸い、どちらも同じデータセットが使えます。

それにしても、物体検出コードも随分と身近になりました。

物体検出手法を独自データで試してみたい方は、先のSSDの記事とこのYOLO v3を参考にお試しください。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

2018年7月 4日 (水)

トマトを収穫するロボットが登場!AIはついに農業へと本格参入

東大の松尾豊先生がディープラーニングで可能なこととして掲げていた「トマトを収穫できるロボット」が、いつの間にか実用化してました。

AIで農業の人手不足解消へ トマトを自動で収穫するロボットが活躍 | 未来コトハジメ

トマトというのは、熟したものだけを選別して収穫しなければならないため、これまでは目に頼って人の力で収穫するしかありませんでした。

それを、まさにAIにより選別、収穫を行う仕組みを作ってしまったようです。

とある農園で働くこのロボット、ハウス栽培のこのトマト畑で、収穫作業を全自動で行っております。

ただ、収穫以外に手入れ作業とパッキング作業だけはまだ自動化できておらず、全作業16万時間の内4万時間弱が自動化できたにすぎません。

しかし、重労働の一つが機械化・自動化されたことで、農業に人を呼び込むきっかけになると考えているようです。

でも、とうとう松尾豊先生の提唱していた未来の一つが具現化してしまったんですね。

最近の講演内容が分かる資料:東大 松尾豊氏が語る「ディープラーニング×ものづくり」戦略【前編】 —ABEJA「SIX 2018」 | IoTニュース:IoT NEWS

そういえば、万引き防止システムも作られてましたね。

AIで万引き防止する時代に: EeePCの軌跡

この調子なら、同じく松尾豊先生が唱える、牛丼屋の全自動化も目前かもしれません。

完熟カットトマト紙パック 300g×6個

2018年7月 2日 (月)

通常の動画からAIが補完してスローモーションビデオを作り出す技術をNVIDAが開発

最近のAI、機械学習技術の応用範囲はとどまるところを知りません。

Nvidia、通常の動画から滑らかなスローモーション動画を生成する技術を開発 | ギズモード・ジャパン

最近は映像を作り出す系の技術が流行ってますが、こちらは通常の動画を滑らかなスローモーションビデオに変えてしまう技術です。

デモでは、30fpsの動画から、240fpsの動画を作り出してますね。

車の向きのような、単なるフレーム間の線形補完では作られにくい情報を見事に再現しています。

11000本以上のスポーツ動画を学習させて、フレーム間の映像がどうなるかを学習したAIが上記のような映像を作り出しているようです。

スローモーションビデオを撮影できるカメラを買うにも、専用のソフトを買うにも結構な金額を透視する必要があります。これが公開されれば、個人でも手軽にスロー動画を作ることができちゃいますね。

Nikon ミラーレス一眼 Nikon1 J5 ダブルズームキット シルバー J5WZSL

2018年6月28日 (木)

単一カメラ画像から奥行きを推定し深度マップを作るPlaneNetのサンプルコード

PlaneNetという、写真から深度推定を行うディープニューラルネットワークがあるそうです。

それをお手軽に試し、写真から深度マップを作製できるコードがあるようです。

PlaneNetで画像から深度マップを推定する

github:https://github.com/art-programmer/PlaneNet

このコードを使うと、こういう写真を

セグメンテーション分けして

深度マップを作ります。

わりと上手く立体を認識できてますね。

これを高速に処理できれば、単一カメラ画像から障害物を認識できたりしますね。

ただし、Ubuntu等、Linux環境下でないと動かなさそう。我が家では試せませんね。残念。

NVIDIA・ Jetson・ TX2 開発者キット

2018年6月10日 (日)

”名大祭”に行ってきました

この辺りで”めいだい”というと、”明治大学”ではなく”名古屋大学”のことを言います。

その名古屋大学の恒例の学園祭”名大祭”へ行ってまいりました。

Img_1239

名古屋大学って、象徴となる建物がないんですよね。強いて言うなら、この”豊田講堂”でしょうか?

Img_1242

受付でパンフレットをもらい、いざ学内へ。

それにしてもこの名大祭パンフ、いつの間にか凄くいい紙を使うようになりましたね。

20年前にいた頃の名大祭パンフといえば、手作り感満載の再生紙で白黒印刷というものでした。が、今やカラー印刷が当たり前なようです。

Img_1376

ところで、私が在籍していた頃の名大にはこんな大きな建物もなく、この20年のうちに次々に建てられたようです。

日本で3番目に広い大学だとかどうとかで、しかも名古屋市内のわりと一等地にあるため、日本で一番地価の高い大学などと言われてましたけど、今はどうなんでしょうか?

Img_1228

初めは、豊田講堂内にある研究室紹介をいくつか拝見。

これは「宇宙地球環境研究所」のポスター。太陽フレアの観測やら年代測定(炭素14の分析など)まで手掛ける研究所のポスターがありました。

小中学生にもわかるさまざまな冊子が置いてあったのですが、このサイトでダウンロードできます。

「50のなぜ?」を見てみよう 中高生向けページ | ISEE 宇宙地球環境研究所

漫画版の「...ってなんだ!?」シリーズは必見です。理科が好きな学生諸君であれば、興味をそそられること間違いなし、です。

ここには他に、人の動きをトレースする研究や、ディープラーニングによる田植えから収穫までのタイミングを予測するモデルを展示しているところもあって、なかなか今どきの研究も見られました。

Img_1245

さて、祭りのメインストリートは、豊田講堂から図書館にかけてのこの通り沿い。

たくさんの屋台が出てました。わりと客引きがしつこかったです。

Img_1247

で、長男が選んだのはこの”デブ・チュロス”。

写真を撮り忘れましたが、いうほど”デブ”ではなかったです。

Img_1255

他にも、フリマの会場もありました。

Img_1294

ところで、名大内にはあちこちにカフェがありますね。今回だけで3、4か所見つけました。これは、図書館にあるスタバ。

我々の時はこんなものなかったんですが・・・時代ですかねぇ。

Img_1288

なんだか一瞬、目がおかしくなるこのアートが書かれた建物は「全学教育棟」というところ。

我々の時代には「教養部」と呼ばれ、大学1、2年を過ごした場所でしたね。

Img_1265

この建物の中で「名大レゴ部」を発見。

東大レゴ部は有名ですが、名大にもあったんですね。

Img_1272

地元らしく、地元にちなんだ作品が並んでました。これは「熱田神宮」。織田信長が桶狭間の戦いの前に戦勝祈願をしたことで有名な神社ですね。

Img_1274

この奇妙な建物は、地元ではおなじみの「名古屋市役所」。どうしてこういうデザインなのか、私にもよくわかりません。お城に近いからですかね?

Img_1311

北部の方には、こんな建物があります。

2014年に、青色LEDでノーベル物理学賞を受賞された3氏のお1人、赤崎先生を記念する記念館です。

Img_1314

これは当時使用した電子顕微鏡?だそうです。こんな感じに、当時使われた研究機器類が展示されております。

Img_1321

今や高輝度LEDはあらゆる分野に使われております。ここがその原点といえる場所なんですね。

Img_1327

名大というところは、西側が発達しております。道を挟んで東側に行くと

Img_1331

急に人口密度が下がります。

Img_1328

おっと、こんなところに弊社製品が・・・

Img_1333

ところどころ、高い建物が並んでいるかと思えば

Img_1356

こんなうっそうとした林が残っているのも、東部の特徴。

Img_1339

中には、こんなけもの道のような場所まで・・・この先に、私の所属していた研究室があったんですけどね。

Img_1361

ついでに、ずっと東まで行ってきました。

東の果てこには、私にとってなじみ深い工学部6号館があります。

ですが、名大祭では特に何もしない建物だったため、中には入れず。残念。

Img_1362

20年ぶりに来ましたが、相変わらずですね、この建物。耐震補強のみ施されてました。

Img_1370

もう一人のノーベル賞受賞関連の施設も発見。これは2001年にノーベル化学賞を受賞された野依教授の記念館です。

Img_1379

こんな感じに、ぐるりと回って得られた戦利品は以上。

名大祭パンフに青色発光ダイオードのパンフ、レゴ教室のチラシと名大ストラップです。

卒業後も数度ほど訪れましたけど、端から端まで回ったのは実に20年ぶりのこと。

また時々、訪れたいですね。

名古屋大学(理系) (2017年版大学入試シリーズ)

2018年4月17日 (火)

ラーメン二郎のラーメンの写真からどの店のものかを当てる学習器

ラーメン二郎といえば、あの山盛りのもやしが印象的な盛り付けをするラーメン屋ということまで知っています。

ですが、私自身は一度も行ったことがないんですよね・・・特に行きたいとも思いませんが。

そんなラーメン二郎。全部で41店舗あるらしいですが、ラーメン二郎のラーメンの画像から、この41店舗のどこで作られたものかを言い当てるという、役に立つのか立たないのかわからない学習器を作ってしまった人がいるようです。

ラーメン二郎の写真、どこの店舗のものかを機械学習が見極め! | Techable(テッカブル)

使われたのは、Googleが提供するCloud AutoML Visionというシステム。これに48000枚の画像を使ってディープラーニングを実施。94.5%という高精度で、画像と店名を言い当てるというシステムを構築したそうです。

そんな学習器を作れるということは、41店舗それぞれに固有の差があるんですね。その方が驚きです。

でも、こういう場合は、ラーメン以外の要素、例えばテーブルの色合いや容器で見分けている場合というのもあるようです。が、その違いを排除しても見極めているとのこと。どうやら、肉の切り方やトッピングの載せ方に癖があるようです。現在、その見極め要素を調査中とのこと。

しかし、これほど微妙な差も見分けることができちゃうんですね。しかも、95%というかなりの高確率で。もしかして、愛知県のスガキヤのラーメンも支店ごとに見極められたりするんでしょうか・・・さすがに、スガキヤは無理でしょうね。

世界一美味しい「どん二郎」の作り方 誰も思いつかなかった激ウマ! B級フードレシピ

2018年4月12日 (木)

クックパッドによるディープラーニングを用いたホットドッグ検出器の記事

皆さんご存知クックパッド。様々なお料理のレシピが載せられた、今やだれもが知っているサービスです。

そんなクックパッドに、なんとディープラーニングを用いた「ホットドッグ検出器」が出ております。

ディープラーニングによるホットドッグ検出器のレシピ - クックパッド開発者ブログ

正確にはクックパッド開発者ブログなんですけどね。でも、クックパッドらしく詳細な「レシピ」が載ってます。

プログラムコードだけでなく、データセットまで用意されております。このサイトを見るだけで、独自データによるディープラーニング活用方法が一通りわかるようになってます。

で、判別結果は上の画像のように、ホットドッグの辺りだけカラーに、それ以外は白黒になるよう結果が表示されます。

使っているのは、MobileNetという、モバイル機器向けのモデル。Imagenetの学習済みデータを転移学習し、ホットドッグを認識できるようにしてます。Macbook Proで10epochに20分ほどの計算時間だそうです。

結果表示の方法にちょっとびびっと来ますね。MobileNetを使っているというのも気になるところ。Raspberry Pi Zeroでも動く!?MobileNetの画像認識がすごい: EeePCの軌跡という記事を書いて以来、私もMobileNetが気になってますし。

クックパッドらしい記事ですね。この「ディープラーニング・レシピ」、気になる方はぜひリンク先へ。

クックパッド レタスクラブ お気に入り登録数★上位レシピが大集合! プロのレシピ人気ベストおかず (レタスクラブムック)

より以前の記事一覧

当ブログ内検索

  • カスタム検索

スポンサード リンク

ブログ村

無料ブログはココログ