Pythonで学ぶ画像認識 (機械学習実践シリーズ) のレビューと推薦【おすすめ書籍の紹介】

記事を共有する:

1. 「Pythonで学ぶ画像認識 」の基本情報

Pythonで学ぶ画像認識 (機械学習実践シリーズ)のレビューを行い,推薦する【おすすめ書籍の紹介】記事です.本書は,研究開発者むけのコンピュータビジョン画像認識の本で,インプレス社の「機械学習実践シリーズ」の新書として発売されました.

項目
書名Pythonで学ぶ画像認識 (機械学習実践シリーズ) 株式会社インプレス
githubhttps://github.com/py-img-recog/python_image_recognition
発売2023/3/21
著者田村雅人(著者個人HP),中村克之
[日立製作所のお二人]
難易度中級者むけ
対象画像認識の「標準手法の仕組み + その実装方法」を学びたい方むけ.

特に,冒頭の「本書のコンセプト(p9)」に書かれているように,
素早くアイデアを実装できるようになるために,(当サイトと同様に)深層学習の
中級的内容を,正しくそして深く理解したい方むけ.

2. 本の概要

Pythonで学ぶ画像認識 (機械学習実践シリーズ) は,日立製作所の,研究開発者2名が執筆した「実装も学べる」系のテキストです.書中のコードも,githubレポジトリに公開されています.

出版社さまから発売時に,本を頂いており,早めに紹介したかったのですが,本の内容が盛りだくさんという事もあり,この紹介記事を出すまでに,しばらく読み込むお時間をいただきました.Amazonでも,発売後しばらく「カテゴリ内」ランキング上位に居ましたので,売れ行きがかなり好調のようです.良書でありますので,この記事の推薦も通じて,今後更に売り上げを後押しできればと思っています.

2.1 著者が狙っている「本書の長所とウリ」

Amazonでの出版社・著者のウリ文句を述べたアイキャッチ画像では,以下のような長所が列挙されています:

(出版社・著書による)本書の長所:

管理人としても,特に4つめの「DNNを「ただ使う」から「理解して使う」へ.」が本書の良さであると感じます.初心者~脱初心者は,ディープラーニングの詳しい中身をよくわからないまま,ただAPI的に,もしくはコピペと部分きりはり的に使って終わりがちです.しかし,中級者には,各部品やタスクをよく理解して,中身を改善したり,自分で工夫して自社や自分の研究での「実用」にアレンジする力まで求められます.そのためには「理解して使う」へ 成長することは必須です.

これは本書のような,「(理論だけでなく)実践・コーディングも学べる本」系のテキストに共通した狙いではあります.しかし,2.2節, 2.3節でも述べるように「CNNだけでなくTransformerベースの手法まで」初めてカバーできている というところが本書の圧倒的な良さです.Vision TransformerやDETRの実装を,ちゃんと中身の解説まで含めて学べる本は初めてだからです.オライリーやPacket Publishingなどの洋書でも,コンピュータビジョン向けにここまで書いてくれている本はまだありません.

Transformerの記事で既に紹介していたように,自然言語処理向けであれば,TransformerやBERT/GPTの実用・実装まで詳しい洋書は,すでに発売されていました.

また,実装方法にも重きを置いた本書の内容と構成(2.2)は,2.5節で述べる「当サイトとの相互補完性」も産み出してくれています.

2.2 構成の良さ

本書は構成がよく練られており非常に良いです.2.2節で述べる長所を達成するために,凝縮した内容となっていると思います.

まず,本書の章構成は以下の通りです:

1~3章は基礎パートで準備(preliminary)のパートです.それを受けて,本題の実践である4~6章に突入し,各章の後半にある「Transformerを用いた手法」を習得することで,現代的な画像認識むけTransformerを,自力で素早く実装できるようにすることが,本書の一番の狙いであると(この構成からは)読み取っています.

2.3 管理人の感じる「本書のウリ」

