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

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

紙版発売
電子版発売

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

著者プロフィール

吉村康弘(よしむらやすひろ)

奈良先端科学技術大学院大学 情報科学研究科 情報処理学専攻 博士前期課程 修了 株式会社フィックスターズに勤務,コンピュータビジョン,ロボティクスに関するアルゴリズム開発,高速化の業務に従事。
おもな著書,連載として「OpenCV プログラミングブック」,「OpenCV入門【3.0対応】(https://www.atmarkit.co.jp/ait/series/13124/)」など。また,技術書典にてOpenCVに関する技術書を執筆(https://dandelion1124.booth.pm/)ほか,OpenCV,librealsenseなどOSS開発へ貢献。

Web: http://atinfinity.github.io/
GitHub:atinfinity


杉浦司(すぎうらつかさ)

名城大学大学院理工学研究科情報工学専攻を修了,修士(工学)
株式会社ホロラボに勤務,センサーや画像処理,点群処理を扱うソフトウェアエンジニア。
おもな著書に「KINECT for Windows SDKプログラミング Kinect for Windows v2センサー対応版」など。
ほか,Microsoft MVP for Windows Developmentを受賞,Point Cloud Libraryのコミッターを務めるなどOSSへ貢献。
本書の執筆にあたり,いくつかのOpenCVのバグを報告,修正した。

Blog:https://sugiura-lab.hatenablog.com/
Twitter:@UnaNancyOwen


五木田和也(ごきたかずや)

株式会社ウサギィ役員,ガルム株式会社代表。画像認識,自然言語処理,IoTまわりを扱うほか,経営から営業までなんでもやるエンジニア。
著書: コンピューターで「脳」がつくれるか(技術評論社)

Twitter: @kazoo04