コンピュータビジョン・ディープラーニングのおすすめ書籍

1. このページの概要

このページでは,コンピュータビジョンや,その手段としてのディープラーニング・機械学習を学習するための,著者おすすめの書籍を列挙する.各書籍について,簡単な書籍紹介を行い,類似書籍間での比較も行いながらカテゴリーごとに列挙していく.

このサイト(CVMLエキスパートガイド)が,主な読者として想定している「中級者層」を向けの書籍を主に紹介する.「中級者」とは,研究室やコンピュータビジョン開発部隊に配属された初心者(入って1~2年)の方や,トップ研究開発者層の方をのぞいた,広い範囲の「中級レベルの層」の方たちを指している.

ある程度は,研究発表や研究開発経験があり,(シニアの上司がいれば)基本的な研究はある程度できるようになってきているような,ジュニア研究者やエンジニアや,研究発表経験をある程度積んだ「修士〜博士課程の学生」の方々なども,このサイトでは「中級者」とみなしている.ただし,その中級者をめざすための教科書となる入門書は紹介していく.

一方で,入門者や,専門外の人向けに書かれたような「あまりに平易な説明に変換されて,数式表記をなるべく避けていたり,本との基礎までで終る書籍」や,「あまりにも入門的な内容までで終わる書籍」は,専門外の方むけの書籍なので,中級者層向けではないので,紹介しない.また,上級者やプロ向けしか読まないような書籍も対象外としたい(例えば Springer Books など).

2. まとめ記事の一覧

1つの記事内で,複数の本をおすすめした「まとめ記事」を,以下に列挙する:

3. 各書籍を個別に紹介 (目的グループごと)

この3節では,書籍が「目的が同じグループ」ごとに分けて,著者のおすすめのコンピュータビジョン関連書籍を紹介していく.オススメ記事を個別に書いてあるものは,その紹介記事へのリンクも脇に添えてある.

目的グループとしては,【抽象 v.s. 具体】 や【 汎用 v.s. 専門 v.s. 1モデル】の2つの軸を基準に,「理論の習得」,「実践・実装力の習得」,「コンピュータビジョン全般」「画像認識に特化」などで,カテゴリー分けしてある.

3.1 理論を主に学べる書籍

3.1.1 機械学習プロフェッショナルシリーズ

この2冊は,このサイトを大学やWebの講義のようなものに相当するとみなした際の「参考書」「教科書」にあたるものとみなしている:

その理由は,これら2冊が,信頼のおける業界トップ層の研究者のお二方が書かれた,「日本語の」テキストだからである.しかも,内容も相当詳しくて充実している.

このため(2022年2月1日以降に),各用語集の記事下部にある「関連書籍」のセクションにおいて,これら2冊の「記事内容に対応する節番号・ページ数」も記述し始めることとした.これにより,上記2冊を所持している方ほど,このサイトの学習支援効果が増していくことを期待している.

3.1.2 「ディジタル画像処理」

ディジタル画像処理 [改訂第二版] ディジタル画像処理編集委員会

  • CV業界の先生方が,ご自身の得意パートを手分けして執筆してきた,伝統あるテキストである.
  • コンピュータビジョン系の各問題設定,およびその(伝統的な)基礎解法や,モデル理論を一通り知る用途では,非常に役立つ.
  • ただし,各章は,それら伝統的問題設定の紹介と,そのディープラーニング以前での古典的解きかたの紹介が中心である.各章の問題を「ディープラーングでならどう解くか(学習するか)」の話までは,記述がない.深層学習は13章のみであるので,ディープラーニングではどのように解くようになったかの話までは含まれていない.
  • 長く改訂がなかった初版ののちに,改定1版(2015)を挟んだのち,この改定2版(2020)が発売された.よって,現在の[改訂第二版](2020)は,合計3版目である.

3.1.3 Kevin P. Murphy氏のテキスト

欧米の大学・大学院において,「機械学習」という名前の講義で,教科書として使用されることを目的とした,おなじみ Kevin P. Murphy氏の新テキストである.

Murphy氏の前作MLAPP(2012)(このサイトでの紹介記事)は,その登場以前の時代の機械学習テキストを更新するものであった.それ以前は,アメリカを中心とした,大学の(統計的)機械学習の講義でよく用いられていたテキストとして,(1) PRML と (2) Elements of Statistical Learning (翻訳版:統計的学習の基礎) の2つが定番であった.MLAPP(2012)は,それら2つを差し替えて,標準的な,大学での機械学習テキストとして加わったものであったのだが,その本が,10年の時を経て,前編・後編の新構成で,2022年・2023年に発売されることとなったのが「Probablistic Machine Learning」の「Introduction(2022)」と「Advanced Topics(2023 発売予定)」の2冊である.

