はじめに
世はまさに、大AI時代!!
特に2025年からは、フィジカルAIと呼ばれる「見る」「考える」「動かす」を連動させたAI技術が盛り上がっています。
このフィジカルAIの入口にあたる「見る」を担当する画像AIは、10年前のAIブーム黎明期から様々な手法開発が続き、その全貌を理解することが難しくなっています。だからこそ今、流行を追うだけでなく、基礎から本質的に理解することの価値が高まっています。
本記事はそんな
「トレンドに乗り遅れたくない…でも表面的な理解にとどめたくない」
という方が、最短経路で画像AIの理論と実装を網羅的に学習できることを目指していきます。
対象読者
以下の方を対象とします。
- 画像AI(特にCNN、Vision Tranformer等の基幹となる技術)の理論を論理的飛躍のないようざっくり理解したい方
- Pythonがある程度 (関数、クラス等の文法が分かる)使える
- 高校レベルの数学 (行列、微分記号の見方)を知っている
- 機械学習に関する初歩的な知識 (学習と推論、説明変数と目的変数、分類と回帰の違いが分かる)がある
論理の飛躍がないよう理解するためには最低限必要な知識となるため、各自勉強してください・・・だけだと困る人も多いと思うので、以下に学習ガイド記事を作りました
サンプルコード
以下の3つのGitHubリポジトリに分けて、本記事のサンプルコード(Python/Jupyter形式)をアップロードしています。
1章のサンプルコード:NumPyベースのスクラッチ実装
2-6章のサンプルコード:実務でも使えるPyTorch / Transformers / 自動運転向けAIの実装法を解説
7-9章のサンプルコード:生成AIの実装・活用法を解説
目次
1. ニューラルネットワーク基礎編
1-1 画像AIの全体像
1-2 事前知識とニューラルネットワークの概要
1-3 ニューラルネットワークの学習
1-4 最適化アルゴリズムと学習率
1-5 過学習と正則化
1-6 損失関数とAIのタスク設計
1-7 CNN(畳み込みニューラルネットワーク)とDeep Learning
1-8 ニューラルネットワークと画像AIの歴史
1-3補足:誤差逆伝播法の数式解説
1-5補足:Batch Normalizationの数式解説とスクラッチ実装
2. PyTorch基礎編
2-1: PyTorchの基礎
2-2: PyTorchの環境構築
2-3: PyTorchの学習・推論の流れ
2-4: データ拡張(Data Augmentation)
2-5: 特徴抽出と転移学習・ファインチューニング
2-6: PyTorchの学習高速化・安定化テクニック
2-7: PyTorchのマルチGPU学習
2-8: 推論の高速化・共通化フレームワーク
2-9: DockerによるPyTorch環境構築
2-10: NGC PyTorchコンテナによる環境構築
3. 画像認識の各種タスク
3-1: 画像向けAIタスクまとめ
3-2: CNNの高速化のための工夫
3-3: 物体検出
3-4: セマンティックセグメンテーション
3-5: インスタンス・パノプティックセグメンテーション
3-6: その他の教師あり画像認識タスク
3-7: 画像向けAIの性能評価
3-8: 可視化・性能評価用ライブラリの作成
3-9: YOLOの学習・推論ワークフロー実践
3-10: MMDetectionの使い方
4. 画像認識の実践知識
4-1: 画像認識向けデータセット
4-2: 画像認識モデルの各種フレームワーク
4-3: アノテーションの基礎知識
4-4: CVATによるアノテーション環境構築
4-5: Optunaによるパラメータチューニング
4-6: MLFlowによる実験管理
4-7: PyTorch Lightningによる実装の簡略化
4-8: PyTorch Lightningのタスク別実装
4-9: 学習がうまくいかないときのデバッグ術
5. Vision Transformer
5-1: Vision Transformer概要
5-2: Swin TransformerとViTの改良
5-3: Hugging Face Transformersの使い方
5-4: Transformerベースの分類・バックボーンモデル
5-5: Transformerベースの物体検出モデル
5-6: Transformerベースのセグメンテーションモデル
6. 3D向け手法
6-1: 3DセンサとAIモデル概要
6-2: MMDetection3Dの使い方
6-3: 自動運転向けデータセット
6-4: nuScenesの可視化
6-5: 3D物体検出(LiDARベースの手法)
6-6: 3D物体検出(カメラベースの手法)
6-7: 3D物体検出(BEVFormer)
6-8: 3D物体検出(BEVFusion)
6-9: End-to-End自動運転AI(UniAD)
6-10: 深度推定
6-11: 3次元再構成
7. 教師なし学習・生成モデル
7-1: 教師あり学習と教師なし学習
7-2: オートエンコーダ
7-3: 生成モデルとVAE(変分オートエンコーダー)
7-4: GAN(敵対的生成ネットワーク)
7-5: 正規化フロー
7-6: 異常検知向けモデル
7-7: Diffusion(拡散)モデル
7-8: 動画生成AI(Video Generation)
8. 基盤モデルとVLM
8-1: 基盤モデル
8-2: マルチモーダルAIとVLM
8-3: CLIPと画像・テキストの共通空間
8-4: DINOv2と自己教師あり学習
8-5: Segment Anything Model (SAM)
8-6: VLMの限界と課題
9. フィジカルAI
9-1: フィジカルAIとは何か
9-2: 自動運転向けフィジカルAIとVLA
9-3: ロボット向けフィジカルAI
9-4: 世界モデル
9-5: フィジカルAI向けフレームワーク(非NVIDIA)
9-6: フィジカルAI向けフレームワーク(NVIDIA)
9-7: フィジカルAIの将来展望
各記事要約
各記事の要約を以下にまとめます
(3章以降の要約は執筆しながら追加していきます)
1章: ニューラルネットワーク基礎編
画像AIモデルの全体像について触れたのち、その屋台骨となるニューラルネットワークの基礎とAIモデルとの関係を解説します。この章はこの分野のバイブルと言える名著『ゼロから作るDeep Learning』(通称「ゼロつく」)の内容をベースに、数式解説や補足解説等を加えています
画像AIの全体像に関して、ニューラルネットワーク、ディープラーニング、CNN、Transformer、基盤モデル、VLM、フィジカルAI等のキーワードの繋がりに触れながら解説します
ニューラルネットワークの基礎知識を解説します(ゼロつくの1〜3章に該当)
ニューラルネットワークが高性能を発揮できる理由である、誤差逆伝播法による効率的な学習メカニズムを紹介します(ゼロつくの4〜5章に該当)
学習を効率化してモデルの性能UPの繋げる各種手法を紹介します(ゼロつくの6章に該当)
ニューラルネットワーク学習の大敵である、学習の不安定性と過学習を防止する重要テクニックを紹介します(ゼロつくの6章に該当)
ニューラルネットワークベースのAI(すなわちほぼ全てのAIモデル)の学習の根幹となる、タスクに基づく損失関数の設計コンセプトについて解説します
1-7 CNN(畳み込みニューラルネットワーク)とDeep Learning
画像認識におけるニューラルネットワークの性能を飛躍的に高め、現在まで続くAIブームの最初の牽引役となったCNNの原理を紹介します(ゼロつくの7〜8章に該当)
ニューラルネットワークを中心とした画像AIの歴史を紹介し、どのような技術が登場し性能発展に寄与したかを概説します。
2章: PyTorch基礎編
画像AIの実装に必要なフレームワークであるPyTorchの基礎と各種テクニックを解説します
画像AIを始めとした現代のAIモデル実装のデファクトスタンダードとなっている、PyTorchの概要について解説します。
PyTorchの環境構築方法を解説します。ここではホストにvenvで作成した仮想環境にPyTorchをインストールする方法を紹介します(Dockerを使用しない)。
PyTorchの環境構築・実装には様々な流儀がありますが、一般的な環境構築・実装の流れについてサンプルコードを交えて解説します。
データをかさ増しして学習効率を向上させる、データ拡張(Data Augmentation)の概要とPyTorchでの実装方法を解説します。
限られたデータ量・計算資源で高性能を実現する、転移学習とファインチューニングの原理とPyTorchでの実装方法を解説します。
PyTorchでのモデル学習を高速化・安定化する各種テクニックを解説します。
複数のGPUを使用して、マシンパワーにものを言わせた高速学習を実現する方法を解説します。
推論のPyTorch以外との共通化や高速化を実現する、ONNXやTensorRT等の推論向けフレームワークについて解説します。
Dockerを用いて再現性の高いPyTorch環境を構築する方法を解説します。
NVIDIAがチューニングしたDockerイメージであるNGC PyTorchイメージを用いて、高性能かつ互換性問題が出にくいPyTorch環境を構築する方法を解説します
4章: 画像認識の実践知識
モデル性能を最大化するためのパラメータチューニング方法について解説します。
学習履歴を可視化・管理し、チューニングやチーム開発を効率化する方法を解説します。