管理人が感じた本書の,本書の特色(特にウリの部分)は以下の内容です:

  • 特色1: 画像認識のうち,重要な基本タスクだけ学べる (厳選されていてGood).
  • 特色2:[旧→新] の実装を両方とも学べる:
    • 4~6章の構成が[旧→新] 2段階構成
    • [章前半:旧] CNN + seq2seq with attention
    • [章後半:新] Transformer を用いた手法 (ViT, DETR).
    • 「第5章 物体検出」でDETRも学べる (※ 従来の日本語書籍には,DETRの詳細な中身や,実装解説を学べる本はなかった).

これら2つの特色をまとめることで,(管理人の感じる)本書の最大のウリを述べると,

画像認識3タスク(4~6章)の,[旧→新] 両手法の作り方を学べる

という1点につきると思います.

繰り返しになりますが,そのうち[新手法]の「Transformer(とViT, DETR)を用いた3タスクの学習方法が学べる構成」が,本書を使用する最大のメリットと思います.

また,ボリュームの多い内容ながら,わかりやすくなる図つきで,各技術の簡潔な解説および,Python/Pytorchでの実装が紹介されていくのも良いです.

※ 著者の中村さんいわく,『当初は7章以降でも,(田村さんや中村さんが専門の)より発展的な画像認識タスクの紹介も予定していたが,「6章まで書いた時点で,内容が盛りだくさんとなった」ため,6章構成でそれ以上の章の追加は止めて出版した』とのことです.

2.4 著者お二人について

第一著者の田村氏(著者個人HP)は,近年CV系トップ会議において,Human-Object-Interaction Detection (QPIC, CVPR2021)や,Group Activity Detection (ECCV2022)などの研究成果を発表されておられる研究者です.各研究のなかで,本書で紹介されている「DETR(とdeformable DETR)」を使用されており知見を持たれていることから,「第5章 物体検出」でもRetinaNetやDETRの,しっかりとした説明が展開されていると思います.

※ 5章には,アンカーボックスについても良い説明+実装 があります.

また第二著者の中村氏は,私が博士課程の頃から,学会等で親しくさせて頂いている旧知の知り合いです.プロフィール紹介にも書かれている通り,スタンフォード大の李先生の研究室にも留学されています(書中のコラムで,その留学中の話も少しあります).中村さんと私は,SSII2018〜2020のオーガナイズドセッション委員会で,一緒に企画運営を務めておりました.

そのお二人が執筆した本書は,(私は本書に全く関わっていませんが) 「応用指向・実践力指向」が強い構成および内容に仕上がっていて,私のCVMLエキスパートガイドとも志向性が似ている内容でありました.企業所属の研究員であるお二人が書いたという点でも,志向性が近くなる結果につながったと思います.

2.5 本書との相互連携性(相乗効果性)

本書と当サイトは,以下の表に示すように,相互補完性が高いペアをなしており,理論と実践のバランスを取れるという共通側面も持つ,良い関係にある気がしています.従って,2つ一緒に使っていただくことで相乗効果が増すことが期待できます:

理論実装内容面
Pythonで学ぶ画像認識わかりやすく簡潔に
(実装を助けるまで.詳解はない)
特に重視
(Pytorchによる完全な実装)
画像認識の基礎(1~3章)の代表タスク(4~6章)が学べる
CVMLエキスパートガイド特に重視
(体系的な📚用語Wikiとその各記事での用語解説)
他サイトや参考書籍にお任せ
(ただし応用指向で解説)
本書の1~6章との重なりが非常に多い.

著者のお二人ともこの点を話しまして,「お互いリンクさせて,相乗効果を高めていきましょう」とも確認済みです.

本書のgithubからも,当サイトの紹介リンクを,掲載して頂きました(下記ツイート参照):

これにより,本書の購入をきっかけに,初めてこのサイトを知った方も出てきていると思います.ぜひ本書と当サイトの「2つを同時に活用」していただき,本書の読者の方へも,実力向上にお役立ちできれば嬉しいです.

3. 管理人のオススメ3点