アメリカの大学では,どの大学に入っても,同じ教科書を用いて,同じレベルのことがどこの大学でどの教員からでも学べるように,「講義レベルや方法が標準化されている」仕組みになっている(日本の小中高のようである).一方,日本の大学・大学院では,各大学や教員が,個別に独自のカリキュラムや講義を組み,その講義資料・スライドも独自に作成するので,参考書として選ぶテキストもバラバラであるのが通例である.

「Introduction」の内容(for コンピュータビジョンが専門の方むけ)

ここでは,コンピュータビジョン系の人に向けて,導入編の収録内容とその内容感を,手短にお知らせしたい(のちほど,ビジョン系の章に限らない,「本全体の紹介記事記事」も書きたいところではある).

Introduction(2022)」は,前作MLAPP(2012)と比べると,今の時代に合わせてDeep Learningの章がかなり増えており,それでいて,非Deep Learning の機械学習の基礎的なところも,前作同様しっかりと網羅されている.また導入編では,前作では取り上げていたが,今は使わなくなった技術や,後編Advanced Topics(2023)に移動したものは,省かれている(後編のAdvanced Topics(2013) の公式ページでも,既にTable of ContentsとドラフトPDFが公開されている.2冊の内容の違いについては,そのドラフトが参考になる).

導入編は(学部4年生向けの)入門的内容の構成であるので,MLAPPと比べて,内容も平易化・簡潔にされている印象である(※ もともと前作MLAPPも,簡潔かつ本質的な説明で非常に分かりやすいテキストであった).また,前作ではタスクや分野ごとの応用モデルの話は少なかったが,導入編では,画像認識系のDeepモデルや,自然言語処理向けのDeepモデルも,Deep Learning系の章(Ⅲ節「Deep Neural Networks」と,V節「Beyond Supervised Learning」のうち19,20,23章)では,新たに多く取り上げている.

前編のAmazonの英語レビューを読んでいただくとわかるように,前作同様,Murphy氏は,最重要な内容だけを捉えて,しかもそれらを数珠繋ぎして再構成するのが非常に上手であった.前編(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」).

Introdution(2022)の公式サイトからドラフトPDFをダウンロードして,本の内容を確認できる.この紹介が参考になって購入する方は,Introduction(Amazon)経由で購入していただけるとありがたい.

ちなみに,後編はⅡ章(Probablistic) Inference と Ⅲ章 Predictionが,明確に2つの章で分離されている.両者の区別がきちんと構成から身につくようになる意味で,非常によいテキスト構成だと著者は感じている(私も,このサイトの階層構造では,同様に「構成を見るだけで,関係が身に付く」ことを,用語集では強く意識している).

3.2 実践・コーディングを中心に学べる書籍

3.2.1 チームカルポの画像認識コーディングの入門シリーズ

短時間で画像からのCNN物体認識(上巻),物体検出・GANとVAE(下巻)の,実装方法が学べる書籍である.実質的に上下巻構成であるのに,「2冊で上店下巻構成のシリーズである」ことが,書名からすぐに読み取れないのが,非常に勿体ないが,入門者は,これら2冊セットを順にこなすことをオススメしたい.

また,PyTorchとTensorflow2・Keras入門もかねているので, 社内や研究室の,新人向けのチュートリアルとして非常に使いやすい.2冊とも,研究者から見ると,初歩的で古めの内容であるが,私は入門者むけの初期学習にお薦めしている.

とりあえず早足でPytorch/Tensforflow/Kerasで一通りモデルを実際に動かすところまでいくことが可能であるのが良い点である.さっさと基本モデルを作って試せるので,細かい理論の深い理解までは,多少後回しにして(もしくはテキストで同時に勉強して),まずは手を動かしながらさっさと学習してみる目的に,この2冊は非常に向いている.とはいいながら,下巻のSSD部分は非常に詳細な説明があり,論文だけ読むよりも,「物体検出の基本」について深い理解が得られると思う.

私のように「即実践,やるなかで覚えていけば良い」の育成方針を持つチームや,作って少しずつわかっていくタイプの方が好みである方には,自学自習のお供としてオススメの2冊である.

以下,その上・下巻の,簡単な紹介である:

  • [上巻]
    • 初歩の基礎的な画像認識のコーディングが,PyTorchとTensorflow・Kerasの両ライブのコードでいっぺんに学べる(PyTorchや Tensorflow2の入門におすすめ).
    • 管理職や教育担当のシニアマネージャーで,自分でプログラミングするのを離れていた方が「最近のPytorch・Tensorflowのコーディング」を初めて学ぶにも良い.内容の難易度が初歩的で簡単なので,マネジャー層でもさっと読める.
    • ただし,エンジニアの著者陣が,内容の解説もなく,天下り式に説明を進めていく書籍である.他の理論よりの書籍や,当サイトなどのWeb解説記事を検索しながらでないと,この本だけでは,理屈や応用が身に付かない.理論も別途勉強しておかないと,応用が効かなくて意味がないので注意(下巻の物体検出・生成モデル編も同様).
  • [下巻] 
    • 上の1巻の書籍の続きとして読める「応用タスク編」である(ここでは「下巻」と呼びたい).
    • 物体検出の基本(SSD)と,深層生成モデルの基本(GANオートエンコーダVAE)について,各モデルの詳しい説明と一緒に,コーディング方法が学べる.
    • 特に,SSDについての説明が懇切丁寧で,物体検出CNNの各サブ部品についてよく学べる.
    • 各タスクは,最初の基本モデルの実装方法しか紹介されていないので,近年の先端モデルについては学べない.

