書評『物体・画像認識と時系列データ処理入門 第2版』

業務で物体検出タスクをやることになったので購入しました。時系列データ処理も載っているしお得だな〜と思ったのですが、内容はどちらかというと「ディープラーニング入門」といった趣で、物体認識や時系列データ処理のテクニックが書かれていると思って購入すると、ちょっと物足りないかもしれません。でも、「ディープラーニング入門」としては、理論と実装のバランスが取れたとても良い本でしたので、わたしのようにはじめてディープラーニングをやってみる人や、実装はできるけどもっと理論を理解したいと思っている人などにおすすめです。

全体の感想

数式とPythonによる実装のバランスがとても良い本です。結構数式が出てきますが、直後に実装が載っていますし、数式の解説自体も丁寧なので、手を動かせば数学が苦手な人もついていけるはず。とくに、第4,5章ではライブラリを使わないでPythonとNumPyだけでニューラルネットワークの実装を行なっており、理論をそのまま実装するコードが載っていてとても勉強になります。使えるけど理論がわからない、という方は4,5章を読むといいと思います。

あと、一つの題材についてTensorflow, Keras, PyTorchそれぞれで実装が載っていてとても良かったです。3つのライブラリのうちどれかには詳しいが、他はあんまりよくわからないという方も多いと思いますので、それぞれの実装が載っていて比較できるというのは、とても勉強になると思います。

また、これは内容には関係ないのですが、Kindle版は固定ページ方式になっていて、文字がとても小さいです。わたしはiPadminiで読むことが多いので、ちょっとつらかったです…大きいiPadやPCで読む方は問題ないと思いますが、気になる方は紙版で購入された方がいいかもしれません。

トータルで見てとても満足度の高い本でした。テクニック的なものを求める方には向かないと思いますが、理論を理解したい、ニューラルネットワークを始めてみたい、という方にはおすすめです。そういう意味ではタイトルがいまいちですよね〜

時系列データ分析とOpenCVについてはおまけ程度にしか載っていなかったので、今後専門の本を読みたいなと思っています。

各章の感想

第1章 ディープラーニングとは

このあたりはディープラーニングを業務で使っている方や、G検定を持っている人はすでに知っている内容ですね。紙面の都合もありさらっと書かれていますので、詳しく知りたい方はG検定の公式テキストを読むといいと思います。

第2章 開発環境のセットアップとPythonの基礎

AnacondaのJupyter NotebookやGoogle Colabの使用方法と、Pythonの基本的な文法についての章です。この辺は、すでに機械学習を勉強されている方、業務で使われている方にはあたりまえレベルだと思います。わたしはささっと飛ばしてしまいました。Pythonの基本的な知識については、はじめて勉強する人にとってはこの章だけでは全く足りないと思いますので、適宜Pythonの参考書を購入された方がいいでしょう。

第3章 ディープラーニングの数学的要素

この章は地味に重要でした。この本ではディープラーニングの理論部分について、数式を使って詳しく解説が載っているため、しばらく数学やっていないよという方はこの章に目を通しておくのがいいと思います。基本的には高校数学の数III・数Cレベルの知識があれば大丈夫です。わたしは理系なので高校時代、数III・数Cは履修していましたが、行列の掛け算(内積)とか結構忘れていました…ディープラーニングで重要な「テンソル」についても、NumPyを使った実装と数式による解説があってわかりやすかったです。

第4章 ニューラルネットワークの可動部(勾配ベースの最適化)

前半では単純パーセプトロンを題材に、Pythonの標準仕様とNumPyでAND, NAND, ORゲートを実装します。

後半では単純パーセプトロンでは実現できないXORゲートについて、TensorFlow, Keras, PyTorchそれぞれ実装を行います。それぞれのライブラリの基本的な使い方が載っていて、違いを比較できるのでわかりやすかったです。

第5章 ニューラルネットワーク(多層パーセプトロン)

