OpneCV, カスケード分類機, TensorFlow, 等々のメモ
【OpenCV】
- 目的: 画像処理などの、機械学習や推論のための前処理
- 機能: 画像フィルタリング、顔認識、物体検出など
- 用途: 画像の前処理、簡単な分類タスク
- 画像のフィルタリング(ぼかし、エッジ検出)
- 顔認識(セキュリティカメラ)
- 物体追跡(ロボティクス)
- ステッチング(パノラマ画像作成)
【TensorFlow】
- 目的: 機械学習とディープラーニング
- 機能: ニューラルネットワークの設計、訓練、推論
- 用途: 複雑な分類、回帰、自然言語処理
- 画像分類(犬と猫の識別)
- 自然言語処理(チャットボット)
- 時系列分析(株価予測)
- 強化学習(ゲームAI)
OpenCVは主に「画像を解析・加工」する用途、
TensorFlowは「データを学習」して予測や分類を行う用途。
どっちも機械学習系のライブラリのイメージだが、強みが違う。
画像加工→学習
「カスケード分類機」と「機械学習モデル」の違い
【機械学習モデル】
基本的には、大量の入力データから特定のパターンや関係性(特徴量)を自ら見つけ出し学習する。[1]
NW(ニューラルネットワーク)ディープラーニングとか。
自ら特徴量を見つけ出すので、多目的で多機能、複雑な問題にも対応できる。
訓練がカスケード分類機よりは大変。大量のデータが必要。
【カスケード分類機】
カスケード分類機も学習モデル
の一種と言える。学習の仕方や特徴が違うイメージ。[2]
特定(顔とか)の特徴量が事前に設定された大量の入力データを用いて学習モデルを作成し、画像から高速にその特徴の物体検出ができる
特徴量の設定は、矩形フィルタなどの簡単で固定な計算が主。「顔はこれ。」みたいな感じで[3]
特徴量が単純なので、特定のタスク(顔検出とか)を高速に検出できる。比較的に単純な検出作業に向いている。
あらかじめ特徴量が決まった画像などを与えて学習させていくので、訓練は比較的簡単で高速。
有名どこで言うとHaar Cascades
とか。
【まとめ】
カスケード分類機は、
特定の目的(例:顔認識)のために設計された学習モデルの一種。
特定の目的
のためなので、特徴量は事前に与えられていて、単純な物体検出が高速で実施できる。
機械学習モデルは、
多目的で多機能な問題解決が可能な学習モデル。
特にNWやディープラーニングのような手法では自ら特徴量を学習するのが特徴。
そのため複雑な問題にも対応できるが、その分大量のデータと計算能力が必要。
-
決定木やSVMなども機械学習の一種だが、これらは特徴量は人が設計することが多い。NWやDeepLeaningとで少し
機械学習
の認識と特徴量の出し方が変わることに注意。 ↩︎ -
学習モデル
という言葉は広義の意味を持つので、文脈依存な部分があるので注意。 ↩︎ -
特徴量の設定については、画像の明暗差で設定する方法などがある。詳細は他の記事とか参照OpenCV, dlibなどでのカスケード分類器まとめ ↩︎
TensorFlowは独自の概念?(Tensor
)を持っているので、混乱の元。
tensor例:
tensor:[1, 192, 256, 3]
1: 入力に必要なデータ数(≒入力画像枚数)
192: height
256: width
3: chanel数(RGB) ※グレースケールだとchanelは1(白黒のみなので)
以下記事が割と分かりやすかった。
OpenCVやカスケード分類機などの参考記事