(2022年3月現在に追記):以前は「つくる系テキスト」の元祖であった「ゼロから学ぶシリーズ の1巻」(3.2.4節)を,入門書紹介記事では,私はオススメしていた.しかし,現在は,ここで紹介している「チームカルポの2冊の画像認識コーディングのシリーズ」を代わりにオススメししたい.3.2.4節でも述べるが,「ゼロから作るシリーズ(特に1巻)」は,研究者からすると,内容があまりに古くなってしまって初歩的すぎて,入門で知っておくべき内容までも到達しないのが,入門の最初の一冊とは不向きになった一番の理由である.

ただし,こちらのチーム・カルポの2冊も,「理論的な内容の深い解説」はないので,他の理論系のテキスト (3.1.1節) や,このCVMLエキスパートガイドも,読みなつつ「中身も理解していくよう」にすると良い.ただし,2巻のほうではSSDについて徹底的に,詳しい解説もあるので,論文がうまく読めないひとでも,その解説をもとに「まずはとにかくPythonで作ってみる」ができる良い本である(初心者は全部分かることより,とりあえず色々試していくのも大事なので).

チームカルポの2冊のあと進むならどの本?

この意味で,「内容がもう少し新しめ」でチュートリアル本になっているので,上記チームカルポの2冊の方を,今は著者がゼロから作るシリーズの代わりにオススメするようになった. チームカルポの本を2冊読了したのちは,小川 雄太郎さんによる「つくりながら学ぶ!PyTorchによる発展ディープラーニング」(3.2.2節)に進み,次は各タスクの初期モデルの詳細に触れていくというのも,オススメである.また,Packet Publishingやオライリーなどからも,同様に内容の濃いエンジニア向けの書籍が多数発売されているので,それらから自分の目的にあった本を購入するのも,オススメの次の一歩である.

ただ,繰り返すが,腕に自信のある旧帝大レベル以上の学生さんたちの場合は,チームカルポの本や類書で,実装のチュートリアルが終わったら,さっさと自分が取り組む研究課題の,最新研究のgithubコードや,それを元にした自分の研究のコーディングに,いきなり取り組んでいったほうが良い.ハイレベルな教員や先輩学生がいるラボでは,質の高い指導が受けられるので,市販の書籍レベルから順番にこなしていく必要はない.指導者がいない独学者は,テキストで頑張っていくしかない.

3.2.2 オライリーの深層学習系のオススメ書籍

生成 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に音楽に強化学習など,ドメインをまたいで生成モデルを紹介してくれている意味でも,初心者や中級者が入門するにはわかりやすい良い本であると思う(全ドメインでの全体像を得やすい書籍である,という意味).

3.2.3 コーディング方法を,直感的な解説と共に紹介する書籍

つくりながら学ぶ!PyTorchによる発展ディープラーニング ,マイナビ出版,小川 雄太郎 (2019).

  • 代表的タスクごとに,基本的な初期モデルをしっかりおさえておく」という志向の書籍.このサイトも同じ志向ではあるが,この書籍の場合は,PyTorchでの実装方法紹介に重きを置いている.
  • 日本語の書籍では当時まだ学べなかったような「応用タスクごとのCNN」の作り方が,PyTorchのコードを通して紹介されているので,価値が高い.
  • 以下の各タスクごとの(主にコンピュータビジョン向け)代表的ディープニューラルモデルが,各章で紹介されている:
  • この一冊でだけで「各タスクの基本モデル」の,作り方と仕組みを知ることができる.
  • 各モデルの解説も,エンジニア・実男用向けであって細かい.モデルの内容を,その実装例と連携して理解しやすい.
  • [2022年追記] 研究者にとっては,上記の各モデルの内容は,かなり古くなり始めている.とはいえ,プロ研究者でも「入門CNN図鑑」的に事典として所有しておくと,使い勝手が良いと思う.

4. 自然言語処理(NLP)の書籍

4節では,ディープラーニングを用いたNLPの書籍で,オススメの書籍を列挙しておく.

Getting Started with Google BERT: Build and train state-of-the-art natural language processing models using BERT , Sudharsan Ravichandiran, Packet publishing, 2020. (github上の書籍ページ)