前半ではフィードフォワードネットワーク、バックプロパゲーションについての解説があり、Pythonの基本機能とNumPyで実装を行い理論の理解を目指します。数式がかなり多いですが、式展開や解説は丁寧なので、順を追って手を動かせば理解できるはずです。

後半では、ファッションアイテムの画像データセット「Fashion-MNIST」を題材に画像認識を行います。TensorFlow, Keras, PyTorchそれぞれの実装が載っています。わかりにくい行列の計算のところは行数・列数がどうなっているかというところから丁寧に解説が載っており、図もあるので理解しやすいです。

第6章 画像認識のためのディープラーニング

畳み込みニューラルネットワーク (CNN)を使います。CNNに関する解説はあっさりしているので、詳しく理解したい方は「ディープラーニングAIはどのように学習し、推論しているのか」がおすすめです。TensorFlow, Keras, PyTorchそれぞれの実装が載っています。

第7章 一般物体認識のためのディープラーニング

「CIFAR-10データセット」を使用して、画像分類を行います。CIFAR-10データセットは、60,000枚の画像と10種類の正解ラベルが付加されたカラー画像です。1つの画像データには1種類の物体が載っていて、画像のラベルと物体のラベルは1対1です。(1つの画像データに複数の物体が載っているわけではないという意味)ここでもTensorFlow, Keras, PyTorchそれぞれの実装が載っています。

後半では、Kerasの画像加工モジュールを利用してデータ拡張を行い、認識精度を高める方法が解説されています。

第8章 人間と機械のセマンティックギャップをなくす試み

人間には当然でも機械にとっては難しい課題「セマンティックギャップ」があります。この章ではセマンティックギャップの例として、「犬と猫の識別」を取り上げます。Kaggleの分析コンペで課題として提出されたイヌとネコのカラー画像25,000枚のデータセット「Dogs vs. Cats」を用います。前半ではフル装備のCNNをKerasスタイルで構築します。

後半では学習済みのモデル「VGG16」を用いた転移学習をKerasとPyTorchで行います。

第9章 ジェネレーティブディープラーニング

リカレントニューラルネットワーク (RNN)についての章です。タイトルの「時系列データ処理」に対応しているのはこの章だけですね。LSTMの解説が載っています。日本語の形態素解析を行うライブラリ「Janome」を用います。データはNTTドコモの雑談対話APIを用いて収集した「雑談対話コーパス」を使用して、会話が成立しているかどうかの識別をKerasで構築したLSTMを用いて学習します。形態素解析の解説はほとんどないので、本格的に自然言語処理をやりたい人には物足りない章だと思います。とはいえ流れは掴めるようになっていますので、「ディープラーニング入門」としては十分かなと思います。

後半では、分析精度を向上させるためにRNNとCNNによるアンサンブル学習を行います。時系列データ処理にCNNを用いるというのは意外でしたが、分析コンペにおいてもよく使われているようです。本書はあくまでも「ディープラーニング入門」の本であり、精度向上のテクニックについては「こんな方法もありますよ」という程度の記述でした。この辺は物足りない方もいらっしゃるかもしれません。とはいえRNNとCNNのアンサンブル学習については解説も丁寧ですし、コードを追いかけていけば理解できるようになっています。

自然言語処理はほとんどやったことがないので、もうすこし勉強しなくては…入門書から始めよう。『コピペで簡単実行!キテレツおもしろ自然言語処理 PythonとColaboratoryで身につく基礎の基礎 』は、はじめの一歩としては面白そうな本ですね。

第10章 OpenCVによる「物体検出」

OpenCVは画像処理を行うためのオープンソースライブラリです。OpenCVを利用して、人の画像データから、人の顔と人の顔から瞳の検出を行います。この章は短く、「OpenCVという便利なものがありますよ」という紹介にとどまっています。もっと勉強したい場合はOpenCVに関する本を読む必要があります。『OpenCVではじめよう ディープラーニングによる画像認識』とか良さそうですね。

本の目次

