OpenCVではじめよう ディープラーニングによる画像認識
2022年4月30日紙版発売
2022年4月8日電子版発売
吉村康弘,杉浦司,五木田和也 著
B5変形判/312ページ
定価3,740円(本体3,400円+税10%)
ISBN 978-4-297-12775-6
書籍の概要
この本の概要
OpenCVはコンピュータビジョン分野でもっとも利用されているオープンソースフレームワークです。近年の人工知能ブームに呼応する形で機械学習やディープラーニングAPIが強化され,物体の名称と位置を認識するオブジェクト検出(Object Detection)といったタスクも容易に扱えるようになりました。
とはいえ,画像認識タスクがすべてディープラーニングによる手法に置き換わるわけではありません。これまでに培った手法を選択した方が堅実な場面もあるため,本書では現時点で重要とされる画像処理手法を整理します。OpenCVの基礎的な解説からはじめ,dnnモジュールを用いたディープラーニングによる画像認識についても解説していきます。
サンプルコードにはPythonを利用し,OpenCV 4.5.Xに対応しています。
こんな方におすすめ
- OpenCVで画像認識を試してみたい方
- OpenCVの最新のディープラーニングの実装方法を知りたい方
目次
- はじめに
- 本書の構成
- 本書で扱わないこと,参考文献
- API の解説
- サンプルコードとサポート
- 開発環境
第1章 OpenCVとは
- 1.1 OpenCVの概要
- 1.2 主要モジュール
- 1.3 OSSライセンス
- 1.3.1 OpenCVのOSSライセンス
- 1.3.2 opencv-pythonのOSSライセンス
- 1.4 サポート言語
- 1.4.1 公式サポート言語
- 1.4.2 非公式サポート言語
- 1.5 サポートプラットフォーム
- 1.6 高速化
- 1.6.1 スレッド並列化
- 1.6.2 SIMD命令対応
- 1.6.3 アクセラレータ対応
- 1.7 開発の歴史
- 1.8 ブランチ管理
- 1.8.1 2.4ブランチ
- 1.8.2 3.4ブランチ
- 1.8.3 4.xブランチ
- 1.8.4 5.xブランチ
- 1.8.5 masterブランチ
- 1.8.6 nextブランチ
- 1.9 各種サイト
- 1.9.1 公式サイト
- 1.9.2 公式リポジトリ
- 1.9.3 有志サイト
第2章 OpenCVインストール
- 2.1 OpenCVのインストール
- 2.2 pip
- 2.2.1 依存パッケージインストール
- 2.2.2 opencv-pythonインストール
- 2.2.3 opencv-contrib-pythonインストール
- 2.2.4 動作確認
- 2.2.5 opencv-pythonパッケージのバージョン番号
- 2.2.6 Windows環境固有の注意点
- 2.3 Miniconda
- 2.3.1 Minicondaインストール
- 2.3.2 依存パッケージインストール
- 2.3.3 opencvパッケージインストール
- 2.3.4 動作確認
- 2.4 Docker
- 2.4.1 Dockerインストール
- 2.4.2 Dockerイメージのビルド
- 2.4.3 Dockerコンテナの起動
- 2.4.4 動作確認
- 2.5 ソースコード
- 2.5.1 依存パッケージインストール
- 2.5.2 ビルド,インストール
- 2.5.3 動作確認
- 2.5.4 CMakeオプション
第3章 coreモジュール
- 3.1 基本処理
- 3.1.1 画像データの扱い
- 3.1.2 ブランク画像生成
- 3.1.3 画素値の参照,代入
- 3.1.4 width,height,チャンネル情報の取得
- 3.1.5 ROI操作
- 3.2 ピクセルごとの操作
- 3.2.1 add,subtract
- 3.2.2 bitwise_and,bitwise_or
- 3.2.3 addWeighted
- 3.2.4 absdiff
- 3.2.5 copyTo
- 3.2.6 flip
- 3.2.7 rotate
- 3.2.8 clip
- 3.3 統計情報の取得
- 3.3.1 min,max
- 3.3.2 minMaxLoc
- 3.3.3 mean
- 3.3.4 sum
- 3.3.5 countNonZero
- 3.4 画像の分割,結合
- 3.4.1 split,merge
- 3.4.2 hconcat,vconcat
- 3.5 ユーティリティ
- 3.5.1 getBuildInformation
- 3.5.2 TickMeter
- 3.5.3 FileStorage
- 3.5.4 useOptimized
- 3.5.5 setUseOptimized
第4章 imgprocモジュール
- 4.1 画像の前処理と後処理
- 4.1.1 OpenCVで利用できる手法
- 4.1.2 画像の出力方法
- 4.2 色の変換
- 4.2.1 色空間の変換(cvtColor
- 4.2.2 チャンネルで分割(split)
- 4.2.3 HSV色空間の活用
- 4.2.4 その他の色変換
- 4.3 適応的しきい値による2値化(adaptiveThreshold)
- 4.3.1 しきい値(threshold)
- 4.3.2 adaptiveThresholdによる2値化
- 4.3.3 輪郭の抽出(findContours)
- 4.4 画像の幾何変換
- 4.4.1 アフィン変換(warpAffine)
- 4.4.2 射影変換(ホモグラフィ変換)
第5章 imgcodecs,videoioモジュール
- 5.1 画像の読み込み
- 5.1.1 静止画を読み込む(imread)
- 5.1.2 動画の読み込み(VideoCapture)
- 5.1.3 ネットワークカメラからの読み込み
- 5.1.4 Webカメラからの読み込み
- 5.1.5 連番画像の読み込み
- 5.2 画像の書き込み
- 5.2.1 静止画の書き込み(imwrite)
- 5.2.2 動画の書き込み(VideoWriter)
第6章 ディープラーニング
- 6.1 ディープラーニングの概要
- 6.1.1 モデル,パラメータ,オプティマイザ
- 6.1.2 過小適合と過剰適合
- 6.1.3 ディープラーニングでの考え方
- 6.2 精度評価
- 6.2.1 回帰の精度評価
- 6.2.2 分類の精度評価
- 6.3 画像処理におけるディープラーニング
- 6.3.1 CNN
- 6.3.2 CNNの優位性
第7章 dnnモジュール基礎
- 7.1 dnnモジュールの概要
- 7.1.1 dnnモジュールとは?
- 7.1.2 サポートしているモデルフォーマット
- 7.1.3 推論エンジンと実行デバイス
- 7.1.4 High Level APIとLow Level API
- 7.2 顔検出
- 7.2.1 顔検出とは?
- 7.2.2 顔検出(OpenCV Face Detector)
- 7.2.3 NMS(Non-Maximum Suppression)
- 7.2.4 パフォーマンス比較
- 7.2.5 APIの仕様
- 7.3 オブジェクト検出
- 7.3.1 オブジェクト検出とは?
- 7.3.2 精度重視のオブジェクト検出(YOLOv4)
- 7.3.3 さらに精度の高いオブジェクト検出(Scaled-YOLOv4)
- 7.3.4 処理速度重視のオブジェクト検出(YOLOv4-tiny)
- 7.3.5 パフォーマンス比較
- 7.3.6 APIの仕様
- 7.4 クラス分類
- 7.4.1 クラス分類とは?
- 7.4.2 精度重視のクラス分類(EfficientNet)
- 7.4.3 信頼度上位5個のクラスを取得する
- 7.4.4 処理速度重視のクラス分類(MobileNet v3)
- 7.4.5 パフォーマンス比較
- 7.4.6 APIの仕様
- 7.5 セグメンテーション
- 7.5.1 セグメンテーションとは?
- 7.5.2 セグメンテーション(DeepLab v3)
- 7.5.3 APIの仕様
- 7.6 テキスト検出とテキスト認識
- 7.6.1 テキスト検出,テキスト認識とは?
- 7.6.2 テキスト検出(DB)
- 7.6.3 テキスト認識(CRNN-CTC,DenseNet-CTC)
- 7.6.4 パフォーマンス比較
- 7.6.5 APIの仕様
- 7.7 キーポイント検出
- 7.7.1 キーポイント検出とは?
- 7.7.2 キーポイント検出(Lightweight OpenPose)
- 7.7.3 キーポイントのもとになるヒートマップを取得する
- 7.7.4 APIの仕様
第8章 dnnモジュール応用
- 8.1 dnnモジュールの対応レイヤ
- 8.2 カスタムレイヤ対応
- 8.2.1 カスタムレイヤのクラスを実装する
- 8.2.2 カスタムレイヤを登録する
- 8.2.3 動作確認
- 8.3 学習済みモデルの診断ツール(model-diagnostics)
- 8.3.1 概要
- 8.3.2 環境構築
- 8.3.3 使い方
- 8.3.4 実行例
- 8.4 外部DNNフレームワーク連携
- 8.4.1 CUDA backend
- 8.4.2 Intel Inference Engine backend
- 8.4.3 Tengine backend
- 8.5 学習済みモデルの利用
- 8.5.1 OpenCV Zoo
- 8.5.2 Open Model Zoo
- 索引
- 著者プロフィール
この本に関連する書籍
-
改訂新版 ROS 2ではじめよう 次世代ロボットプログラミング 〜ロボットアプリケーション開発のための基礎から実践まで
本書は,2019年に刊行した「ROS2 ではじめよう 次世代ロボットプログラミング」の改訂版です。ロボット開発のためのミドルウェアROS 2の普及に伴い,改訂版ではROS 2に...
-
図解即戦力 画像センシングのしくみと開発がこれ1冊でしっかりわかる教科書
CASEやIoT技術の中核を担う画像センシング技術について,わかりやすいフルカラー図解で解説する入門書です。センサーやプロセッサなどのハードウェア面から画像処理・画...
-
Vision Transformer入門
自然言語処理分野におけるブレイクスルーとなったTransformerをコンピュータビジョンに応用したモデルがVision Transformer(ViT)です。さまざまなコンピュータビジョ...
-
ディープラーニングを支える技術 ——「正解」を導くメカニズム[技術基礎]
初学者の方々に向けた,ディープラーニングの技術解説書。 2012年に一般画像分類コンテスト(ILSVRC)で衝撃的な性能を達成したAlexNetの登場以来,急速な進化を遂げて...
-
即戦力になるための ディープラーニング開発 実践ハンズオン
本書は,ディープラーニングによる画像認識を題材に,現場のプロジェクトで必要とされる知識をハンズオン形式で学習するための入門書です。ディープラーニング開発プロ...