コンピュータビジョン・ディープラーニングの入門者向け書籍【おすすめベスト7】(2022年・春版)

1. はじめに

この記事では,コンピュータビジョン・ディープラーニングの入門者むけ「著者のおすすめ書籍」のうち,上位ベスト7を紹介したい.この記事は,以前の入門者向けオススメ記事から,紹介する書籍を更新して現在に則したように更新を行った「2022年(令和4年)・春版 」である

(※ 前回のまとめは [2020年・夏版]だが,そちらの記事は,もう内容が古いのでオススメしない).

大学の学部4年生ごろに,コンピュータビジョン系の研究室(特に画像・動画認識系)に配属された際に,最初の半年~1年でまず読んでおく書籍として,著者が薦める,研究・開発初心者向けのおすすめ書籍ベスト7を紹介する.つまり,大学院でコンピュータビジョンを専門で学び研究する予定の人が,最初にこなしていくと良いと思う本を,7冊列挙する.

もちろん,エンジニアでこれからコンピュータビジョンや深層学習を学びたいという方にもオススメの7冊である(ただし,どの専門職でも同じであるが,プロの指導者や師匠がいて,その人に頼れる環境下で学ぶ方が本当は望ましい.我流ほど効率の悪いものはない).

1.1 この記事で紹介する「コンピュータビジョンの,入門向け書籍ベスト7」

以下が紹介するこの7冊であるが,これは相互補完的に読んで7冊を消化していけば,研究者としての初歩が身に付く,という視点で,私の方で選んだものである (あくまで7冊に整理番号をつけた数字で列挙しただけである点には注意.7冊の中で特に順位はつけていない):

  1. 深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) 岡谷貴之,講談社,2022.
  2. 画像認識 (機械学習プロフェッショナルシリーズ) 原田達也,講談社,2017.
  3. ディジタル画像処理 [改訂第二版] , ディジタル画像処理編集委員会, 2020.
  4. 物体・画像認識と時系列データ処理入門 [TensorFlow2/PyTorch対応第2版] NumPy/TensorFlow2(Keras)/PyTorchによる実装ディープラーニング, チーム・カルポ、秀和システム,2021.
  5. 物体検出とGAN、オートエンコーダー、画像処理入門 PyTorch/TensorFlow2による発展的・実装ディープラーニング, チーム・カルポ、秀和システム,2021.
  6. 生成 Deep Learning ― 絵を描き、物語や音楽を作り、ゲームをプレイする David Foster (著),松田 晃一 ,小沼 千絵(訳)
  7. Getting Started with Google BERT: Build and train state-of-the-art natural language processing models using BERT, Sudharsan Ravichandiran, Packet publishing, 2020. (※ BERTだけでなく,主部品のTransformerについても詳しい説明が最初にある本.このサイトのTransformerの用語記事でもおすすめしている)

まず,次の1.2節で,これら7冊の全体像を示しておきたい.その後の2節で,1冊ごとに,短めの内容紹介を行う.

1.2 紹介する7冊の全体像

テキスト的な (1)~(3)について

(1)~(3)については,3冊とも「教科書として理論を学ぶことを想定した,入門者向け書籍」である.学部4年生の研究室配属学年時に,まず最初に読んでおきたい教科書的な書籍である学部3年生までに「パターン認識・機械学習の基礎」と「Pythonによる科学計算プログラミング基礎」などについて履修・習得済みであり,それらについての予備知識が,ある程度,既に備わっていることが望ましい.よって,パターン認識系やロボット系の研究室を修士まで出ておらず,会社でいきなり深層学習のチームに入る人も,そのあたりの基礎を並行して身に付けていく必要がある.

(1),(2)の書籍は,ディープラーニングを用いたコンピュータビジョン・パターン認識について,学べるテキストである.「機械学習プロフェッショナルシリーズ」とあるように,自学自習ではなく,あくまで大学教員の研究指導による研究の実践や,大学院の授業とともに,補助テキストとして学ぶためのプロを目指すひとや,既にプロの我々向けの本である.

(1)の東北大 岡谷先生による「深層学習 改訂第2版 」は,今年2022年出版されたばかりの書籍で,第1版と比べて大幅に内容加筆されている.(2)の 東大 原田先生による2017出版の「画像認識 」は,内容はかなり古くなってきているが(=2017以降の内容が足りないが),現状コンピュータビジョン系の書籍の中で画像認識について,最も詳しくかつ深い日本語の書籍であり,その内容も大学のテキスト的な「コースを組みやすい」段階的に学べる構成になっている.