1章 ディープラーニングとは
 1.1 深層学習(ディープラーニング)とは
 1.1.1 機械学習の活用例
 1.1.2 機械学習とディープラーニングの関係
   ■機械学習の主な手法
 1.2 ディープラーニングって具体的に何をするの?
 1.2.1 ニューラルネットワークのニューロン
   ■人工ニューロン
   ■学習するということは重み・バイアスを適切な値に更新すること
   ■ニューロンの発火をつかさどる「ステップ関数」
   ■ニューロンの発火をつかさどる「シグモイド関数」
   ■人工ニューロンをネットワーク状に連結する
 1.2.2 ディープニューラルネットがディープラーニングを実現する
   ■畳み込みニューラルネットワーク(CNN)
   ■リカレントニューラルネットワーク(RNN)
   ■ドロップアウト、正則化
 1.2.3 ディープラーニングのためのライブラリ
 1.2.4 ディープラーニングの仕組み
 1.2.5 この本で使用するディープラーニング用データセット

2章 開発環境のセットアップとPythonの基礎
 2.1 Anacondaの導入
 2.1.1 Anacondaのダウンロードとインストール
 2.2 仮想環境の構築とライブラリのインストール
 2.2.1 専用の仮想環境を構築する
 2.2.2 ライブラリのインストール
 2.2.3 ライブラリのアップデート
 2.3 Jupyter Notebookの使い方
 2.3.1 Jupyter Notebookを仮想環境にインストールする
 2.3.2 ノートブックを作成する
   ■ノートブックを保存するためのフォルダーを作成する
   ■ノートブックの作成
 2.3.3 ソースコードを入力して実行する
   ■Jupyter Notebookのコマンド
 2.3.4 ノートブックを閉じて改めて開く
   ■ノートブックを閉じる
   ■ノートブックを開く
 2.3.5 Jupyter Notebookのメニューを攻略する
   ■[File]メニュー
   ■[Edit]メニュー
   ■[View]メニュー
   ■[Insert]メニュー
   ■[Cell]メニュー
   ■[Kernel]メニュー
 2.4 Google Colabを便利に使おう!
 2.4.1 Googleドライブ上のColab専用のフォルダーにノートブックを作成する
   ■ノートブックの作成
 2.4.2 セルにコードを入力して実行する
 2.4.3 Colabノートブックの機能
   ■[ファイル]メニュー
   ■[編集]メニュー
   ■[表示]メニュー
   ■[挿入]メニュー
   ■[ランタイム]メニュー
   ■[ツール]メニュー
   ■GPUを有効にする
 2.5 Pythonの演算処理
 2.5.1 変数を使って演算する
 2.5.2 Pythonが扱うデータの種類
   ■ソースコードに説明文を書く
   COLUMN リストの中に要素製造装置を入れる(内包表記)①
 2.6 Pythonのリスト
 2.6.1 リストを作る
 2.7 if文とfor文
 2.7.1 if文
 2.7.2 条件式を作るための「比較演算子」
 2.7.3 if…elseで処理を分ける
 2.7.4 for文
 2.8 関数
 2.8.1 処理だけを行う関数
 2.8.2 引数を受け取る関数
 2.8.3 処理結果を返す関数
 2.9 クラス
 2.9.1 メソッド
 2.9.2 オリジナルのクラスを作る
   ■オブジェクトを作成する(クラスのインスタンス化)
 2.9.3 オブジェクトの初期化を行う__init__()
 2.9.4 インスタンスごとの情報を保持するインスタンス変数
   COLUMN リストの中に要素製造装置を入れる(内包表記)②

