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

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

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

導入編の内容(for コンピュータビジョンが専門の方むけ)

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

Introduction(2022)」は,前作MLAPP(2012)と比べると,今の時代に合わせてDeep Learningの章がかなり増えており,それでいて,非Deep Leanring の機械学習の基礎的なところも,前作同様しっかりと網羅されている.また導入編では,前作では取り上げていたが,今は使わなくなった技術や,後編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 チームカルポの画像認識コーディングの入門シリーズ

2冊とも,研究者から見ると,初歩的で古めの内容であるが,「実際に動かすものを作って学ぼう」という路線では,短時間で物体検出・GANの応用タスクまで学べる書籍である.その意味で,社内や研究室の最初のチュートリアルに非常に使いやすい.

また,PyTorchとTensorflow2・Keras入門もかねており,この3ライブラリで,初歩のモデルを実装していく本になっている.CNN画像認識(1巻)や,物体検出や画像生成(2巻)などの応用タスクまで,まずは早足でPytorch/Tensforflow/Kerasで一通りモデルを実際に動かすところまでいくことが可能である.(中身はブラックボックスでもいいので)さっさと基本モデルを作って試せるので,細かいところの理論は多少後回しにして(もしくはそれはテキストで同時に勉強して),まずは手を動かしながらさっさと学習してみる目的に,この2冊は非常に向いている.(書名からすぐに,「2冊でシリーズである」ことが,すぐに読み取れないので,非常に勿体ない).

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

以下,その1巻きと2巻きの,簡単な紹介である:

  • [1巻] 物体・画像認識と時系列データ処理入門 [TensorFlow2/PyTorch対応第2版] NumPy/TensorFlow2(Keras)/PyTorchによる実装ディープラーニング チームカルポ.秀和システム 2021/02/20 (初心者の,実装も含んだチュートリアルにオススメ).
    • 初歩の基礎的な画像認識のコーディングが,PyTorchとTensorflow・Kerasの両ライブのコードでいっぺんに学べる(PyTorchや Tensorflow2の入門におすすめ).
    • 管理職や教育担当のシニアマネージャーで,自分でプログラミングするのを離れていた方が「最近のPytorch・Tensorflowのコーディング」を初めて学ぶにも,内容の難易度が初歩的で簡単なので,ちょうどよい頃合いの書籍である.
    • ただし,エンジニアの著者陣が,内容の解説もなく,天下り式に説明を進めていく書籍である.他の理論よりの書籍や,当サイトなどのWeb解説記事を検索しながらでないと,この本だけでは,理屈や応用が身に付かない.理論も別途勉強しておかないと,応用が効かなくて意味がないので注意(下の物体検出・生成モデル編も同様).
  • [2巻] 物体検出とGAN、オートエンコーダー、画像処理入門 PyTorch/TensorFlow2による発展的・実装ディープラーニング,チームカルポ.秀和システム:
    • 上の書籍の続きとして読める「応用タスク編」としての続編である(ここでは「2巻」と呼びたい).
    • 物体検出の基本(SSD)と,深層生成モデルの基本(GANオートエンコーダVAE)について,各モデルの詳しい説明を聞きながらコーディング方法が学べる.1巻も同じであるが,エンジニアの方が書いたエンジニア向けの本でもあるので,あまり難しい説明まではなく,わからないなりに飛ばし読みできるメリットはある
    • 各タスクは,最初の基本モデルの実装方法しか紹介されていないので,近年の先端モデルについては学べない.

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

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

ゼロから作るシリーズ,1,2巻が2020年以降おすすめ出来なくなった理由

旧帝大や,早慶レベルのビジョン系研究室に入った初心者の場合だと,「2018年頃くらいまで」は,「ゼロから作るシリーズ1巻」のほうが,中身をブラックボックスにしないので,歯ごたえもあり,難易度的にもよかった(そういうラボでは先輩が色々教えてくれる).しかし,2022年3月現在では,「ゼロから作る1巻」は,終章でCNNに入るくらいで内容が終わってとても古い内容となってしまい,3層MLP作る初歩どまりで,そのあと「ResNet」や「物体検出」など,具体的に何も作らないで終わる内容なので,オススメしない.ゼロから作る1巻では,PytorchかTensorflowも別途学ばないといけない).

ちなみに「ゼロから作る2巻 自然言語処理編」も,(LSTM・GRUを用いての)seq2seq with attentionRNNLMによる文書生成の話が主体であり,Transformer後に過去のものとなりつつある「2018年まで主役だったNLP技術」が中心の本となってしまった.

