OpenCVではじめよう ディープラーニングによる画像認識

書籍情報

発売日 : 2022年04月30日

著者/編集 : 吉村 康弘/五木田 和也/杉浦 司

出版社 : 技術評論社

発行形態 : 単行本

書籍説明

目次

目次

はじめに
本書の構成
本書で扱わないこと、参考文献
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

索引
著者プロフィール

著者情報

吉村 康弘
吉村康弘(よしむらやすひろ) 奈良先端科学技術大学院大学 情報科学研究科 情報処理学専攻 博士前期課程 修了 株式会社フィックスターズに勤務、コンピュータビジョン、ロボティクスに関するアルゴリズム開発、高速化の業務に従事。 おもな著書、連載として「OpenCV プログラミングブック」、「OpenCV入門【3.0対応】」など。また、技術書典にてOpenCVに関する技術書を執筆ほか、OpenCV、librealsenseなどOSS開発へ貢献。
吉村, 康弘
五木田 和也
五木田和也(ごきたかずや) 株式会社ウサギィ役員、ガルム株式会社代表。画像認識、自然言語処理、IoTまわりを扱うほか、経営から営業までなんでもやるエンジニア。 著書: コンピューターで「脳」がつくれるか(技術評論社) Twitter: @kazoo04
杉浦, 司, 1987-
五木田, 和也
杉浦 司
杉浦 司(すぎうらつかさ) 名城大学大学院理工学研究科情報工学専攻を修了、修士(工学)株式会社ホロラボに勤務、センサーや画像処理、点群処理を扱うソフトウェアエンジニア。 おもな著書に「KINECT for Windows SDKプログラミング Kinect for Windows v2センサー対応版」など。ほか、Microsoft MVP for Windows Developmentを受賞、Point Cloud Libraryのコミッターを務めるなどOSSへ貢献。本書の執筆にあたり、いくつかのOpenCVのバグを報告、修正した。 Twitter:@UnaNancyOwen