3章 ディープラーニングの数学的要素
 3.1 ニューラルネットワークのデータ表現:テンソル
 3.1.1 NumPyのスカラー(0階テンソル)
 3.1.2 NumPyのベクトル(1階テンソル)
 3.1.3 NumPyの行列(2階テンソル)
 3.1.4 3階テンソルとより高階数のテンソル
 3.2 ニューラルネットワークを回す(ベクトルの演算)
 3.2.1 ベクトルの算術演算
 3.2.2 ベクトルのスカラー演算
 3.2.3 ベクトル同士の四則演算
   ■ベクトル同士の加算と減算
 3.2.4 ベクトルのアダマール積を求める
 3.2.5 ベクトルの内積を求める
 3.3 ニューラルネットワークを回す(行列の演算)
 3.3.1 行列の構造
 3.3.2 多次元配列で行列を表現する
 3.3.3 行列のスカラー演算
 3.3.4 行列の定数倍
 3.3.5 行列の成分にアクセスする
 3.3.6 行列の成分同士の加算・減算をする
 3.3.7 行列のアダマール積
 3.3.8 行列の内積を求める
   ■行列同士の内積を求めてみる
 3.3.9 行と列を入れ替えて「転置行列」を作る
 3.4 微分
 3.4.1 極限(lim)
 3.4.2 微分の基礎
 3.4.3 微分をPythonで実装してみる
   ■数値微分で関数を微分してみる
   ■プログラムの実行結果
 3.4.4 微分の公式
 3.4.5 変数が2つ以上の場合の微分(偏微分)
 3.4.6 合成関数の微分
   ■合成関数のチェーンルールの拡張
   ■積の微分法

4章 ニューラルネットワークの可動部(勾配ベースの最適化)
 4.1 ロジスティック回帰を実装した単純パーセプトロンで二値分類を行う
 4.1.1 活性化関数による「発火」の仕組み
 4.1.2 シグモイド関数
   ■シグモイド関数(ロジスティック関数)
   ■シグモイド関数の実装
 4.1.3 シグモイド関数を活性化関数にしてパラメーターを最適化する
   ■最尤推定法と尤度関数
   ■対数尤度関数を微分しやすいように、両端に対数をとる
   ■対数尤度関数を変形してクロスエントロピー誤差関数にする
   ■対数尤度関数の微分
   COLUMN シグモイド関数の微分
   ■パラメーターの更新式の導出
 4.1.4 勾配降下法の考え方
   ■学習率の設定
   ■勾配降下法の更新式
 4.1.5 単純パーセプトロンで論理ゲートを実現する
   ■Pythonの標準仕様でAND、NAND、ORゲートを実装する
 4.2 XORゲートを多層パーセプトロンで実現する
 4.2.1 多層パーセプトロンによるXORゲートの実現
   ■XORゲートの実現には、線形分離不可能な二値分類が必要
   ■多層パーセプトロンの構造
 4.2.2 TensorFlowスタイルによるXORゲートの実装
   ■隠れ層(第1層)の作成
   ■バイアス、重みの初期化方法
   ■出力層(第2層)の作成(データフローグラフ)
   ■順伝播処理を行うcall()メソッド
   ■BinaryCrossentropyオブジェクトとSGDオブジェクトの生成
   ■バックプロパゲーションを実施するtrain_step()関数の定義
   ■学習を行う
 4.2.3 KerasスタイルによるXORゲートの実装
   ■モデルの作成
   ■モデルの学習
   ■学習結果の確認
 4.2.4 PyTorchによるXORゲートの実装
   ■モデルの定義
   ■モデルの生成
   ■損失関数とオプティマイザーの生成
   ■勾配降下アルゴリズムによるパラメーターの更新処理
   ■学習を行う
   ■学習結果の確認