(3) のディジタル画像処理 [改訂第二版]は,コンピュータビジョンと,古典的な画像処理について,広く網羅されているエンジニア向けテキストである.コンピュータビジョンが専門の人は知っておきたい基礎知識や,昔からよく取り組まれてきた伝統的(orthodox)なコンピュータ問題が網羅されており,終盤には深層学習ベースのパターン認識の章もある.エンジニアを対象としているので,数式的な記述が平易になっており,エンジニアの方でも読みやすい.とはいえ,現在は(1),(2)の深層学習・画像認識の内容をまず習得しないと始まらない意味で,(3)の本のような手広くコンピュータビジョンについて知る場合は,皆さんの学科で行われる「コンピュータビジョン」の講義の中で,(3)の本の内容を(プロ研究者による講義のもとで)一通り触れることができる環境があると,もっとも望ましい.

コーディング方法を学べる (4)~(6)について

チームカルポによる執筆の (4), (5) は,著者が特に初心者にお薦めの2冊である.深層学習の基礎的なコーディング方法とその理論を,Pytorch/ Tensorflow(+Keras) で学べる,画像認識の初心者向けのシリーズである.明示的にタイトルには書いてなくて勿体ないが,2冊は2巻に分割してある,シリーズ構成になっており,(4)→(5)の順に学べる構成である.

(4) は「物体認識の基礎」編である.CIFAR-10やFashion MNISTを用いた中規模のCNNを実際に組むことで,CNNを用いた物体認識の基礎を知ることができる.

(5)は,その4の後に続けて読む想定の「物体検出深層生成モデル」編である.SSDと,VAEGANのコーディング方法と,その原理説明を読むことができる.特にSSDの詳細な説明が,この本の特徴であり,書籍内の序盤6~7割がSSDについてである.

次ぎに,(6) は深層生成モデルの学習を専門としたい人向けのオライリーから出ている「生成Deep Learning」であり,こちらも実装方法中心で,理論解説は平易かつ簡単な感じの初心者・エンジニア向けの書籍である.

まず序盤の構成は,VAEGANのあとに,画像対画像変換・ニューラルスタイル変換の章がある.その後は,画像以外の生成の初歩的な話が,広く網羅されている.RNNLMによる文書生成とニュースQA, 楽譜スコアの生成モデルに,強化学習によるプレー生成などについて,初歩を学ぶことができる.チームカルポの(4), (5)で,画像認識の基本である「物体認識と物体検出」の初歩がおさえられるが,そのあと,画像系の生成モデルについて,より広く踏み込んで入門していきたい人むけに,(6)の書籍は特にオススメである.

BERT 入門 の(7) について

(7 )は,英語の本であるが,現時点2022年4月において,NLPで必須となったBERTについて,手早く入門したい方々むけに,説明が良い上に,カバーしている内容も多くて最も良い本なので紹介しておく.

(※ このサイトでも既に,Transformer については,系列対系列変換の全体の流れの記事も含めて,わかりやすい記事を掲載済みである.一方で,BERTや,他のTransormer応用の記事を執筆する段階には,まだ到達できていない.CNNまわりの重要記事を埋めていくのでまだ手いっぱいである)

2. 書籍リスト

(1) 深層学習(機械学習プロフェッショナルシリーズ) (2022年発売)

深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) 岡谷貴之,講談社,2022.

東北大学の岡谷貴之先生(研究室HP)による「深層学習(機械学習プロフェッショナルシリーズ)」の改訂版(加筆して拡張した版)が,今年2022年に入って発売された.日本のコンピュータビジョン界隈で,深層学習への移行期初期に,コンピュータビジョン系での学会や等でのチュートリアルを担当されたことから,改定前の前作(2015年)の執筆主担当者となられた研究者である.

この改訂第2版の新たに追加されたまえがき中盤に書かれているように,企業との共同研究での得てきた実務的経験などももとに「実用性重視」で,新規に載せる内容を決められたとのことである.ただし,旧帝大のトップ研究室の教員であり忙しい方であるのと,366ページにも及ぶ内容であるので,個々の説明は,問題設定の紹介や入門程度に留め,簡潔な内容のみで済ましている項目が多い(先日発売されたMurphy氏のProbabilistic Machine Learning: Introductionも,目指している情報の粒度は近いかもしれない).また,実際の手法の紹介まであっても,豊富な図解やブロック図があるのではなく,文章と数式ベースの抽象的な説明がメインであることに注意である.