3節では,2.2で述べた「最大のウリ」の他に,私から「おすすめ点」を3点ピックアップして,もうすこし細めに述べさせていだきます.

オススメ点1:Transformer/DETRの「画像認識向け実装」が,わかりやすい解説と簡潔なコードで学べる

2.2節でも述べましたが,5章(物体検出)にDETRが取り上げられているのも良い点です.

また,実装を学ぶ系の書籍ではありますが,「PyTorchに存在するクラスは,そのまま使用して自力実装はしない」というポリシーになっています.たとえば4章や5章では,nn.BatchNorm2d (バッチ正規化)やnn.ReLU (ReLU関数)に,nn.Conv2D (畳み込み層)やnn.Embedding(クラスの埋め込み層)を使って,各ネットワークの実装が行われます.

一方で,PyTorchに存在しない部品は,自力で関数をつくる構成です.4章では RetinaNetの損失関数やIoU計算を自作しますし,5章ではDETRの2次元位置符号化や,DETRの後処理である「ハンガリアンアルゴリズムによる検出矩形 v.s 正解矩形間の対応付け推定」も自作します.

オススメ点2 :段階的に学びやすい構成

2.1節「本書の構成の良さ」でも触れましたが,1~3章でまずは初心者でも基礎項目を準備として学べるようになっています.1~3章は,4章以降の実践の準備で,それを終えてから,本番である4章~6章に突入できます.つまり,「基礎(初心者向けかつ中級者の復習)」と実践(中級向けの発展)が一冊内で完結する」という,ぜいたくな「段階的に学習しやすい構成」になっています.

画像処理の基本(2章:2D畳み込み演算空間フィルタでの平滑化)や,ロジスティック回帰やニュールネットでの分類問題を通して「機械学習の基礎」(3章:train/val/testの話や,SGDの基礎など)を,基礎として学ぶことができます.

4~6章は,中級者むけの内容なので,初心者がいきなり本書だけをこなして6章までをマスターするのは,やや厳しいです(読み終わっても,やったつもりで終わる面も思います).脱初心者くらいで,本書の内容は初経験すぎる方は,1人で読み切ろうとするよりは,社内グループで輪読会にしたり,勉強会を立ち上げて読んでいくこともオススメしておきます.

よって,コンピュータビジョンが初心者の方は,おすすめ書籍ベスト7(2020)の記事でも以前から推選している「チームカルポの,初心者向け上下巻シリーズ「(上)物体認識編, (↓)物体検出/生成モデル編) 」の併用・事前読破なども,検討してください.

オススメ点3 :本サイトとの「相乗効果」が期待できる

2.2節で既に述べた通り,本サイトCVMLエキスパートガイドと,本書を併用していただくと,「取り上げている内容が多く重複しているものの,提供する内容のアプローチが違う」ことから,大きな相乗効果を得られることが期待できます.

また,中級者向けのやや歯ごたえある内容なのも,このサイトの狙いである「中級者の向上支援」と重なっており,個人的にも応援させていただきたい本です.

このサイトでは,抽象度が高い「教科書的内容」を,実用・応用目線で用語Wiki中心にまとめていくことに注力しています.ゆえに,そのうち中級者なら「体系的にかつ実践力もありき」で身につけたい「画像認識タスクの基礎(特に4~6章)」について,しっかり攻めてくださっている本書の登場は,私としても願ったり適ったりです.

各用語記事には,本書で対応しているページ数まで添えるようにしてあるので,ぜひ有効に活用してください.

4. まとめ

以上,Pythonで学ぶ画像認識 (機械学習実践シリーズ) を推選書籍として,内容の特徴についてと,管理人が思うウリ(2節)やおすすめ点(3章)をまとめました.4~6節のメインパートでは,画像認識タスクと画像キャプション生成をTransformerで実装する方法が学べます(ViT, DETR).

また,本サイトと本書は「相互補完性」があり,一緒に使用することで,相乗効果が期待できるはずです.

関連ページ