5章 ニューラルネットワーク(多層パーセプトロン)
 5.1 フィードフォワードニューラルネットワーク(FFNN)
 5.1.1 ニューラルネットワークにおける順方向への伝播
   ■FFNNに必要な関数群を実装する
   ■入力層→第1層
   ■第1層→第2層
   ■第2層→出力層
   ■第3層
 5.2 バックプロパゲーションを利用した重みの更新
 5.2.1 誤差が逆方向に伝播される流れを見る
 5.2.2 行列の掛け算で誤差逆伝播を一発で計算する
   ■一種の正規化因子である行列式の分母を消してしまう
 5.2.3 バックプロパゲーション(誤差逆伝播法)
   ■出力層の重みを更新する(2乗和誤差の場合)
   ■出力層の重みの更新(シグモイド関数を用いるときのクロスエントロピー誤差関数の場合)
   ■出力層の重みの更新(ソフトマックス関数を用いるときのクロスエントロピー誤差関数の場合)
   ■出力層から1つ手前の層の重みを更新する
   ■重みの更新式を一般化する
 5.3 ニューラルネットワークの作成
 5.3.1 作成するニューラルネットワークの構造
 5.3.2 初期化メソッド__init__()、weight_initializer()、sigmoid()、softmax()の作成
   ■重みの初期値について考える
 5.3.3 入力層の処理
 5.3.4 隠れ層の処理
 5.3.5 出力層の処理
   ■ソフトマックス関数
 5.3.6 ニューラルネットワークの順伝播部を完成させる
 5.3.7 バックプロパゲーションによる重みの更新
   ■出力層の重みの更新
   ■隠れ層の重みの更新
 5.3.8 テストデータを評価するevaluate()メソッドの定義
 5.3.9 Python版ニューラルネットワークの完成
 5.4 ファッションアイテムの画像認識
 5.4.1 Fashion?MNISTデータセットのダウンロード
 5.4.2 Fashion?MNISTデータの前処理
   ■画像データの前処理
   ■正解ラベルの前処理
   COLUMN MNISTデータとFashion-MNISTデータ
 5.4.3 ニューラルネットワークでファッションアイテムの学習を行う
 5.4.4 ニューラルネットワークの学習精度を検証する
 5.5 TensorFlowスタイルによるニューラルネットワークの構築
 5.5.1 Fashion-MNISTデータセットの用意
 5.5.2 2層ニューラルネットワークでファッションアイテムの画像を認識する
   ■確率的勾配降下法
   ■ReLU関数
   ■隠れ層(第1層)
   ■出力層(第2層)
   ■モデルの定義を完成させる
   ■損失関数とオプティマイザーの生成
   ■パラメーターの更新処理
   ■モデルを検証する
   ■学習の早期終了判定を行うEarlyStoppingクラス
   ■訓練データから検証用のデータを抽出する
   ■学習の実行
   ■損失と精度の推移をグラフにする
 5.5.3 ドロップアウトでオーバーフィッティングを回避する
   ■隠れ層の出力にドロップアウトを適用する
   ■ドロップアウトを適用した結果を確認する
 5.6 Kerasによるニューラルネットワークの構築
 5.6.1 Kerasを用いたニューラルネットワークの構築
   ■Fashion-MNISTデータセットの読み込みと加工
   ■Kerasスタイルによるニューラルネットワークの実装
   ■学習を実行し、テストデータで検証する
   ■損失、正解率をグラフにする
 5.7 PyTorchを使ってニューラルネットワークを構築する
 5.7.1 データの読み込みと前処理、DataLoaderオブジェクトの生成まで
   ■データの加工処理を担うTransformオブジェクトの生成
   ■データセットの読み込み
   ■DataLoaderオブジェクトの生成
 5.7.2 2層ニューラルネットワークでファッションアイテムの画像を認識する
   ■モデルの作成
   ■損失関数とオプティマイザーの生成
   ■パラメーターの更新を行うtrain_step()関数の定義
   ■テストデータでモデルの評価を行うtest_step()関数の定義
   ■早期終了判定を行うEarlyStoppingクラス
   ■学習を行う

