数値解析系

2020年5月25日 (月)

ゲームを作り出すAI!?NVIDIAが「GameGAN」でパックマンを再現!

パックマンって、誕生から40年を迎えるんですね。

それはともかく、そのパックマンをエピソードのみから再現するというAIをNVIDAが作り出したと宣伝しております。

誕生 40 周年を迎えるパックマンを、NVIDIA の研究者たちが AI で再現 | NVIDIA

そのAIはずばり「GameGAN」というそうです。GAN(Generative Adversarial Network、敵対的生成ネットワーク)のゲーム版といったところのようです。

そのGameGANにパックマンの5万エピソードを放り込んで学習させて、ゲームエンジン無しにパックマンを再現したんだそうです。

ええ、もう、何言ってるのかわかりませんね……

で、できたものはこちらの動画。

これを見る限り、ゲームを作った、というより、ゲーム動画を作ったというところでしょうかね……

どちらにしても、たいしたものです。

いずれスペースハリアーやアフターバーナーなんかも作り出しちゃうんでしょうかね?

レトロアーケード <パックマン>

2020年5月 3日 (日)

ゲームセンターあらしの作者 すがやみつる氏によるPython解説本「こんにちはPython」買ってみた

長らくPython解説本を探していたんですが、こいつが出るという話を聞いて、予約注文してました。

Img_3984

で、5月1日に到着。

この絵柄に懐かしさを覚える人も多いんじゃないでしょうか。そうです、1980年代に一世を風靡した、あの「ゲームセンターあらし」です。

その作者、すがやみつる氏は、実は「こんにちはマイコン」という本を書いていたことも、知る人ぞ知る話。

そんなすがやみつる氏の最新作がこちら、「こんにちはPython」です。

いわゆる入門書ですが、ちょっとかいつまんで紹介します。

Img_2357

この本、全部で190ページほどですが、そのうち56ページまでを使って、単純な四則演算とprint表示、変数、そして”Hello World”の解説にあてています。

一見すると随分と回りくどい感じがしますが、実はその解説の中で、Pythonの導入から基本的な構成、そしてエラーの読み方など、Pythonの基礎となるべく知識を分かりやすく漫画で描いております。

Img_2358

それが終わると、いきなりゲームの製作です。ゲームセンターあらしらしい展開……と思いきや、実に単純なゲームです。

数字を言いながら、3の倍数なら「フィズ」、5の倍数なら「バズ」、両方で割り切れる数字なら「フィズバズ」と言い換えるというゲーム。

Img_2359

当然、繰り返し文に条件文が登場します。このため、Python特有のこれが登場です。

そう、「インデント」です。

このPythonにおけるインデントの概念を、分かりやすく説明しています。漫画の力ですね。

ところでこの本、分かりやすいのは漫画の力だけではないです。

なんていうんでしょうか……トライアンドエラーをきちんと書いているというか、とにかく、こうするとこうなる、というのを手順を追って書いているんですよね。

例えば、これ。

Img_2360

1~6までの数字の乱数を発生させたいとき、単純にrandom関数を使うとこうなっちゃう(小数点以下何桁もの表示が出てくる)というのを示したうえで、それの修正方法(int等)を順を追って説明。

プログラムって、こうした「やっちまった」ことの繰り返しで覚えていくことが多いので、トライアンドエラーをきちんと書いてくれるのはユーザー体験的には分かりやすいことじゃないかと思います。

とまあ、こんな調子で話は進みますが。

Img_2361

最後は、こういうゲームを作ります。

後半ほどコードの解説が多いですが、わりと何とかなりそうです。

さて、私も社内でAI/機械学習系の普及活動をやってますが、そもそもこのPythonが分からないという声が多いのは事実です。

VBAやHTML、Javascriptなどの言語に触れたことがある人なら何とかなるんですが、そういう人ばかりではないのがこの日本という国の現状。

一方でPythonという言語は、そのままでは使われない言語でもあります。

大抵は「pip」コマンドで機能を実装して、importでそれを読み込んで使用する。まあ、それがPythonの良さでもあるんですが、一方で初心者を混乱させている元凶でもあります。

この入門書では、pipだのimportだのに頼ったプログラムは、ほとんどありません(とはいえ、乱数を使うときには「import random」等、多少はあります。まったく使っていないわけではないですが)。

本当の基礎を学ぶには、良書ではないかと感じました。

てことで、早速こいつを会社にもっていき、紹介して回ろうかと思ってます。さほど高い本でもないですし、やはり漫画ということもあって読みやすい。そこからあとは他の本なり、ネット検索なりで上達していけるきっかけとなればと思ってます。


ゲームセンターあらしと学ぶ プログラミング入門 まんが版こんにちはPython