新たに追加された内容は,例えばTransformerやseq2seq with attention,Graph Neural Network, 深層生成モデル,敵対的事例(adverarial example)の話が追加されている.また,学習方法の紹介として,距離学習,対照学習による自己教師有り学習,継続学習(continual learning)・追加学習(incremental learning),NAS(Neural Architecture Search)枝刈り,ドメイン適応などが,たとえば追加されている.

簡潔というか,私のようなシニアリサーチャ・管理職には,このテキストくらいの抽象度さえあれば,個々のテーマをあとは論文やサーベイ・チュートリアルを読めばすぐわかるので,大変ありがたいまとめとなっている.一方で,まだプロと胸を張れるほどでないジュニア層の方や,修士・博士の学生くらいの方だと,加筆部分には,具体例もなく抽象的な説明文章がメインで,図の説明も全く無いところも多いので,この本だけではイメージできない(=理解できない・読みづらい)箇所も多いと思う.著者からすると非常に読みやすい.

この岡谷先生の「深層学習」を読む際には,本サイト「CVMLエキスパートガイド」の対応する用語記事もチェックしながら,ぜひ連携して相互活用していただけると,学習効果が格段にまずはずである.

ただし,この本も「深層学習」と銘打っているので,我々コンピュータビジョンの画像認識・映像認識の各種応用(タスク)ごとの話はない.そこで,日本語の本の中だと,その一番のまとめとなっているのが,次の(2)の原田先生のテキストである.

(2) 画像認識 (機械学習プロフェッショナルシリーズ) (2017年 発売)

画像認識 (機械学習プロフェッショナルシリーズ) 原田達也,講談社,2017.

東京大学の原田達也先生(研究室のHP)による,「機械学習プロフェッショナルシリーズ」の1冊である.発売された,2017年5月の頃の,最新の「画像認識」と,その頃までの画像認識の歴史が網羅された本である.よって,CNN以前のツール(2章:画像記述子,キーポイント検出器)や,コーディングやプーリング(4章:Bag of Visual Words, 多様体学習,Fisher Vector)の話など,CNN登場以前の技術もしっかり学べる.

現代の「深層学習による画像認識」を初めて勉強する上では,まずは以下の2つの基礎的な画像認識応用(タスク)について,最初に必ず学んでおきたい:

  • (1) CNNを用いた物体画像識別モデル (ImageNet データセットでの学習)
  • (2) Faster R-CNNや,Yoloなどを用い物体検出

よって,この本でも,それらが終盤の6章,7章にそれぞれ配置されている(7章は,CNN以前の物体検出として,HOG+SVMやDPMなどの話も紹介される).

そして6章以降の準備となる事前知識や,歴史的経緯が,1~5章で段階的に得られるという書籍の構成である.8章はハッシング (近傍探索の効率化) を用いた「画像検索」の章であるが,CNN登場以前の内容である.最後の9章では,発売当時の発展的な話題(セマンティックセグメンテーションGAN画像キャプション生成など)について,それぞれ軽く触れられている.

この本は「画像認識」とのタイトルのとおり,「ディープラーニングによる動画認識」の話は対象外である.リアルタイム物体検出YOLOの話は終盤に出てくる.しかし,この当時以降に発展して,今では多く取り組まれている,動画理解系の各タスクの話はない.2017年出版なので,執筆当時の2016年では,リアルタイム動画処理や,効率的なCNNバックボーン(MobileNetやEfficientNet)などが普通になる前の時代であった(当時の著者らのラボは,画像からの認識問題を得意とされたというのもある).よって,この「画像認識」も,(1)の「深層学習」同様に,ここ5年の内容を加筆した「改訂2版」が発売されると嬉しい書籍ではある.

(3) ディジタル画像処理 [改訂第二版] (2020年 発売)

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

我々の業界では,かなり古い時代から販売されている初心者向けテキストであり,私のような中堅からベテランの方々には,既にお馴染みの本である.本書は,著名な大学教員や研究者が,自分の得意分野を中心に執筆する形式を取っている.「画像処理/コンピュータビジョン/画像認識」の技術の話題を,網羅的に盛りこんだ,贅沢な構成のテキストである.

初版からあとは,しばらく改訂版の出版がない時期が続いたが,1995年にまず [改訂新版] が大幅追化のうえ出版された.更に,その [改訂新版] に,加筆修正が行われたのが,この [改訂第2版](2020年)である