6章 画像認識のためのディープラーニング
 6.1 ニューラルネットワークに「特徴検出器」を導入する(畳み込みニューラルネットワーク)
 6.1.1 2次元フィルターで画像の特徴を検出する
   ■2次元フィルター
   ■2次元フィルターで手書き数字のエッジを抽出してみる
 6.1.2 サイズ減した画像をゼロパディングで元のサイズに戻す
 6.1.3 Kerasスタイルによる畳み込みニューラルネットワーク(CNN)の構築
   ■入力層
   ■畳み込み層
   ■Flatten層
   ■出力層
   ■畳み込みニューラルネットワークのプログラミング
   ■畳み込みニューラルネットワーク(CNN)で画像認識を行う
 6.2 TensorFlowスタイルによるCNNの構築
   ■ライブラリのインポートとデータセットの読み込み
   ■畳み込みニューラルネットワーク(CNN)の作成
   ■損失関数とオプティマイザーの生成からEarlyStoppingクラスの定義まで
   ■学習の実行
 6.3 PyTorchによるCNNの構築
   ■データの準備からデータローダーの作成まで
   ■モデルの定義
   ■モデルの生成
   ■損失関数とオプティマイザーの生成
   ■train_step()関数の定義から早期終了判定を行うクラスの定義まで
   ■学習を行う
 6.4 プーリングで歪みやズレによる影響を回避する
 6.4.1 プーリングの仕組み
 6.4.2 プーリング層とドロップアウトを備えた畳み込みネットワークの構築
 6.4.3 TensorFlowスタイルによるプログラミング
   ■データの読み込みと前処理
   ■モデルの定義
   ■損失関数とオプティマイザーの生成からEarlyStoppingクラスの定義まで
   ■学習を行う
 6.5 Kerasスタイルでプーリングを実装したCNNを構築する
 6.6 PyTorchによるプーリングを実装したCNNの構築
   ■データの読み込み、前処理からデータローダーの作成まで
   ■モデルを定義してモデルオブジェクトを生成する
   ■損失関数とオプティマイザーの生成
   ■train_step()関数の定義から早期終了判定を行うクラスの定義まで
   ■学習を行う
   COLUMN sparse_categorical_crossentropy

7章 一般物体認識のためのディープラーニング
 7.1 カラー画像を10のカテゴリに分類したCIFAR-10データセット
 7.1.1 一般物体認識のデータセット「CIFAR-10」を題材にする
 7.1.2 KerasでダウンロードしたCIFAR-10のカラー画像を見る
 7.1.3 一般物体認識のためのCNNの構造
 7.1.4 TensorFlowスタイルでプログラミングしたCNNに飛行機、自動車、イヌ、ネコなどの10種類の画像を認識させてみる
   ■畳み込みネットワークの構築
   ■損失関数とオプティマイザーの生成
   ■学習を実行する関数の定義
   ■モデルの検証を行うvalid_step()関数の定義
   ■学習の早期終了判定を行うクラスの定義
   ■CIFAR-10の画像を学習させる
   ■誤差と精度をグラフにする
 7.1.5 KerasスタイルでプログラミングしたCNNで飛行機、自動車、イヌ、ネコ…を認識させる
   ■CIFAR-10データセットのダウンロードと前処理
   ■CNNを構築する関数の定義
   ■KerasスタイルのCNNを用いてCIFAR-10を学習する
 7.1.6 PyTorchでCIFAR-10の画像認識を行う
   ■CIFAR-10をダウンロードして前処理を行う
   ■モデルを定義する
   ■損失関数とオプティマイザーの生成、学習と評価を行う関数の定義
   ■学習を行う
 7.2 カラー画像に移動、回転などの処理を加えてデータの水増しを行い、
   認識精度を90%に引き上げる
 7.2.1 データのスケールを小さくして処理時間をできるだけ短縮させる
 7.2.2 訓練データに過剰に適合してしまうのを避ける
   ■出力層の場合の正則化項を適用した重みの更新式
 7.2.3 KerasスタイルによるCNNの作成
   ■訓練用の画像データを水増しして認識精度を引き上げる
   ■画像をランダムに回転させる
   ■画像を平行に移動する
   ■画像を垂直方向に移動する
   ■画像をランダムに拡大
   ■画像を左右反転
   ■画像を上下反転
   ■画像の色相をランダムに変化させる
 7.2.4 画像を拡張処理して精度90%を達成する(Keras)
   ■学習を行うtrain()関数の定義
   ■学習を実行する
   ■損失と精度、学習率の推移をグラフにする
   ■学習結果を保存する
   ■画像を入力して認識させてみる
 7.2.5 画像を拡張処理して精度90%を達成する(TensorFlow)
   ■データの読み込みと前処理
   ■モデルの生成を行う
   ■損失関数、オプティマイザー、学習/評価を行う関数の用意
   ■学習を実行する関数と検証を行う関数の定義
   ■データに拡張処理を行い学習する
 7.2.6 画像を拡張処理して精度90%を達成する(PyTorch)
   ■CIFAR-10をダウンロードして前処理を行う
   ■モデルを定義する
   ■損失関数とオプティマイザーの生成、学習と評価を行う関数の定義
   ■学習を行う