2020年5月 1日 (金)

最大20人の体温を同時測定するアイリスオーヤマのAIサーマルカメラ

いやあ、アイリスオーヤマさん、なかなかいいものを発売しました。

最大20人の体温を同時測定 アイリスオーヤマ、「AIサーマルカメラ」を発売 - ITmedia NEWS

アイリスオーヤマが4月15日に、最大20人の人の顔検出と、その体温を測定するというAIサーマルカメラ「ドーム型AIサーマルカメラ」を発売しました。

ごらんの通り、複数の人の顔を検出し、その上に体温を表示するというもの。注文が殺到しているようです。そりゃあそうでしょうね。

凄いのは、マスクをつけていても顔検出できるというところ。実は実験してみましたが、よくあるOpenCVに付属の顔検出器ではマスク付きの顔を検出できません。ちゃんと作ったようですね。

まさに今、コロナ禍の真っただ中。その疑いのある人をチェックしたいという需要はあるものの、非接触で同時に何人もの人を測定できる機器って、ほとんどありませんね。

しかしこれ、お値段90万円とのことで、結構な値段です。とても個人レベルで同行できるものではありませんね。

1人だけ測れる携帯版の「ハンディ型」というサーマルカメラもあります。こっちはお値段25万円。ごく普通のサーマルカメラです。

これを見ていると、なんだか自分でも作れないかなぁ……なんて思ってしまいますが、さすがにマスク顔をどう検出するかを解決しないと、だめそうですよね。

FLIR(フリアー)【国内正規品】iPhone/iPad用 FLIR ONE Pro 19200画素 1年保証 赤外線サーモグラフィ メーカー品番:435-0006-03

2020年3月24日 (火)

子供の科学 4月号にて「Scratchで機械学習」

大人なのに買ってしまいました「子供の科学」。

もっとも、うちには小学生が一匹いるので、別におかしくはないんですか。

Img_3884_20200323125001

はい、これです。この表紙を見れば、買わずにはおられません。

Img_3885

特に、この辺りです。「あらわる!空からの刺客」……ではありません。「Scratchで機械学習」の方です。

この手の特集のタイトルは、たいてい「AI」で済ませてしまうものですが、さすがは科学雑誌です、しっかり「機械学習」と明記しているところに好感です。子供向けだからこそ、曖昧な用語ではなく正しい言葉を用いようというこの雑誌の姿勢が素晴らしいです。

さて、商用誌なのであまり込み入った紹介はできません。詳細はお買い上げください。

Img_3887

まず、使用言語は「Scratch」です。もっとも、ただのScratchではなくて、機械学習用の改造版Scratchを呼び出します。

Ml2s01

で、私も早速、試してみることに。ここから雑誌の内容に従ってごにょごにょすると、機械学習版Scratchが呼び出せます。

Img_3891

で、その機械学習版Scratchですが、PC内蔵のWebカメラなどを使い、画像の学習を行います。

Ml2s02

私もやってみました。雑誌とは違って、グー、チョキ、パーをそれぞれ20枚づつ学習させます。

で、学習後に、カメラの前で実際にグー、チョキ、パーをかざしてみます。

Ml2s04

Ml2s06

Ml2s05

「パー」が1、「チョキ」が2、「グー」を3のラベルとして認識させました。

20枚ですが、かなり正確に学習できていることを確認。

Img_3888

この学習器を使って、あとはScratchのプログラムを組みます。

この雑誌では、上のようにPongゲームをプログラミングしてました。

で、ジェスチャーを学習した学習器を使い、手によるジェスチャー操作をするというゲームを作成。

たったそれだけの特集でしたが、画像認識というものを理解するには良い記事ではないかと。

裏ではTensorFlowが動いているようですね。しかし、今どきのPCなら問題なく動作してくれます。

新型コロナウイルスによっていつもより長い春休みを、子供と共に機械学習で過ごしてみませんか?

お値段は880円(税込み)です。

子供の科学 2020年 4月号 特大号 別冊付録付 [雑誌]

2020年3月16日 (月)

自宅PCを使って新型コロナウイルスの解析に貢献!?

いわゆる分散コンピューティングってやつです。自分のPCの計算能力を提供し、様々な解析に参加できる「Folding@home」に、新型コロナウイルスに関する解析項目が登録されたそうです。

自宅のPCで新型コロナウイルス治療に向けた解析が可能に - PC Watch

COVID-19に関し、6種類の解析が登録されているようです。当初はGPUのみでしたが、今はCPU、GPU共に利用可能とのこと。

私は、ちょっとこの分散コンピューティングによる成果がどう使われるかが不明瞭なため、参加する予定はありません。

