コンピュータビジョンのための実践機械学習

―モデルアーキテクチャからMLOpsまで

[cover photo]
TOPICS
Data Science
発行年月日
PRINT LENGTH
520
ISBN
978-4-8144-0038-6
原書
Practical Machine Learning for Computer Vision
FORMAT
Print PDF EPUB
Ebook
4,620円
Ebookを購入する
Print
4,620円

機械学習モデルを使用して画像に関するさまざまな課題を解くための実践的な解説書。コンピュータビジョンは機械学習で最も注目度の高い分野のひとつです。本書では、機械学習エンジニアやデータサイエンティストを対象に、コンピュータビジョンに関連する機械学習の手法、アーキテクチャ、課題、運用などを網羅的に解説します。読者は、分類、物体検出、セグメンテーション、異常検知、画像生成、キャプション生成といった画像関連の問題を、機械学習で解決する方法を学びます。また、データセットの作成、前処理、モデルの設計、学習、評価、デプロイ、監視といった標準的な機械学習の運用からMLOpsまで同時にマスターできます。日本語版では、コンピュータビジョン領域でのトランスフォーマーモデルの活用や画像生成の新潮流である拡散モデルについてまとめた特別コラムを追加で収録しました。

関連ファイル

目次

賞賛の声
監訳者まえがき
まえがき

1章 コンピュータビジョンのための機械学習
    1.1 機械学習
    1.2 ディープラーニングの使用例
    1.3 まとめ

2章 機械学習モデル
    2.1 機械知覚のためのデータセット
        2.1.1 5-flowersデータセット
        2.1.2 画像データの読み込み
        2.1.3 画像データの可視化
        2.1.4 データセットファイルの読み込み
    2.2 Kerasによる線形モデル
        2.2.1 Kerasモデル
        2.2.2 モデルの学習
    2.3 Kerasを使ったニューラルネットワーク
        2.3.1 ニューラルネットワーク
        2.3.2 ディープニューラルネットワーク
    2.4 まとめ
    2.5 用語集

3章 モデルアーキテクチャ
    3.1 学習済みの埋め込み
        3.1.1 学習済みモデル
        3.1.2 転移学習
        3.1.3 ファインチューニング
    3.2 畳み込みニューラルネットワーク(CNN)
        3.2.1 畳み込みフィルター
        3.2.2 畳み込み層の積み重ね
        3.2.3 プーリング層
        3.2.4 AlexNet
    3.3 深さの追求
        3.3.1 フィルターの因数分解
        3.3.2 1×1の畳み込み層
        3.3.3 VGG19
        3.3.4 グローバル平均プーリング
    3.4 モジュールアーキテクチャ
        3.4.1 Inception
        3.4.2 SqueezeNet
        3.4.3 ResNetとスキップ接続
        3.4.4 DenseNet
        3.4.5 分離畳み込み
        3.4.6 Xception
    3.5 ニューラルアーキテクチャサーチによる設計
        3.5.1 NASNet
        3.5.2 MobileNetファミリー
    3.6 畳み込みを超えて:トランスフォーマーアーキテクチャ
    3.7 モデルの選択
        3.7.1 性能比較
        3.7.2 アンサンブル
        3.7.3 推奨される戦略
    3.8 まとめ
    特別寄稿 畳み込みvs.アテンション?

4章 物体検出と画像セグメンテーション
    4.1 物体検出
        4.1.1 YOLO
        4.1.2 RetinaNet
    4.2 セグメンテーション
        4.2.1 Mask R-CNNとインスタンスセグメンテーション
        4.2.2 U-Netとセマンティックセグメンテーション
    4.3 まとめ
    特別寄稿 物体検出・セグメンテーション領域でのトランスフォーマーの応用

5章 データセットの作成
    5.1 画像の収集
        5.1.1 写真
        5.1.2 イメージング
        5.1.3 PoC
    5.2 データの種類
        5.2.1 チャンネル
        5.2.2 地理空間データ
        5.2.3 音声と動画
    5.3 手作業によるラベル付け
        5.3.1 複数のラベル
        5.3.2 物体検出
    5.4 大規模なラベル付け
        5.4.1 ラベル付け用のユーザーインターフェース
        5.4.2 マルチタスク
        5.4.3 投票とクラウドソーシング
        5.4.4 ラベル付けサービス
    5.5 自動ラベル付け
        5.5.1 関連データからのラベル
        5.5.2 Noisy Student
        5.5.3 自己教師あり学習
        5.5.4 自然発生するラベル
    5.6 バイアス
        5.6.1 バイアスの原因
        5.6.2 選択バイアス
        5.6.3 測定バイアス
        5.6.4 確証バイアス
        5.6.5 バイアスの検出
    5.7 データセットの作成
        5.7.1 データの分割
        5.7.2 TFRecord
        5.7.3 TFRecordの読み込み
    5.8 まとめ

6章 前処理
    6.1 前処理を行う理由
        6.1.1 テンソルの形状変換
        6.1.2 データの質の変換
        6.1.3 モデルの品質向上
    6.2 大きさと解像度
        6.2.1 Kerasの前処理層
        6.2.2 TensorFlow Imageモジュール
        6.2.3 KerasとTensorFlowの併用
        6.2.4 モデルの学習
    6.3 学習と推論のずれ
        6.3.1 関数の再利用
        6.3.2 モデル内部での前処理
        6.3.3 tf.transformを使う
    6.4 データ拡張
        6.4.1 空間的な変換
        6.4.2 色の変更
        6.4.3 情報の削除
    6.5 入力画像の成形
    6.6 まとめ