要するに「ゼロから作るシリーズの1巻 2巻の2冊」も,かつては,稀有な内容の良書だったのだが,2022年の今では内容がとても古く,もうあまり役に立たないのである(※ 人気シリーズとなって,強化学習編まで4冊シリーズが出たこともあり,各巻の改訂が一切行われなかったことが,これら1巻・2巻の内容が古くなった原因でもある).1巻が特にそうであるが,Amazonでは好評価がたくさんついており,当然よい書籍であるのだが,そのせいで素人は今でもこの1巻に飛びついてしまい,他の選択肢を知らない人も多いと憶測する.そうして2022年の今に「ゼロから作る1,2巻」をこなして満足してしまうと,時代に取り残されるので注意である.

チームカルポの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にアップデートされている.

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

  • つくりながら学ぶ!PyTorchによる発展ディープラーニング ,マイナビ出版,小川 雄太郎 (2019).
    • 私のサイトも心がけている「代表的タスクごとに,基本的な初期モデルをしっかりおさえておく」という志向の書籍(ただしこの書籍は実装に重きを置いている).
    • 日本語の書籍では当時まだ学べなかったような「応用タスクごとのCNN」の作り方が,Pytorchのコードを通して紹介されている本.
    • 以下の各タスクごとの代表的ディープニューラルモデル(主にコンピュータビジョン向け)が,各章で紹介されている:
    • 各モデルの解説も,類書と比べて細かい.解説図やブロック図を多様してある.
    • よって,この一冊でだけで「各タスクの基本モデル」の,作り方と大まかな仕組みを知ることができる.(2022年現在では)研究者にとっては,各モデルの内容は,古くなりはじめているが,プロ研究者でも「入門CNN図鑑」的に所有しておくと,非常に使い勝手が良い書籍である.

3.2.4 ゼロから作るDeep Learning シリーズ

  • ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 (1巻) 斎藤 康毅 オライリー・ジャパン,2016年9月.
    • 「ライブラリに頼らず,自力でニューラルネットワークを作る様子を見せてくれる」という画期的な内容で,ベストセラーで,ディープラーニングブーム後の初期は,説明不要の名著であった:
      • 3層NLPの作り方から始まって,CNNのさわりの部分まで学べるので,今でもある程度はオススメできる本である.
    • しかし,先駆者であった本でもあり,改訂版の発売による内容更新もなかったので,2017~2018年頃から内容が古くなってきて,今では入門として内容の網羅度(coverage)がもの足りなくなってしまった(その後に,実装よりの入門本も,数多く発売されたのも原因である).
      • この1巻は,InceptionNetやResNetなど,初期のCNNの話にも到達していないので,この本を読み終わっただけでは,現在だと,学んだ内容が初歩すぎて,そのあと結局CNNの基礎を別の本で学習することになってします.
      • 「ゼロから作る」シリーズの3巻「フレームワーク編」だと,CNNとLSTMを独自ライブラリとして構築することを通して,よりつぶさに中身まで知れることになる.しかし,3巻でも,バッチ正規化など必須な層やテクニックの話が追加されてはいない.
    • (2022年3月に追加のコメント)入門者は,現在だと前述の「チームカルポの2冊」をこなしたほうが,テンポよく,余計な事を考えずに「まずは実践!わからなかったらあとで学ぶ!」を短い時間で済ませられる.
      • よって,2022現在では,作って学ぶ系の本で画像識別CNNや,GAN・物体検出の初歩のコーディングに入門する場合は「チームカルポの2冊」の方を,著者はオススメする(特に,周りに教えてくれるプロがいない独学の人).
      • この情報を知らないと,Amazonでたくさんレビューがついておりベストセラーである「ゼロから作るシリーズ」を,先に選んでしまいがちである(お金をかけずに素人が書籍だけで独学しようとしている時点で,アドバイスを貰えるプロの指導者がいないから,そうなるのは仕方ないことではある).
      • 逆に「ゼロから作る」シリーズは,ライブラリ無しでのコーディングをつぶさに見せてくれる貴重な本なので,そこを学びたい人には現在でも非常に役に立つ本ではある.

4 NLP・DLの書籍

ディープラーニングを用いたNLPの書籍紹介記事を,ここでは列挙していく

SNSでシェアやブックマークを行う