0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初学者向け:PyTorch / Keras / OpenCV / scikit-learn の違い

0
Posted at

はじめに

PyTorch / Keras / OpenCV / scikit-learn の違いと、画像から大きさ(実寸)を推定する現実的な方法をまとめます。

AIや画像処理を始めると、PyTorch / Keras / OpenCV / scikit-learn が頻繁に出てきます。
ただしこれらは「同じカテゴリのライブラリ」ではなく、役割(担当)が違う道具です(※一部は守備範囲が重なります)。

この記事ではまず4つの役割の違いを整理して、そのあとによくある疑問
「画像から物の大きさ(実寸)って推定できるの?」 を、条件つきで現実的な方法に絞って解説します。

私はまだ学習途中なので、学んだ内容を備忘録として残しつつ、同じようにこれから始める人が「迷いにくくなる」ことを目的に書いています。

この記事で分かること

  • PyTorch / Keras / OpenCV / scikit-learn の「何が違うか」
  • どれを先に学べばいいか(目的別)
  • 画像から“実寸”を出すための条件と、代表的な手法
  • 初学者がやりがちな落とし穴

1. 4つのライブラリは「役割」が違う(ただし少し重なる)

1-1. ざっくり一言まとめ

  • OpenCV:画像を 読む・加工する・測る(画像処理・CVの道具箱)
  • scikit-learn:定番の 機械学習(非DL中心) を手堅く回す(回帰・分類・評価)
  • Keras(多くは tf.keras:深層学習を 短いコードで書きやすい(高レベルAPI)
  • PyTorch:深層学習を 自由に作り込める(柔軟性・拡張性)

「どれが上」ではなく、目的が違うと思うと選びやすいです。
また、たとえば「scikit-learnでも画像特徴量を使った学習はできる」「OpenCVにも古典的MLの機能がある」など、守備範囲は一部重なります(主戦場が違う、という理解が安全です)。

1-2. 比較表(初学者向け)

ライブラリ 主な役割 得意なこと 典型ユースケース 初心者の最初のつまずき
OpenCV 画像処理 / 計測 変換、前処理、輪郭、透視補正、カメラ扱い、キャリブレーション 計測、前処理、画像加工、カメラ映像 座標系・幾何(角度/透視/歪み)
scikit-learn 機械学習(非DL中心) 前処理、学習、評価、CV、パイプライン 表データの分類/回帰、ベースライン作り(画像でも特徴量化すれば可) 特徴量設計、データ分割
Keras(tf.keras 深層学習(書きやすい) 学習の型がシンプル、モデル構築が簡単 画像分類、時系列、入門教材、プロトタイプ “中で何が起きてるか”が見えにくい
PyTorch 深層学習(自由) 低レベルまで制御、研究〜実務の拡張 物体検出、生成、独自モデル、複雑な学習 学習ループ/デバッグ量が増える

2. どれを先に学ぶ?(目的別おすすめルート)

2-1. 目的:機械学習の全体像を最短で掴みたい

おすすめ:scikit-learn →(必要になったら)Keras/PyTorch

理由:前処理〜評価まで「型」が揃っていて、概念が整理しやすいです。

2-2. 目的:画像を扱いたい(前処理・計測・カメラ)

おすすめ:OpenCV →(学習モデルが必要なら)Keras/PyTorch

理由:画像の読み書き・補正・変換ができないと、学習以前で詰まりがちです。

2-3. 目的:深層学習を最短で動かしたい(成果を先に出したい)

おすすめ:既存モデルを動かす → Keras(入門)or PyTorch(実務寄り) → 必要に応じてOpenCV

理由:最初の成功体験を作りやすいです。
その後、前処理の工夫・計測・幾何補正が必要になってからOpenCVに戻るとスムーズです。

3. 実務では「組み合わせ」が普通

画像分類を例にすると、よくある流れはこうです。

  1. OpenCV:画像を読み込み・リサイズ・前処理(歪み補正や切り出し等)
  2. Keras / PyTorch:モデル学習・推論
  3. scikit-learn:評価指標・混同行列・ベースライン比較(補助)

つまり「どれか一つ覚えればOK」ではなく、役割に応じて併用するのが自然です。

4. 画像から“大きさ(実寸)”は推定できる?

4-1. 結論(大事)

  • スケール(基準)が入るなら、実寸を出せる
  • スケールが何もない1枚画像だけだと、実寸は原理的に一意に決まらない

なぜなら、同じ見え方で
「小さい物を近く」or「大きい物を遠く」に置けてしまうからです。

だから実務では、基準(画像内/外)・距離・深度(3D) のどれかを入れるのが鉄則です。

※「基準物を一緒に写していない」ように見えても、画像内に 既知サイズの規格品(クレカ、A4、コイン等)が写っていれば、それは「基準あり」に含まれます。

5. 方法別:現実的な“実寸推定”アプローチ

方法A:基準物(定規/A4/コイン/規格品)を一緒に写す(最優先おすすめ)

使える場面

  • 机の上、床の上など「同じ平面」にあるものを測りたい
  • まずは簡単に精度を出したい

手順(考え方)

  1. 基準物の実寸を決める(例:A4短辺 210mm)
  2. 画像で基準物のピクセル長を測る(例:短辺が 840px)
  3. mm/px = 210 / 840 = 0.25
  4. 対象のピクセル長 × 0.25 で実寸に換算

コツ(重要)

  • 基準物と対象は同じ平面上に置く
  • できれば 同じ向きの長さを測る(射影条件が揃うほど誤差が減る)

良いところ

  • 実装が簡単
  • 精度も出しやすい

注意点

  • 斜め撮影だと「見かけの長さ」が縮む
    → 次の「透視補正」とセットがおすすめ

方法B:透視補正(ホモグラフィ)で平面を“真上/正面視点”に直して測る

使える場面

  • 対象が机/床/壁など「平面上」にある
  • 斜めから撮ってしまった
  • 平面上の長さや面積を測りたい

前提(ここが肝)

  • ホモグラフィは 平面上の計測(長さ・面積) に強い
  • 立体の「高さ」や、平面から浮いた部分の長さは別問題(誤差が増える)

ざっくり何をする?

  • A4用紙など「四隅が分かる基準」を使う
  • 斜めに写った平面を、正面(真上)から見た形に変換する
  • 変換後の画像上で mm/px を作って測る

何が嬉しい?

  • 斜め撮影でも、平面なら精度が出る
  • 面積推定にも使える

方法C:距離が分かるなら(カメラモデル)で換算

使える場面

  • カメラと対象の距離が測れる(固定環境、距離計、ARなど)
  • ある程度、撮影条件が管理できる

概念

  • 「ピクセルの大きさ」は距離で変わる
  • 距離が分かれば、ピクセルから実寸へ換算できる

追加で必要になりやすい情報

  • 画角/焦点距離相当(内部パラメータ)
    • 厳密にはカメラキャリブレーション(内部パラメータ)があると強い
  • 対象がカメラに対してどの向きか(姿勢)
    • 斜めだと投影で短く見える

注意点

  • 距離の誤差がそのままサイズ誤差になる
    → 距離推定が一番むずいポイントになりがち

方法D:複数画像 / 深度センサで3Dにして測る(強いが準備がいる)

使える場面

  • 2台カメラ(ステレオ)
  • 動画など複数視点(SfM/SLAM的アプローチ)
  • LiDAR/深度カメラ(iPhoneのLiDAR等)が使える

良いところ

  • “平面じゃない対象”(人や家具など)にも対応しやすい
  • 精度を上げやすい(条件が揃えば)

注意点

  • キャリブレーションや環境整備が必要
  • 反射・暗所・テクスチャの少ない面で精度が落ちることがある

6. 初学者がハマりがちな落とし穴

6-1. “1枚画像だけで実寸が出る”と思ってしまう

スケールがないと無理です。
ただし「画像内に既知サイズの物が写っている」なら、それはスケールになります。

6-2. 斜め撮りでそのままピクセル換算する

平面計測なら、透視補正(ホモグラフィ) を入れるだけで一気に改善します。

6-3. レンズ歪みを無視する

広角スマホだと端ほど歪んで誤差が出ます。
精度が必要なら キャリブレーション(OpenCVのカメラキャリブレーション)や undistort を検討してください。

手軽な対策としては、

  • できるだけ 画面中央付近で測る
  • 端に対象や基準物を置かない
    だけでも誤差が減ることが多いです。

6-4. 「長さ」を測る前に「何を長さとするか」を決めてない

  • 外接矩形の幅?
  • 輪郭の最大径?
  • 端点同士の距離?
    目的に応じて定義が変わります。

例:同じ「幅」でも
「外接矩形の幅」と「輪郭の最大径」では結果が変わるので、仕様を先に決めるのが大事です。

まとめ

  • OpenCVは画像を整える・測る担当(幾何補正やキャリブレーションも)
  • scikit-learnは定番機械学習(非DL中心)の担当(評価も強い)
  • **Keras(多くは tf.keras)**は深層学習を手軽に書く担当
  • PyTorchは深層学習を自由に作り込む担当
  • 画像からの実寸推定は、基本的に スケール(基準)・距離・深度(3D) のどれかを入れるのが現実解
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?