が、この手の分散コンピューティングは、計算能力のアピールにも使われるので、腕、いや、CPU/GPUに覚えのある方は、参加するのもよろしいかと。


AMD Ryzen Threadripper 3990X 2.9GHz 64コア / 128スレッド 288MB 280W【国内正規代理店品】100-100000163WOF

2020年2月26日 (水)

京都大学のPython基礎講座教材

京都大学で行われる、あらゆるPython授業に先立って行われる講座です。

Kyoto University Research Information Repository: プログラミング演習 Python 2019

その名も、「プログラミング講座Python 2019」です。

京都大学というだけあって、思わず引いてしまいそうですが、中身はそれほど難しいというわけではありません。

よくあるコマンドごとの解説というより、計算や処理、関数による処理、そして実践事例という順で解説しています。

Pythonって、標準の機能よりもimportで関数を読み込んで使うという使い方が最も多いので、この教材のやり方の方がより現実的かなぁと思いますね。

ところでこの教材は「CC-BY-NC-NDライセンスによって許諾」と書かれています。

簡単に言うと、再配布可能、改ざん不可のようです。

個人的には、参考になる教材ではないかと思いますね。特に機械学習をやろうという人には向いているかと。

Excel×Python最速仕事術

2020年2月14日 (金)

SONY Neural Network Consoleを使って故障予測AIを無料で作る!?

なんていう無料体験サービスを、Neural Network Console Cloudが紹介しています。

Neural Network Console Cloudのご紹介

上のリンクから、SONYまたはGoogleアカウントでログインすると、この無料体験サービスを使うことができるようです。

で、ドキュメントがあったので、ちょっと読んでみました。

時系列データの異常波形を検知する、というのが目的で、サンプルデータはsin波にノイズを加えたもののようです。

で、Affine層だけ使ったものと、Convolution層を用いたものの両方が解説されてました。

ただ、Convolution層は1次元ではなく、2次元のものを無理やり(波形データを(1,128)のような2次元配列に変換して)読み込ませてました。

でも、需要ありますからね、時系列データからの異常検知。このテーマを取り上げたのは、正解だと思います。ニューラルネットワークというと、ほぼ画像認識ですから。

ですが、時系列処理でよく使われるRNN(LSTM)は使われてませんね。

これはおそらくですが、このNeural Network ConsoleのモデルをPython上で使うためのライブラリ「nnabla」が、LSTMをサポートしていないからじゃないでしょうか?

このドキュメントをみると、Neural Network Console上で作ったモデルを利用するPythonコードの作り方まで書かれてます。実際の活用まで想定したこのテーマ。これはなかなか良い教材ですね。

お手軽に異常検知を試してみたいとお考えの方、是非このサイトをご覧下さい。


ソニー開発のNeural Network Console入門【増補改訂・クラウド対応版】--数式なし、コーディングなしのディープラーニング

2020年1月29日 (水)

SONYのディープラーニング講座チャンネル

さあ、今年こそディープラーニングやるぞ!

……とは言ってみたものの、一体何から始めたらいいのやらさっぱり分からないというお方。

G検定なるものもありますが、とりあえず、これから始めてはいかがでしょうか?

SONY Neural Network Consoleの公式チャンネルが提供する、ディープラーニング講座の動画です。

ちょっと見てみましたが、上に張り付けた導入編の動画は特にわかりやすいですね。ぜひ、多くの人に見てもらいたい動画です。

Neural Network Consoleの公式チャンネルなので、Neural Network Consoleを使っての講義になるようですが、それでも一から学ぶには適切な難易度ではないかと思います。

世の中、ビッグデータ技術、機械学習、果てはAIといったものが多く入り込んできています。

この分野、日本が遅れているという実態もありますが、そういうネガティブな理由ではなく、こういう技術を使うと自身の業務が画期的に改善される、という視点で取り掛かる方がずっとポジティブに、前向きに取り組めるかと思います。私は最近、そう考えることにしてますね。

興味はあるけど、数学やらプログラミングやらの壁で断念していた人は、ぜひ。


なっとく!ディープラーニング

2020年1月25日 (土)

ベイズ推定とは?

私が目にした中で、一番分かりやすいベイズ推定の説明です。

具体例でわかる!ベイズ推定とベイズの定理 - 世界一暇なデータサイエンティスト

これのおかげで、やっと「条件付確率」の記号を見てすっと理解できるようになりました。

やはりというか、具体例と共に説明すると、分かりやすいですね。もっとも、なぜ「出会い系」なのか……という声はあるでしょうけど(いや、でもおかげで分かりやすいというのも事実)。

最近は機械学習が大流行りで、その流れで「ベイズ統計とはなんぞや!?」と苦しんでいる方が大勢いらっしゃると思います。ここは一からじっくり読んでいただきたいサイトです。