古典的な画像処理の章からはじまり,オーソドックスな問題である画像3D復元やカメラ幾何・フォトメトリなどの章がある.もとは古典的・伝統的な内容中心であったが,深層学習前世代の機械学習を用いたパターン認識の章や,深層学習時代の画像認識アプリケーションたどっていく章などが,改訂を通じて追加されていった.また,伝統的な問題でも,改定ごとにカバー範囲が増えて網羅度が増している.

全部入りの構成であるので,なるべく厚い本にならないように,どれも説明は簡潔である.数式やアルゴリズムの説明も最小限であるので,研究者ではなくエンジニアの方でも非常に読みやすい.そもそも資格試験と連動してきたテキストであるゆえ,キーワードが(多めに)太文字で目立つようにされている.試験受験目的ではない人でも,なるべく短い時間で,膨大なコンピュータビジョン分野の全体像をおさえていくには,非常に効率的である.

深層学習を用いてコンピュータビジョン研究を行う方も,本書は読まずとも,辞書的に使う用途で携帯しておくにも非常に便利な本である.専門分野が細分化・多数化されてしまったコンピュータビジョンにおいて,「最も全体像を得やすい本」が,この本である.1,2 の本と相互補完的に活用していきたい本が本書である.

(4) チームカルポの深層学習ベースの画像認識入門 1巻

物体・画像認識と時系列データ処理入門 [TensorFlow2/PyTorch対応第2版] NumPy/TensorFlow2(Keras)/PyTorchによる実装ディープラーニング, チーム・カルポ、秀和システム,2021.

よくも悪くも,あまり詳しすぎない説明だけで済ませてくれているエンジニア向けの本である.初歩的なCNNを用いた物体認識のコーディングが,さくさくと学習できるよい本である.

なにより,Tensorflow2とPyTorch の,2大深層学習フレームワークの両サンプルコードが,同時に提示されていき一挙に学習できるのが,初心者には非常に嬉しい書籍である.

関連ページ:主要なDeep Learning Libraryの一覧

序盤の4章までは,Numpyや線形台数の基礎,3層MLPの理屈の話が,まず事前知識として展開される.その後,6章からCNNによる画像認識と物体認識の初歩のコーディングの話が,以下の順で実習できる.

  • 6章 MNISTでの小規模CNN (畳み込み層とプーリング層の実装)
  • 7章 CIFAR10で物体認識CNN学習 + 画像のデータ拡張
  • 8章 ImageNet事前学習済みのCNNモデルを,猫v.s犬 識別データセットでファインチューニング.

9章では,LSTMで日本語対話モデル学習の話があるが,これはオマケである.8章までが主目的の書籍といえよう.

大規模のVGGNetなどを自分で学習したりまではいかないが,逆に7章・8章までで,手早く基本的なコーディングをたどれるうえに,以下に紹介する2巻 とセットで,物体検出・GANにも進みやすい構成になっている.よって,昨年登場以降は,初心者向けのコーディングの本をたずねられると,このシリーズ2冊をおすすめしている.

※ 以前の2020の入門書ベスト3記事では,この書籍の代わりに,ゼロからつくるディープラーニング1巻をおすすめしていた.しかし,ゼロから作るシリーズは,先日4巻の強化学習編が出たように,改訂は行わず新刊出版を優先している.よって,2022年4月では,ゼロからつくる1巻は,あまりにも内容が古くなってしまい,CNN物体認識の初歩も辿りきれなくなってしまった

(5)チームカルポの深層学習ベースの画像認識入門 2巻

物体検出とGAN、オートエンコーダー、画像処理入門 PyTorch/TensorFlow2による発展的・実装ディープラーニング, チーム・カルポ、秀和システム,2021.

上記の(4)の1巻の発展編で,物体検出GAN, VAEのコーディングと理論が学べるのが,この2巻である(出版社はシリーズとみなした番号をつけていないので,私のほうで勝手に,1巻,2巻と名付けてよんでいる).1巻の続きで読めて,なおかつ,物体認識の次に最低限必須の物体検出深層生成モデル(GAN,VAE)について,1巻と同じくPyTorch/Tensorflow2ベースで学ぶことができる.