8章 人間と機械のセマンティックギャップをなくす試み
 8.1 CNNで「特徴認識」に近い二値分類、「Dogs vs. Cats」データセットを学習する
 8.1.1 Dogs vs. Cats
   ■データセットのダウンロード
   ■データを前処理して一部の画像を出力してみる
   ■画像を可視化してみる
 8.1.2 ネコとイヌを認識させてみる
   ■データのダウンロード
   ■データジェネレーターを生成する関数の定義
   ■モデルの生成から学習までを実行する関数の定義
   ■学習を行う
 8.2 「転移学習」でイヌとネコを高精度で分類する
 8.2.1 自前のFC層に大規模なデータ学習済みのVGG16モデルを結合する
 8.2.2 ファインチューニングを行って、さらに認識精度を引き上げる
   ■データのダウンロードとデータジェネレーターの生成
   ■ファインチューニングで認識精度を95%まで上げる
   ■VGG16をファインチューニングして学習を実行する関数の定義
   ■学習の実行
   COLUMN Googleドライブにアップロードしたデータを使う
 8.3 アリとハチの画像をVGG16で学習する
   ■データセットをダウンロードして解凍する
   ■データの前処理を行うクラス
   ■オリジナルの画像と前処理後の画像を確認する
   ■画像のファイルパスをリストにする
   ■アリとハチの画像のデータセットを作成するクラス
   ■データローダーの生成
   ■VGG16の読み込み
   ■学習を可能にする層の設定
   ■損失関数とオプティマイザーの生成
   ■学習を行う関数を定義する
   ■学習と検証を行う

9章 ジェネレーティブディープラーニング
 9.1 現在の学習に過去の情報を取り込む(リカレントニューラルネットワーク)
 9.1.1 RNN(リカレントニューラルネットワーク)を理解する
   ■BPTT(Backpropagation Through Time)
 9.1.2 LSTM(Long Short Term Memory:長・短期記憶)
   ■LSTMのファーストステップ
   ■LSTMのセカンドステップ
   ■LSTMのサードステップ
 9.2 LSTMを配置したRNNで対話が正しいかどうかを識別する
 9.2.1 「雑談対話コーパス」、Janomeライブラリのダウンロード
   ■Janomeのインストール
   ■「雑談対話コーパス」のダウンロード
 9.2.2 対話データの抽出と加工
   ■JSONファイルを読み込んで正解ラベルと発話をリストにする
   ■発話テキストを形態素に分解する
   ■単語を出現回数順の数値に置き換える
   ■RNN(LSTM)を構築して発話が破綻しているかを学習する
   ■RNNモデルを構築する
   ■学習する
 9.3 「雑談会話コーパス」の予測精度を上げる
   ■アンサンブルって何?
   ■アンサンブルに使用するモデル
   ■アンサンブルをプログラミングする
   ■多数決のアンサンブルを実行する

10章 OpenCVによる「物体検出」
 10.1 OpenCV
 10.1.1 OpenCVで何ができる?
   ■OpenCVのインストール
 10.2 OpenCVによる物体検出
 10.2.1 人の顔の検出
   ■画像の中から顔の部分を検出する
 10.2.2 瞳の検出
   ■画像の中から瞳の部分を検出する
 10.3 検出した部分を切り取って保存する
 10.3.1 画像から検出した顔の部分を切り出してファイルに保存する

コメント

タイトルとURLをコピーしました