ですが、当然これだけで「ベイズ」とは何たるかがすべてわかるわけではありません。1万歩の道のりの、ほんの一歩にすぎません。ですが、入り口としては最適なサイトではないかと。


データ解析のための統計モデリング入門――一般化線形モデル・階層ベイズモデル・MCMC (確率と情報の科学)

2020年1月22日 (水)

Googleの「PoseNet」を試してみた

人の骨格を推定して棒人間を表示するという「OpenPose」という仕組みがあります。

OpenPose試してみた。〜ディープラニングで人のポーズを解析

ごらんの通り、人の姿勢まで把握できるとあって、一時期話題になりました。

が、このOpenPoseの会社での利用には問題がありまして。

企業などで利用する際は、年280万円ほど払わなくてはならない、商用のスポーツへの活用は禁止…などの制約があります。

特にお金の話は、何に使えるかどうかわからない状態ではちょっと高過ぎです。というわけで、この手の仕組みを活用できずにいたのですが。

いつの間にか、Googleが「PoseNet」というのを公開しておりました。

tfjs-models/posenet at master · tensorflow/tfjs-models · GitHub

OpenPose同様、人の関節や目、鼻、耳を推論するという仕組みですが、こちらはApacheライセンス 2.0に準拠、つまり、商用利用も可のオープンソースな仕組み。

上のリンクからスマホで「Try the demo here!」をタッチすると、スマホのカメラを使って上のような骨格映像を表示させることができます。

まあ、それはそれで面白いのですが、やはり実用で使おうと思ったら、Python版が欲しいところ。

ありました。Python + TensorFlow版が。

GitHub - rwightman/posenet-python: A Python port of Google TensorFlow.js PoseNet (Real-time Human Pose Estimation)

こちらから、Python用のコードが入手できます。

上のコードは、TensorFlow 1.12で動作させているようです。が、我が家のTensorFlow 1.8.0でも動きました(あれ、うちのはそんな古いバージョンだったんだ……)。

が、注意が必要なのは、OpenCVです。

今どきは普通にpipでインストールすると、OpenCV 4.Xが入ってしまいますが、動きませんでした。

ということで、わざわざリンク先と同じ3.4.5.20を入れました。

> pip uninstall opencv-python

> pip install opencv-python==3.4.5.20

他にもpillowなどが必要です。

で、早速動かしました。

コードをゲットして展開し、コマンドライン上で

> python get_test_images.py

と打てば、サンプルの画像ファイルを入手できます。そのあとに、

> python image_demo.py

と打ち込めば、outputフォルダに結果が入ります。

Skate_park

こんな感じの画像が得られます。

「images」フォルダに独自の写真を入れても、同様に人の骨格画像が生成されます。

また、Webカメラの画像から骨格画像を得るには

> python webcam_demo.py

でカメラ画像から骨格を推論してくれます。

あるいは、

> python webcam_demo.py --file (動画ファイル名)

とすれば、カメラではなく動画から同様の処理をかけてくれます。

さて、このPoseNetを使うときは、当然人の動きを数値化したいという需要がある人が多いので、この骨格の座標を取り出したいと考えるのが当然です。

というわけで、その数値の取り方ですが。

image_demo.pyにせよ、webcam_demo.pyにせよ、

pose_scores, keypoint_scores, keypoint_coords = posenet.decode_multi.decode_multiple_poses( ~

という行があるはずです。

その中にある「keypoint_coords」が、各部位の骨格を示しています。

例えば、写っている人物の一人目の右手首の座標を知りたければ、


rtwrt = keypoint_coords[0,10,:]

という変数で取り込めば、rtwrt[1]がx座標、rtwrt[0]がy座標になってます(逆じゃないです。本当にこの順番です)。

[0,10,:]の”0”が「一人目」という意味で、”10”というのが右手首(rightWrist)という意味です。

全部で17か所あって、配列の0~16にはそれぞれ「nose」、「leftEye」、「rightEye」、「leftEar」、「rightEar」、「leftShoulder」、「rightShoulder」、「leftElbow」、「rightElbow」、「leftWrist」、「rightWrist」、「leftHip」、「rightHip」、「leftKnee」、「rightKnee」、「leftAnkle」、「rightAnkle」となってます(意味は大体わかりますよね?)。

なお座標値は、画像左上が原点で、y座標は下に行くほどプラスであることに注意してください。

これを使うと、例えばダンクシュートした際の手足、身体の動きや、作業の姿勢等を数値化することができるようになります。

アイデア次第で、いろいろとできそうです。

ということで、私も会社でいろいろとやってます。

簡単なDeep Learning

より以前の記事一覧

当ブログ内検索

スポンサード リンク

ブログ村

無料ブログはココログ