書籍概要

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

著者
発売日
更新日

概要

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
  • 索引
  • 著者プロフィール

サポート

ダウンロード

学習済みモデルのダウンロード

(2022年4月6日更新)

本書「OpenCVではじめよう ディープラーニングによる画像認識」の第7章で解説している内容を試していただけるように,以下のリンクから学習済みモデルをダウンロードできます。

学習済みモデルは,該当する節ごとに圧縮したZIP ファイルで提供していますが,ご自身の通信状況やPCの空き容量によってはダウンロードできないことも考えられますのでご注意ください。ここで配布している各学習済みモデルのライセンスは,フォルダ内のLICENSEファイルを参照してください。

ダウンロード
7.2.zip
SHA256:
de003d6c9bf7a866c441344e0e08b675208cd652b302beb11e6c7ac8d5ca910e
7.3.zip
SHA256:
b1793325c84db9a4d6946da3e2ee01425493426815dbaf2800f98931a47cc392
7.4.zip
SHA256:
d801fd75c8454f5c70f96d3f08f21605ec028b6f2bd2fe1b6c5756eb4e474962
7.5.zip
SHA256:
eae2d895436e6cee5814474b9dfba3b7524db5b71555f36b7afa0a33930f66a8
7.6.zip
SHA256:
1bf5878a68574e250102b37f06653a99246425a865e8483cb8021a8d2dc0a4de
7.7.zip
SHA256:
00cc07b459cfc5b4679359515f9ae854cd6f33d32270c75487436592768dad8e

商品一覧