質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

2回答

1476閲覧

機械学習で対象物全体が画像上に映っているか否かを判断することは可能なのでしょうか?

Hiroyadesu

総合スコア14

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

1グッド

3クリップ

投稿2019/08/19 11:22

8月に入り、授業で、機械学習を始めたものです。

素朴な疑問なのですが、機械学習(CNNやそれをもとにしたYOLOなどの技術)関連の技術で、画像認識をする場合、対象物全体が画像に含まれているか否かなどの判定はできるのでしょうか?

YOLO などは、人の一部や車の一部が写っていても「人・車」と認識できます。
私が行いたいなと考えているのは、車全体が映っていれば「車全体」、車の一部しか見えていなければ「車の一部」と判断する分類器です。

これって機械学習の技術で可能なのでしょうか?
先生に聞いてみてもあまりわからなかったもので、
どなたか詳しい方がいれば、教えていただけると幸いです。

Daiki_1981👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/08/20 08:07

車を見る角度によって、見え方が違うと思いますが、そのへんの制約はあるのでしょうか?
Hiroyadesu

2019/08/20 09:51 編集

tiitoi さん、すみません。車は例えに出したものなので、厳密な制約などは考えていません。 違う例ですが、 例えば、 机の上に置かれた本の表紙を撮影した時にその表紙全体が映っているかなどは判断可能でしょうか? この場合、表紙全体が映って入れば「○」、表紙の一部でも見えない箇所があれば「×」とします。 撮影角度によって、表紙の見え方(歪み具合)などは変わると思いますが、そこは考慮しないとします。 あくまで、表紙全体が映っているか否かを分類します。 このような条件下のとき、機械学習で、画像に表紙全体が含まれているかを判定できるのでしょうか??
tiitoi

2019/08/20 10:19

本もあくまで例でしょうか。 隠れているかどうか判断したい物体が何なのか、また撮影条件に制約があるのかどうかによって難易度が変わってくると思います。
Hiroyadesu

2019/08/20 23:16

いいえ、机の上の本は私が物体の全体認識を行いたい対象の一つです。 隠れているかを判定したい物体の一つは本です。 少し背景をお話しします。 私の友達に弱視の方がいます。 弱視とは重度の視覚障害のことで、私の友達は、がんばって光を認識できるくらいの視力です。 その友達に本の認識アプリを提案するとすごく喜んでくれました。 アプリの概要としては、本を撮影するとその本の種類を教えてくれるものです。 弱視の友達は、元々スマートフォンを所持していますが、カメラで物体の全体を画角に収めて撮影することが苦手です。(撮影しても、弱視のため、全体が映っているかどうかの把握が一人では、行えません。) そのため、対象物体の全体がちゃんとフレーム内に収まっているかを判定する機能を付与した認識アプリが必要だと思っています。 将来的に様々な物体で、全体が映っているかの判定機能は必要になります。 機械学習などの技術でそれが行えるのであれば、取り組んでみたいと思います。 代替案1 QRコードのようにかざしながら、本のパターンをスキャンする。 問題 : 本や他の物体ではQRコーdのような明確なパターンを持っていない。
tiitoi

2019/08/21 02:08 編集

背景についてご説明いただきありがとうございます。 意図について理解できました。 将来的に様々な物体でとのことですが、まずは本をターゲットにして取り組まれてはどうでしょうか。 回答に追記したのですが、物体検出でその物体がある矩形の位置が取得できるので、それが画像の端にないかどうかでカメラ内に物体が収まっているかどうかを判定するのはいかがでしょうか。
guest

回答2

0

ベストアンサー

Deep Learning の場合、正解ラベルを与えて学習するので、任意の物体が一部隠れているかどうかを判断するというのは無理です。
例えば、物体検出であればあくまで学習データに含まれるラベルの検出しかできません。

YOLOなどの技術)関連の技術で、画像認識をする場合、対象物全体が画像に含まれているか否かなどの判定はできるのでしょうか?

一部が隠れているかどうかの判定に YOLO などの物体検出モデルは向いていないかもしれません。
どちらかというとセマンティックセグメンテーションのモデルでピクセル単位で領域を特定して、その情報で判断するのがいいかもしれません。

机の上に置かれた本の表紙を撮影した時にその表紙全体が映っているかなどは判断可能でしょうか?

本であれば、画像処理で本の領域を抽出して、その領域に他の物体がないかどうか等で判断する手もあります。

追記

そのため、対象物体の全体がちゃんとフレーム内に収まっているかを判定する機能を付与した認識アプリ

背景についてご説明いただきありがとうございます。
検出対象の物体がカメラで撮影した際に画像内に収まっているかどうか (端で切れてしまっていないかどうか) を判定したいということでよろしいでしょうか。
その場合、YOLO などの物体検出モデルで物体検出を行った際に4点の矩形が取得できるので、それが画像の端のほうに接していないかで判定するのはどうでしょうか。

イメージ説明

この場合、既存の物体検出のモデルを使用できますし、矩形が端にないかどうかは座標を調べるだけで判定できるので実装も簡単です。