物体検出は,初心者には少し難解な構成部品も多い.しかし,この書籍では,アンカーボックス(※ SSDなのでデフォルトボックスと呼ぶ),ロス関数の実装,NMS(非極大値抑制)についても,それぞれ丁寧な解説があるので初心者はイメージしやすく,内容を学びやすい.また,VGGNetについては,各層ごとに図つきで詳しく特徴マップの状態を提示して説明してくれるので,パラメータ設定に伴う,初心者は,CNN内部の具体的な挙動についてのイメージをつかめるようになるはずである.

一方で、4章以降がGAN, VAEの章であるが,こちらは説明は詳しくないので,原理はみにつかない.ただし,さらっと済ませてくれているぶんだけ,ネットワークの全体像だけつかんだあとVAE, DCGAN, Conditional GANの実装にすぐ入れるので,(詳細は他で勉強する必要があるが)まずさくっと動かしてみたほうが,つかみやすい方には,オススメである.

1巻も同じだが,2巻も,「とりあえずまず即実践」という感じで,理屈の理解はあとからついていけばよいので,すぐにコーディングしていって動くものを触っていくなかで,各モデルの内容をつかんでいきたいという学習方針に,とてもオススメである.いずれも初歩的な内容なので,理論については,(1)(2)の書籍や,このサイトの各用語集や各論文を読んでいくことでも,十分学んでゆける.

ちなみに,この2巻を終わった時点で,ものたりなかったエンジニアの方は,画像認識の各タスクごとのモデルが詳しく学ぶことができる「つくりながら学ぶ!PyTorchによる発展ディープラーニング」で更に自学自習をおこなう方向もある.ただし,学生で研究室に所属している方は,教員や先輩の指導があるので,さっさと論文を読んで実際の研究に入って,研究を実践していくことを薦める.

(6) 生成ディープラーニング

生成 Deep Learning ― 絵を描き、物語や音楽を作り、ゲームをプレイする David Foster (著),松田 晃一 ,小沼 千絵(訳)

生成学習を専門としたい人向けの,オライリーの書籍である. GAN・VAEのあとに,画像対画像変換(pix2pix, CycleGAN)や,ニューラルスタイル変換の章がある.その後は,画像以外の生成の話がメインとなり,RNNLMによる文章生成,Encoder-DecoderによるニュースQAモデルの構築,MuseGANによる楽譜(MIDI)生成,OpenAI Gymによる強化学習エージェントによるゲームプレー生成という内容である.直感的な説明でわかりやすく,以上のような内容が網羅されており,非常にオススメである.

(7) Getting Started with Google BERT

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

本書はNLP向けの,BERT入門の本である.しかし,コンピュータビジョン界隈でも,TransformerやBERT系の技術が重要になってきたので,BERTについて効率良く学べるこの本を,最後の7冊目として紹介しておきたい.ただし,発刊が2020年で,2020年までのNLPにおけるBERTの動向をまとめた書籍である(コンピュータビジョン向けのVision TransformerやDETRなどの話はない).

本書は,以下の3節構成で,BERTの基本と応用,アプリケーションについて順に学べる:

  1. Section 1 – Starting Off with BERT (1~3章)
  2. Section 2 – Exploring BERT Variants (4,5章)
  3. Section 3 – Applications of BERT(6章~9章)

Section 1,2 はそれぞれ,TransformerとBERTの詳細な理論解説である.図も豊富でとてもわかりやすい. そしてSection1の3章「 Getting Hand-On with BERT」以降は,HuggingFace の Transformersのコードも,解説中に提示される (githubのコード公開ページ) .従って,それらのコードも元にした解説がずっと続く書籍であるので,BERTの具体的なイメージが沸きやすい.

ちなみにこの著者の「Deep Reinforcement Learning with Python: Master classic RL, deep RL, distributional RL, inverse RL, and more with OpenAI Gym and TensorFlow, 2nd Edition」も,非常に良い本であり,オススメである.1st editionは微妙だったのが,この2nd editionで一気に良い本となった.やはり「たくさん書くことは大事なのだ」と,私も感じた例である.つまり,沢山出版されてきた著者であるゆえ,近年はこのBERT入門本も含めて,より良いテキストを書けるように成長されたのだと感じる.

4. まとめ

以上,この記事では以下の7つの書籍を,以下の3カテゴリに分けて紹介した.入門者向けに書いた記事であるゆえ,ご自身の部下や,学生へ,この記事の共有をお願いできるとありがたい.もちろん,逆に上司や指導教員に,この記事を紹介していただくのも助かる.

各記事の個別紹介記事を,まだ執筆していない書籍については,今後,紹介記事を個別に追加していきたい.