7章 学習パイプライン
    7.1 効率的なデータの読み込み
        7.1.1 データの効率的な保存
        7.1.2 データ読み込みの並列化
        7.1.3 効率的なデータの前処理
    7.2 モデルの状態の保存
        7.2.1 モデルのエクスポート
        7.2.2 チェックポイントでの保存
    7.3 分散ストラテジー
        7.3.1 ストラテジーの選択
        7.3.2 ストラテジーの作成
    7.4 サーバーレス機械学習
        7.4.1 Pythonパッケージの作成
        7.4.2 学習ジョブの投入
        7.4.3 ハイパーパラメータチューニング
        7.4.4 モデルのデプロイ
    7.5 まとめ

8章 モデルの品質と継続的評価
    8.1 モニタリング
        8.1.1 TensorBoard
        8.1.2 重みのヒストグラム
        8.1.3 デバイスの配置
        8.1.4 データの可視化
        8.1.5 学習イベント
    8.2 モデルの品質指標
        8.2.1 分類用の指標
        8.2.2 回帰用の指標
        8.2.3 物体検出用の指標
    8.3 品質評価
        8.3.1 スライス評価
        8.3.2 公平性のモニタリング
        8.3.3 継続的な評価
    8.4 まとめ

9章 モデルによる推論
    9.1 推論を行う
        9.1.1 モデルのエクスポート
        9.1.2 メモリ上のモデルを使用する
        9.1.3 抽象度の向上
        9.1.4 パフォーマンスの向上
    9.2 オンライン予測
        9.2.1 TensorFlow Serving
        9.2.2 サービング関数の変更
        9.2.3 画像のバイトデータを扱う
    9.3 バッチ予測とストリーミング予測
        9.3.1 Apache Beamのパイプライン
        9.3.2 バッチ予測のマネージドサービス
        9.3.3 オンライン予測の呼び出し
    9.4 Edge ML
        9.4.1 制約と最適化
        9.4.2 TensorFlow Lite
        9.4.3 TensorFlow Liteの実行
        9.4.4 画像バッファの処理
        9.4.5 フェデレーテッドラーニング
    9.5 まとめ

10章 本番環境における機械学習のトレンド
    10.1 機械学習パイプライン
        10.1.1 パイプラインの必要性
        10.1.2 コードベースのコンテナ化
        10.1.3 コンポーネントの作成
        10.1.4 コンポーネントの接続
        10.1.5 実行の自動化
    10.2 説明可能性(eXplainable AI:XAI)
        10.2.1 手法
        10.2.2 説明可能性の追加
    10.3 ノーコードでのコンピュータビション
        10.3.1 なぜノーコードツールを使うのか?
        10.3.2 データの読み込み
        10.3.3 学習
        10.3.4 評価
    10.4 まとめ

11章 より高度な課題
    11.1 物体計測
        11.1.1 基準となる物体
        11.1.2 セグメンテーション
        11.1.3 回転補正
        11.1.4 比率と計測値
    11.2 カウンティング
        11.2.1 密度推定
        11.2.2 パッチの抽出
        11.2.3 入力画像のシミュレーション
        11.2.4 回帰
        11.2.5 予測
    11.3 姿勢推定
        11.3.1 PersonLab
        11.3.2 PoseNetモデル
        11.3.3 複数の姿勢の識別
    11.4 画像検索
        11.4.1 検索の分散処理
        11.4.2 高速検索
        11.4.3 より優れた埋め込み
    11.5 まとめ

12章 画像生成とテキスト生成
    12.1 画像の理解
        12.1.1 埋め込み
        12.1.2 補助的な学習タスク
        12.1.3 オートエンコーダ
        12.1.4 変分オートエンコーダ
    12.2 GANによる画像生成
        12.2.1 敵対的生成ネットワーク(GAN)
        12.2.2 GANの改良
        12.2.3 画像から画像への変換
        12.2.4 超解像
        12.2.5 画像の修正(インペインティング)
        12.2.6 異常検知
        12.2.7 ディープフェイク
    12.3 画像キャプション生成
        12.3.1 データセット
        12.3.2 キャプションのトークナイズ
        12.3.3 データセットの作成
        12.3.4 キャプション生成モデル
        12.3.5 学習
        12.3.6 予測
    12.4 まとめ
    特別寄稿 画像生成の新潮流

あとがき
索引

コラム目次 
    5-flowersデータセットについての注意点
    画像収集作業の標準化
    テンソルとは何か?
    確率、オッズ、ロジット、Sigmoid、Softmax
    勾配降下法
    なぜラベルの表現方法が2つあるのか?
    画像回帰
    Kerasの事前学習済みモデル
    104 flowersデータセット
    畳み込みフィルターはなぜ機能するのか?
    AlexNetの概要
    VGG19の概要
    InceptionV3の概要
    SqueezeNetの概要
    ResNetの概要
    DenseNetの概要
    Xceptionの概要
    NASNetの概要
    MobileNetV2の概要
    EfficientNetの概要
    アップコンボリューション
    その他の人気のモデル
    入力データとしてのメタデータ
    tf.einsum
    コンピュータビジョン技術を用いた自然言語処理
    柔軟性と保守性のバランス
    スパーステンソルとは?
    前処理をする場所
    処理速度への影響の測定
    tf.py_function()で純粋なPythonコードを呼び出す
    TensorFlow関数のシグネチャ
    コンテナの利用
    重みの分布はどうあるべきか?
    さまざまな説明可能性の手法
    よく使われるKeras層の逆演算