QRコードのようにかざしながら、本のパターンをスキャンする。

QR コードが精度よく検出できるのは、QR コードが検出しやすいように作られているからです。
なので、今回のように本でも様々な種類があるといった状況では利用できないと思います。

追記

実際に学習を行おうと思い、本の表紙が映っているデータセットを2200枚程度用意しました(全てiphone8の内蔵カメラで撮影)。撮影する際、全体が映るものから、一部しか映っていないものまで様々なものを用意しました。
上の3枚の画像を機械学習のトレーニングデータにする場合、本の一部しか映っていない画像(上の左から1枚目と2枚目)に "本の一部" というラベルを与えて、本の全体が映っている画像(上の左から3枚目) に "本の全体

" というラベルを与えて学習させた場合、本の全体が含まれているかを判定する識別器ができませんか?

その場合、「本の全体」「本の一部」という2クラス分類問題として解くことになります。
その方法ですと、本の全体が写っている画像と本の一部しか写っていない画像の特徴というのはかなり似ていると思うので、その差異を学習するのは難しいのではないかと予想しています。
とはいえ、機械学習は実際やってみないとどのような結果になるかはわかりませんので、試してみることはよいと思います。

自分が追記に記載したやり方は、「本の全体」「本の一部」というクラス分類問題を行うのではなく、本の物体検出を行い、検出された矩形が画像の端に接していないかどうかで判定するというやり方です。
本というラベルは MSCOCO データセットという有名な物体認識のデータセットに含まれているため、既存の学習済みモデルを使えば、学習しなくてもそのまま検出できます。
以下、YOLOv3 の物体検出モデルの keras 実装 でネットから適当に拾った画像に対して、検出した結果です。

イメージ説明

イメージ説明

画像が端にあるかどうかは矩形の四点の座標と画像の縁の座標を比較することで判定できます。

画像の (幅、高さ) を (W, H)
検出矩形 (左上の x 座標, 左上の y 座標, 右下の x 座標, 右下の y 座標) を (x1, y1, x2, y2)
としたとき、検出矩形が画像の端に近い場合は一部しか写っていない可能性が高いと判断できるため、以下の条件式で判定する。

python

1thresh = 10 # 画像の端から何ピクセル以内だったら近いと判定するか 2if x1 < thresh or \ 3 W - x2 < thresh or \ 4 y1 < thresh or \ 5 H - y2 < thresh: 6 print("はみ出している")

投稿2019/08/20 10:15

編集2019/08/26 07:23
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hiroyadesu

2019/08/26 06:31 編集

tiitoi さん、丁寧な返信をしてくださり、ありがとうございます。 tiitoi さんの"追記"で述べられている通りのことがまさに自分が行いたいことです。 確かに矩形の座標を取得できるので、まずは実装が簡単なもので、かつ対象物体は本の表紙のみに絞って手続きを行おうと思います。(端にあるなしで判断すると確かに正確に行えそうです。とてもいいアイデアだと思います。使わせてください。) tiitoi さんに最後にもう一つ回答いただけると嬉しいです。 実際に学習を行おうと思い、本の表紙が映っているデータセットを2200枚程度用意しました(全てiphone8の内蔵カメラで撮影)。撮影する際、全体が映るものから、一部しか映っていないものまで様々なものを用意しました。 上の3枚の画像を機械学習のトレーニングデータにする場合、本の一部しか映っていない画像(上の左から1枚目と2枚目)に "本の一部" というラベルを与えて、本の全体が映っている画像(上の左から3枚目) に "本の全体 " というラベルを与えて学習させた場合、本の全体が含まれているかを判定する識別器ができませんか? 端にあるかどうかで判断することもできそうですが、もしかしたらそもそも学習のさせ方で一部と全体を区別できるのではと思ったので質問させていただきました。 すごく基礎的な質問だとは思いますが、もしお時間があれば、教えていただきたいです。
tiitoi

2019/08/26 07:28 編集

> 識別器ができませんか? 追記しました。 試してみる価値はあるとは思います。 機械学習のクラス分類の仕組みは簡単にいうと、「生のデータから特徴量を抽出して、適当な線を引いてデータを分ける」ということなので、2つの特徴が似ていると分けることができないので学習することは難しくなります。 本の一部、本全体どちらも本であることには変わりはなく特徴としては似ているので難しいのではないかと考えています。 ただ、できないと結論付けたわけではないので、トライしてみることはよいと思います。機械学習は実際にやってみたいとどのような結果になるかはわかりません。 画像分類のチュートリアルはネット上に沢山あります。
guest

0

ちょっと話として外しているかもですが…

背景事情の話を読んだ感じ…

  • 撮影時には本は閉じている(表紙が撮影対象)
  • ある程度撮影状況は制約できる(「正面」とは著しく異なる角度での撮影は考慮しない,とか)

話に思うので,
「本そのものを見つける」検出器の他に,補助として【「本の角」を検出する検出器】のようなものを用いる方向を考えることはできないでしょうか?
(つまり,本が見つかったときに→4つ角も見つかっているか?的な.)

投稿2019/08/27 02:42

fana

総合スコア11671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問