1. 概要
コンピュータビジョンや,その手段としてのディープラーニング・機械学習を学習するうえで,管理人がおすすめの書籍を,このページでは列挙して紹介する.各書籍について,簡単な書籍紹介を行い,類似書籍間での比較も行いながらカテゴリーごとに列挙していく.
このサイトが主な読者として想定している「中級者層以上」向けの書籍を,主に紹介する.一方で,中級者上位の方々は,部下や学生を指導していると思うので,「初心者の育成に有用な本」の書籍も紹介したい.中級者が主なターゲットであるので,上級者向けしか読まない(読みこなせない)書籍も,対象外とした (例えば Springer Books など).
1.1. まとめ記事の一覧
1つの記事内で,複数の本をおすすめした「まとめ記事」を,以下に列挙する:
以降の各節では,書籍が「目的が同じグループ」ごとに分けて,著者のおすすめのコンピュータビジョン関連書籍を紹介していく.オススメ記事を個別に書いてあるものは,その紹介記事へのリンクも脇に添えてある.
1.2 書籍紹介記事の一覧
このページの2節以降で概要紹介していく書籍の「個別の紹介記事」を,ここで先にリスト化しておきます.
- Pythonで学ぶ画像認識 (機械学習実践シリーズ) のレビューと推薦【おすすめ書籍の紹介】
- 画像認識 (機械学習プロフェッショナルシリーズ)【おすすめ書籍紹介】
- ディジタル画像処理 [改訂第二版] 【おすすめ書籍紹介】
2. 理論と実践を両方学べる書籍 [とくにオススメ!]
2節では「Pythonで学ぶ画像認識 – 機械学習実践シリーズ」を中心に,実践と理論の両方が学べるバランスのよい本を紹介する.
2.1 Pythonで学ぶ画像認識 機械学習実践シリーズ
この「Pythonで学ぶ画像認識 – 機械学習実践シリーズ」は,インプレス社「機械学習実践シリーズ」の「画像認識」が紹介されている本です.中級者以上向けの本で「PyTorchを用いた定番手法の実装力強化」がターゲットで
詳しくは,上記リンク先の紹介記事に述べているとおりですが,本サイトと内容のかぶりや「応用力重視」の志向性が似ているため,相互連携性を強化している書籍です.このサイトの多くの画像認識系の記事の下部「関連書籍」に,この書籍中での対応しているページへのリンクを記述しています.このサイトとぜひセットで愛用してほしい良書です
3 理論を主に学べる書籍
3.1. 機械学習プロフェッショナルシリーズ
- 画像認識(機械学習プロフェッショナルシリーズ) 原田達也 (2017)
- 深層学習(機械学習プロフェッショナルシリーズ) 改定第二版. 岡谷貴之 ,講談社 (2022)
3.2 「ディジタル画像処理」
ディジタル画像処理 [改訂第二版] ディジタル画像処理編集委員会
- 日本のCV業界の先生方が執筆してきた伝統あるテキストである.コンピュータビジョン系の各問題,およびその(伝統的な)解法や,モデル理論を一通り知る用途に非常に役立つ.
- ただし,各章は,それら伝統的問題設定の紹介と古典的解法が中心である.よって,ディープラーングでならどう解くか(学習するか)の話までは,記述がない.
- 深層学習については13章のみなので,それ以外の章には「ディープラーニングだとどのように解くようになったか」の話は含まれていない.
- 長く改訂がなかった初版であったが,改定1版(2015)を挟んだのち,この改定2版(2020)が発売された.つまり,現在の[改訂第二版](2020)は,合計3版目である.
3.3 PML-book 新版2冊
- [Introduction(2022)] “Probabilistic Machine Learning: An Introduction“, (導入編) Kevin. P. Murphy, MIT press, March, 2022. (導入編の公式サイト)
- [Advanced Topics(2023)] “Probabilistic Machine Learning: Advanced Topics“, (応用編) Kevin. P. Murphy, MIT press, 2023.(応用編の公式サイト)
おなじみ Kevin P. Murphy氏の機械学習テキストの新シリーズ2冊である.
Murphy氏の機械学習テキストの前作であるMLAPP(2012)(紹介記事)は,その登場以前の時代の機械学習テキストを更新するものであった.そのMLAPP (2012)が,10年の時を経て前編・後編の新構成で発売されることとなったのが「1. Introduction (2022)」と「2. Advanced Topics (2023年 発売予定)」の2冊である.
それ以前は,アメリカを中心とした,大学の(統計的)機械学習の講義でよく用いられていたテキストとしては (1) PRML(翻訳版:パターン認識と機械学習) と (2) Elements of Statistical Learning (翻訳版:統計的学習の基礎) の2つが定番であった.MLAPP(2012)は,それら2つを差し替えて,標準的な,大学での機械学習テキストとして加わったものであった.
3.2.1 PML, Introductionの一部内容(CV専門の方むけ)
コンピュータビジョン系の方に向けて,導入編(Introduction ,2022)の収録内容のうち,ビジョン関連の内容の感想だけについて,手短にお知らせしたい (のちに,ビジョン系の章に限らない,「本全体の紹介記事記事」も書きたいところではある).
「前編 Introduction(2022)」は,前作MLAPP(2012)と比べると,今の時代に合わせてシンs農学週の章がかなり増えている.それでいて,非深層学習の機械学習の基礎的なところも,前作同様しっかりと網羅されている.また,前編Introduction(2022)は,前作では取り上げていたものの今は使わなくなった技術や,後編Advanced Topics(2023)に移動したものは,省かれている
※ 後編のAdvanced Topics(2013) の公式ページでも,既にTable of ContentsとドラフトPDFが公開されている.2冊の内容の違いについては,そのドラフトが参考になる.
導入編「1. Introduction」は(学部4年生向けの)入門的内容の構成である.yって,MLAPP(2012)と比べて,内容も平易化・簡潔にされている (もともと前作MLAPPも,簡潔かつ本質的な説明で非常に分かりやすいテキストであった).また,前作ではタスクや分野ごとの応用モデルの話は少なかったが,導入編では,画像認識や自然言語処理向けのDeepモデルも,Deep Learning系の章 (Ⅲ節「Deep Neural Networks」と,V節「Beyond Supervised Learning」のうち19,20,23章)で,多く取り上げられている.
前編Intoduction(2022)のAmazonでの英語のレビューを読んでいただくとわかるように,前作同様,Murphy氏は「最重要な内容だけを捉えて,しかもそれらを数珠繋ぎして再構成する」のがMLAPP(2012)では非常に巧みであった (私もこのサイトの執筆・設計に,多いに影響を受けている).今回の 前編 「Introduction (2022)」でも,その構成の良さと説明のわかりやすさが達成されている.
ただし,Introduction (2022) は,深層学習以後の現在,かなり対象範囲が広くなってしまったせいもあり,「Introduction」構成にして,かいつまんだ内容のみを手広く浅く紹介している.よって,画像認識の応用系(物体検出やセマンティックセグメンテーションなど)についての話は,ほんの概要紹介のみに終わっている(14章「Neural Network for Images」).
一方で,ディープニューラルネットワークの中でも「機械学習」というテーマにより近いself-supervised learningや,Graph Neural Networkなどについては,この導入編でも,やや詳しくめに最新のモデルが簡潔に紹介・整理されていて,まだここに詳しくない中~上級者の方も,自学自習に使いやすいはず (「V. Beyond Supervised Learning」のうち,19章「Learning with fewer labeled examples」と 23章「Graph Embeddings」).
また,Transformerなど,近年重要な機械学習モデルについては,踏み込んだ詳しいモデルの解説が新規追加されている(14章「Neural Network for sequences」).
この紹介記事が参考になって購入する方は,Introduction(Amazon)経由で購入していただけるとありがたい.
ちなみに,後編は「Ⅱ章(Probabilistic) Inference」 と「Ⅲ章 Prediction」が,明確に2つの章で分離されている.両者の区別がきちんと構成から身につくようになる意味で,非常によいテキスト構成である.
※ 私も,PML bookが好きなのもあり,このサイトでも「記事の階層構造を見るだけで,関係性が身に付く」ことを(特に用語集で)強く意識している.
4. 理論と実装を同時に学べる書籍
4.1 チームカルポの,画像認識の実装入門書籍 2冊 🔰
- 物体・画像認識と時系列データ処理入門 [TensorFlow2/PyTorch対応第2版] NumPy/TensorFlow2(Keras)/PyTorchによる実装ディープラーニング チームカルポ.秀和システム 2021/02/20.
- 物体検出とGAN、オートエンコーダー、画像処理入門 PyTorch/TensorFlow2による発展的・実装ディープラーニング チームカルポ.秀和システム 2021/08/31.
短時間で画像からのCNN物体認識(上巻),物体検出・GANとVAE(下巻)の,実装方法が学べる書籍である.実質的に上下巻構成であるのに,上・下巻構成のシリーズである.入門者は,これら2冊セットを順にこなすことをオススメしたい.
また,PyTorchとTensorflow2・Keras入門もかねているので, 社内や研究室の,新人向けのチュートリアルとして非常に使いやすい.2冊とも,研究者から見ると「初歩的で古めの内容」の2冊かもしれないが,私は入門者むけの初期学習に,この2冊を強くお薦めしている.
とりあえず早足でPytorch/Tensforflow/Kerasで一通りモデルを実際に動かすところまでいくことが可能であるのが,良い点である.さっさと基本モデルを作って試せるので,細かい理論の深い理解までは,多少後回しにして(もしくは他のテキストと同時に勉強して),まずは手を動かしながらさっさと学習してみる目的に,この2冊は非常に向いている.とはいいながら,下巻のSSD部分は非常に詳細な説明があり,論文だけ読むよりも,「物体検出の基本」について深い理解が得られると思う.
私のように「即実践,やるなかで覚えていけば良い」の育成方針をマネージャが持つチームや,「作って少しずつわかっていく」タイプの進め方が好みの方には,自学自習向けに更にオススメできる2冊である.
4.1.1 上巻・下巻の概要紹介
以下,その上・下巻の,簡単な紹介を述べておきたい:
- [上巻]
- 初歩の基礎的な画像認識のコーディングが,PyTorchとTensorflow・Kerasの両ライブのコードでいっぺんに学べる(PyTorchや Tensorflow2の入門におすすめ).
- 管理職や教育担当のシニアマネージャーで,自分でプログラミングするのを離れていた方が「最近のPytorch・Tensorflowのコーディング」を初めて学ぶにも良い.内容の難易度が初歩的で簡単なので,マネジャー層でもさっと読める.
- ただし,エンジニアの著者陣が,内容の解説もなく,天下り式に説明を進めていく書籍である.他の理論よりの書籍や,当サイトなどのWeb解説記事を検索しながらでないと,この本だけでは,理屈や応用が身に付かない.理論も別途勉強しておかないと,応用が効かなくて意味がないので注意(下巻の物体検出・生成モデル編も同様).
- [下巻]
- 上の1巻の書籍の続きとして読める「応用タスク編」である(ここでは「下巻」と呼びたい).
(2022年3月現在に追記):以前は「つくる系テキスト」の元祖であった「ゼロから学ぶシリーズ の1巻」(3.2.4節)を,入門書紹介記事では,私はオススメしていた.しかし,現在は,ここで紹介している「チームカルポの2冊の画像認識コーディングのシリーズ」を代わりにオススメししたい.3.2.4節でも述べるが,「ゼロから作るシリーズ(特に1巻)」は,研究者からすると,内容があまりに古くなってしまって初歩的すぎて,入門で知っておくべき内容までも到達しないのが,入門の最初の一冊とは不向きになった一番の理由である.
ただし,こちらのチーム・カルポの2冊も,「理論的な内容の深い解説」はないので,他の理論系のテキスト (3.1.1節) や,このCVMLエキスパートガイドも,読みなつつ「中身も理解していくよう」にすると良い.ただし,2巻のほうではSSDについて徹底的に,詳しい解説もあるので,論文がうまく読めないひとでも,その解説をもとに「まずはとにかくPythonで作ってみる」ができる良い本である(初心者は全部分かることより,とりあえず色々試していくのも大事なので).
移譲のようにチームカルポの2冊の方が,「内容がもう少し新しめの,画像認識チュートリアル本」になっている.以前は,初心者には「ゼロから作るシリーズ (1),(2)」をオススメしていたが,(2022以降では),既に内容が古くなって改定もないので,得る初級者知識が十分でなくゼロから作るシリーズは非推奨である(PyTorchが学べないのが何より良くない!).よって,代わりに「一番初心者むけの画像認識の初歩が,詳しくカバーされている」「PyTorchなどDLライブラリを用いた学べる」最初にオススメするようになった.
4.1.2 チームカルポの2冊のあと進むならどの本?
チームカルポの本を2冊読了したのちは,Packet Publishingやオライリーなどからも,エンジニア・開発向けの内容が濃い「コードも理論も同時に学べる」書籍が多数発売されているので,それらから自分の目的にあった本を購入するのも,オススメの次の一歩である.
ただ,繰り返すが,腕に自信のある旧帝大レベル以上の学生さんたちの場合は,チームカルポの本や類書で,実装のチュートリアルが終わったら,さっさと自分が取り組む研究課題の,最新研究のgithubコードや,それを元にした自分の研究のコーディングに,いきなり取り組んでいったほうが良い.ハイレベルな教員や先輩学生がいるラボでは,質の高い指導が受けられるので,市販の書籍レベルから順番にこなしていく必要はない.指導者がいない独学者は,テキストで頑張っていくしかない.
4.2 点群処理・ロボット系
4.2.1 詳解 3次元点群処理
詳解 3次元点群処理 Pythonによる基礎アルゴリズムの実装 金崎朝子, 秋月秀一, 千葉直也 , 講談社 (講談社サイエンティフィク), 2022.
点群処理の若手研究者3名による,実装つきチュートリアルテキストの「詳解 3次元点群処理 Pythonによる基礎アルゴリズムの実装 」が,2022年に発売されました.具体的な内容としては「3D点群処理の基礎的内容を,Open3D Pythonでの実装も見せながら詳しく知れる」というものです.3D点群処理については,日本語での決定版書籍がなかったので,点群処理を代表する3人が書かれた本書「待望の書籍」です.(※ その後,Amazonでも高評価レビューが多くみられます)
1~5章が,深層学習以前の点群処理で,終盤の6章が深層学習の導入(PointNetなど)で,7章が「非点群3Dデータ(RGBD・ボクセル・メッシュ)の3D処理」で締めるという構成です.
1~2章は,フィルタリング・可視化などの基礎処理からはじまり,3D特徴点・特徴量ベクトル(3章),ICPでの位置合わせ (4章),物体認識と6DoF姿勢推定(5章),PointNetで深層学習も導入(6章)と,一通りの点群処理基礎を学べる.バランスがよく,非常によい章構成です.
各内容は中級者以上向けに書かれており,ロボットビジョンやコンピュータビジョンについてある程度知っている人でないと,すぐには読み込めない難易度だと思います.一方で,3名とも昔から発表・プレゼンが上手な方々であるゆえ,本書はどの章も解説がわかりやすく,Open3D実装を動かしながら具体的イメージも掴みやすいです.よって,点群処理の初学者でも,学習のハードルを低めてくれるはずです (私が点群処理を始めた頃の,10年前頃に,こういう本が欲しかったです).
秋月先生と,千葉先生については,それぞれ以下のCV最先端でも,関連する記事を書かれているので合わせてチェックしてみてください:
- 秋月先生の記事 → コンピュータビジョン最前線 Winter 2021 「フカヨミ カテゴリレベル姿勢推定 〜 今,最も伸びている3D認識アプローチ!」
- 千葉先生の記事 → コンピュータビジョン最前線 Winter 2022「ニュウモン 点群深層学習 〜 Deepで挑む3Dへの第一歩」
※ 他社の書籍だからか,私が所有している第2刷時点では,このCV最先端2冊へのReferenceはありません
4.3 オライリー本のオススメ書籍
4.3.1 生成Deep Learning
生成 Deep Learning ― 絵を描き、物語や音楽を作り、ゲームをプレイする David Foster , オライリージャパン, 2020
- 実験と可視化が豊富で,図によるモデルの説明も多く,文章や数式の説明も,直感的で非常にわかりやすい.生成モデル初心者でも,各モデルや応用について,仕組みの概要と・コーディング方法について学べる.名著である(英語版のAmazonレビューが参考になる).
- 紹介されている生成モデルとその応用は,VAE(3章) GANとW-GAN(4章),CycleGANとスタイル変換(5章),RNNLMによる文章生成(6章),生成RNNやMuseGANでの自動作曲(7章),強化学習によるゲームプレイ生成(8章)である.
- 今後の展望を示した終章(9章)では, Transformer と (当時の)最新のGAN (Self-attention GAN, StyleGANなど)が,その仕組みだけ紹介されている(この章はコードは無い).
- 以上のように「生成モデルの導入」としては非常に良い書籍である一方,元はコードがTensor Flow 1 ベースのKerasであり,コードに癖があって,あまり読みやすくないのがたまに傷の書籍であった.しかし,現状(2022年1月)では,サンプルコードは,TF2ベースのKerasにアップデートされている.
- (2022年6月追記) 生成系モデルは,例えば正規化フローや,VQ-VAEに,拡散モデルにNERFなどの時代になった現在では,この本の内容は少し古くなってしまった.とはいえ,モデルが古くとも,ビジョンやNLPに音楽に強化学習など,ドメインをまたいで生成モデルを紹介してくれている意味でも,初心者や中級者が入門するにはわかりやすい良い本であると思う(全ドメインでの全体像を得やすい書籍である,という意味).
4.3 Packet Publishing のオススメ書籍
T.B.D
5. 自然言語処理(NLP), Transformer の書籍
ディープラーニングを用いたNLPやTransformerの書籍で,オススメの書籍とその概要を,発売年の時系列順に列挙していく.
5.1 Deep Learning for NLP and Speech Recognition (2019)
Deep Learning for NLP and Speech Recognition (2019).
- 自然言語処理(NLP)と音声認識向けのDeep Learningをまとめた本.CNNの基礎についても簡潔な紹介がある.
- 管理人としても,青木研時代後半にVision-Language研究の立ち上げ中に登場した本なので,個人的にお世話になった本である.Transformerが本格的に流行する以前の内容中心の書籍である.
- アテンションにメモリ型ネットワークや,転移学習(特にドメイン適応)の章,(テキスト処理,音声認識向けの)強化学習の章などが後半にあり,周辺知識を総ざらえできる.seq2seq with attentionについても,簡潔にわかりやすい解説で学べる.
5.2 Getting Started with BERT
Getting Started with Google BERT: Build and train state-of-the-art natural language processing models using BERT , Sudharsan Ravichandiran, Packet publishing, 2020.
- 実用向けのエンジニア向けBERTの本.
- 各BERTモデルの簡潔でわかりやすい説明が,式とブロック図も豊富に使いながら解説されている.
- 序盤のSection1は,huggingfaceのtransformersを用いたBERT学習コードの紹介もある
- TransformerとBERTの基本modelについて詳細な解説がまず行われるその後,BERTの初期の改善モデル群(ALBERT, RoBERTa,DistilBERT, TinyBERTなど)や,各タスクむけのBERTの仕組みが,順に紹介されている(SentenceBERT, BERTSUM, VideoBERTなど).
- 次の5.3節の本の2版が,内容的に更に新しいことも含むものとして2022年に発売されたので,それ以降本書の価値は少し薄まっている.ただし,本書と5.3節の本を両方持っておくと,BERT, GPT-3系のNLPエンジニアには「向かうところ敵なし」である.
5.3 Transformers for Natural Language Processing (2nd Edition)
Transformers for Natural Language Processing (2nd Edition): Build, train, and fine-tune deep neural network architectures for NLP with Python, PyTorch, TensorFlow, BERT, and GPT-3 Packet publishing, Denis Rothman, March, 2022.
NLPエンジニア向け のBERT, GPT-3の書籍です.Transformer系モデルを駆使する必要のある,現代のNLPエンジニアなら,一冊この本を持っていると強力に役立つ本で,ビジョン系の方が,Transformerによる系列変換の基礎や,BERT, GPT-3, T5などに入門する際にも役にたつと思います.説明が詳細かつ,わかりやすいので自学自習にも適しています(※とは言え,NLP専門の方がコーチしてくれる状態で読む方が認識違いはなくベターです).
このサイトの参考書でもある深層学習(第2版)や,このサイトのTransformerの各関連記事(位置符号化やマルチヘッドアテンションなど)と合わせて読んで頂くと,効果倍増だと思います.
- 序盤:まずTransformerの仕組みと,BERTの「事前学習→精密調整」まで導入:
- Transformerの歴史と仕組み(1-2章) (2章のマルチヘッドアテンションの解説と,並列ヘッド処理の図示がわかりやすい)
- BERTのファイン・チューニング(3章)
- RoBERTaのスクラッチからの事前学習(4章)
- 下流タスクへの実施例:およびベンチマークとモデル評価(5章)
- 中盤:代表的な「下流タスク」での応用例を各章で紹介:
- 機械翻訳(系列対系列変換の基本を押さえる)(6章)
- GPT-3の基本とそのファイン・チューニング(7章)
- 専門文章の要約 (T5)(8章)
- 他のNLP代表タスク:固有表現抽出 (10章),質問応答(11章), 感情分析(12章)
- 最後に可視化の話も:(おかげでオライリーのTransformer本より,カバー項目が広い印象):
- BertVizによる,Transformer可視化(14章)
- 15章には,以下のビジョン,V-L向けモデルの話も,少し解説されておりナイス:
- Vision Transformers, CLIP, DALL-E
この「Transformers for Natural Language Processing (2nd Edition)」は,含まれている内容のカバレッジの広さに加えて,序盤のTransformer導入の説明のクオリティが既出の本より高い.上で紹介した「Getting Started with BERT (2020)」よりも,管理人として(エンジニア寄りの方を中心に) 更にオススメできる本が出てきたと思う.
※ この書籍や,類似のBERT,GPT本による「エンジニア向け書籍の充実」で,あまりにもTransformer系モデルが非研究者でも簡単に開発できるようになっている状況だと,管理人は感じる (研究者のアドバンテージは,あとどれくらい?).NLPは,超大量データを持つ企業側が,大学側より更に有利な環境になっていると感じる.その分,個人情報保護のルールやモラルを無視した,大企業や国などの暴走は勘弁して欲しいところである.