Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Py conkyushu2018

初心者向け、Pythonで始める人工知能入門の資料です。
人工知能の説明と、ニューラルネットワーク の解説、簡単な画像識別装置を Google の Colab と Keras を使った実装の仕方を紹介しています。

  • Login to see the comments

  • Be the first to like this

Py conkyushu2018

  1. 1. 初学者向け Pythonによる人工知能入門 九州大学大学院修士2年 子供向けプログラミング教室先生 志村 朋人 1
  2. 2. 自己紹介 2 名前:志村 朋人 所属:九州大学大学院修士2年 経歴:子供プログラミング先生 トゥクトゥクの人 紙飛行機Japan Finalist 好きな言語:Python
  3. 3. もくじ 3 1 2 3 人工知能とは ANN (Artificial Neural Network) とは Kerasで実装
  4. 4. 1. 人工知能とは 4
  5. 5. 1. 人工知能とは 知能を機械的に再現(表現)したもの • お掃除ロボット • 自動運転 • 音声認識 • 検索エンジンの最適化 5 データをもとに学習し、成長するシステム
  6. 6. 1. 人工知能とは -機械学習- 6 新垣結衣 ふむふむ
  7. 7. 1. 人工知能とは -機械学習- 7 これも新垣結衣だ
  8. 8. 1. 人工知能とは 8 Artificial Intelligence Machine Learning Neural Network
  9. 9. 1. 人工知能とは 9 Artificial Intelligence Machine Learning Neural Network
  10. 10. 2. ANNとは -ニューラルネットワーク- ニューラルネットワークとは、脳神経回路のこと 10
  11. 11. 2. ANNとは -ニューラルネットワーク- この一つのノードをニューロンと言います 11
  12. 12. 2. ANNとは -形式ニューロン- このニューロンを、人工的に表現したものを 形式ニューロンと言います。 12
  13. 13. 2. ANNとは これらを組み合わせることで、人工的にニューラルネットワー クを再現したものを Artificial Neural Network (ANN) といいます。 13 出力1 出力2 入力1 入力2 入力3
  14. 14. 2. ANNとは -形式ニューロン- 複数の入力を受け取り、一つの出力をします。出力は、入力 の重要度と閾値によって決まります。 14 入力1 入力2 入力3 出力 重み1 重み2 重み3 閾値
  15. 15. 2. ANNとは -形式ニューロン- 複数の入力を受け取り、一つの出力をします。出力は、入力 の重要度と閾値によって決まります。 15 チャート 話題性 将来性 仮想通貨 始める! 0.3 0.5 0.2 0.8
  16. 16. 2. ANNとは -形式ニューロン- 複数の入力を受け取り、一つの出力をします。出力は、入力 の重要度と閾値によって決まります。 16 チャート 話題性 将来性 仮想通貨 始める! 0.3 0.5 0.2 0.8
  17. 17. 2. ANNとは -形式ニューロン- 複数の入力を受け取り、一つの出力をします。出力は、入力 の重要度と閾値によって決まります。 17 チャート 話題性 将来性 仮想通貨 始める! 0.5 0.3 0.2 0.8 𝜍 𝑥 = 1 1 1 + 𝑒−𝑎𝑥シグモイド関数
  18. 18. 2. ANNとは -全能性- 全能性について。形式ニューロンは、重みと閾値を調整する ことでNANDゲートを作成できます。 18 0 or 1 0 or 1 -1 -1 -1.5
  19. 19. 2. ANNとは -画像識別機- ANNを使うことで、いろんな人工知能を作ることができます。 今回は、Convolution Neural Network(CNN)を用いて、画像識 別機の作り方を簡単に紹介します。 19
  20. 20. 3. Kerasで実装 ColabとTensorFlowの簡単なライブラリKerasを使って、 画像識別装置を実装します。 20
  21. 21. 3. Kerasで実装 新垣結衣、有村架純、本田翼を識別する 画像認識システム! 21
  22. 22. 3. Kerasで実装 -準備- 画像の用意ですが、今回割愛させていただきます。 私は、AzureのBing Web Search APIを使用して画像データを 集めました。 画像データは、 新垣結衣: 559枚 有村架純: 377枚 本田 翼: 355枚 となっております! 22
  23. 23. 3. Kerasで実装 -準備- ディレクトリの構成は下記のようにしました。 23 Colab Notebooks ┣ cnn.ipy ┗ imgs ┣ aragaki ┣ arimura ┗ honda
  24. 24. 3. Kerasで実装 -準備- まずは使うライブラリをimportしていきます 24
  25. 25. 3. Kerasで実装 -ドライブと連携- “!”を使って、unixコマンドを使ってパッケージをインストールし ます。 次に、Google drive との連携を行います。 25
  26. 26. 3. Kerasで実装 -ドライブと連携- 最後に、ディレクトリを用意し、マウントしたら driveの中身を Colab 上で使えるようになります。 !ls data_path は、data_pathのディレクトリの中身をリスト形式 で表示するコマンドです。 26
  27. 27. 3. Kerasで実装 -画像処理- 画像を読み込んで、npに変換する関数を作ります。 まずは、globでパスを取得します。私はdoriveとColabを連携 させ、imgsに画像ファイルを置いておきました。 27
  28. 28. 3. Kerasで実装 -画像処理- つぎに、パスを元に画像ファイルを読み込みます。OpenCVで は、BGR形式で読み込まれるためRGBに変換しましょう。 またサイズは、56*56に統一変換します。 28
  29. 29. 3. Kerasで実装 -画像処理- 最後に、リストをシャッフルしたら、そのリストを返すようにしま す。 これで画像を取り込む関数は完成です。 29
  30. 30. 3. Kerasで実装 -画像処理- 実際に、新垣結衣、有村架純、本田翼の画像データを読み 込み、配列に変換していきましょう。 30
  31. 31. 3. Kerasで実装 -画像処理- 取り込み終えたら、配列を統合し、ラベリングしていきます。 31
  32. 32. 3. Kerasで実装 -画像処理- 最後に正規化とラベルをOne-Hot形式に変換したら、データ の準備は完了です。 32
  33. 33. 3. Kerasで実装 -モデル構築- CNNを作ってモデル作成します! CNNとは、ざっくり言うと画像をいい感じに圧縮し(特徴量だけ を抽出、際立たせ) て学習していく感じです。 33
  34. 34. 3. Kerasで実装 -convolution- CNNを作ってモデル作成します! CNNとは、ざっくり言うと画像をいい感じに圧縮し(特徴量だけ を抽出、際立たせ) て学習していく感じです。 34 引用: http://cs231n.github.io/convolutional-networks/
  35. 35. 3. Kerasで実装 -convolution- CNNを作ってモデル作成します! CNNとは、ざっくり言うと画像をいい感じに圧縮し(特徴量だけ を抽出、際立たせ) て学習していく感じです。 35 引用: http://cs231n.github.io/convolutional-networks/
  36. 36. 3. Kerasで実装 -CNN- CNNを作ってモデル作成します! CNNとは、ざっくり言うと画像をいい感じに圧縮し(特徴量だけ を抽出、際立たせ) て学習していく感じです。 36 引用: http://cs231n.github.io/convolutional-networks/
  37. 37. 3. Kerasで実装 -CNN- CNNを作ってモデル作成します! CNNとは、ざっくり言うと画像をいい感じに圧縮し(特徴量だけ を抽出、際立たせ) て学習していく感じです。 37 引用: http://cs231n.github.io/convolutional-networks/
  38. 38. 3. Kerasで実装 -pooling- CNNを作ってモデル作成します! CNNとは、ざっくり言うと画像をいい感じに圧縮し(特徴量だけ を抽出、際立たせ) て学習していく感じです。 38 引用: http://cs231n.github.io/convolutional-networks/
  39. 39. 3. Kerasで実装 -モデル構築- まず今回はSequentialモデ ルを使います。 Sequentialは、リスト形式に 層を組むモデルなので、add で気軽に層を追加すること ができます。 最後は確率で欲しいので softmax関数を使います。 39
  40. 40. 3. Kerasで実装 -モデル構築- まず今回はSequentialモデ ルを使います。 Sequentialは、リスト形式に 層を組むモデルなので、add で気軽に層を追加すること ができます。 最後は確率で欲しいので softmax関数を使います。 40 𝑝𝑖 = 𝑒 𝑦 𝑖 𝑒 𝑦 𝑘 Softmax 関数
  41. 41. 3. Kerasで実装 -モデル実行- 次にモデルのコンパイルをします。 今回は、最適化関数にAdaptive moment estimation(Adam) 使います。 あとは実行するだけです! 41
  42. 42. 3. Kerasで実装 -結果のプロット- 学習が終わったら、accuracyの遷移をmatplotlib.pyplotを使っ て、グラフ形式にプロットしてみましょう! 学習の遷移は、historyにdictonary形式に格納されているの で、keyを呼び出すことでアクセスできます。 42
  43. 43. 3. Kerasで実装 -結果のプロット- 43 80%
  44. 44. 3. Kerasで実装 -実際に予測- model.predictを使って、実際に予測をしてみましょう! 予測結果はOne-Hot形式で出力されるので、文字に起こす ためのリストを用意します。 44
  45. 45. 3. Kerasで実装 -実際に予測- for文でpredictの中身を一個ずつ処理します。 出力は確率ですのでargmaxをとり、確率も出力できるように します。 45
  46. 46. 3. Kerasで実装 -実際に予測- しょっぱなから間違えてました(笑) 一番左のガッキーは、有村架純なんですね(笑) だいたいval_accが83%に収束しました! 46
  47. 47. 3. Kerasで実装 -最後に- 初めてColabにチャレンジしたのですが、データの取り込みが とてもめんどくさくて(笑) そこさえクリアできたらもっと使いやすいのにというのが個人 の所感です。 今回は、データの取り込みに失敗したので、ローカルで画像 を処理しpycファイルにしてから、手動でアップロードという何 してんだろ的な処理をしました(笑) 47
  48. 48. おまけ 私は、正面から見ると本田翼よりで、 横から見ると有村架純 成分強いみたいです(笑) 48

×