回答編集履歴

2

d

2019/08/26 07:23

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -53,3 +53,69 @@
53
53
  QR コードが精度よく検出できるのは、QR コードが検出しやすいように作られているからです。
54
54
 
55
55
  なので、今回のように本でも様々な種類があるといった状況では利用できないと思います。
56
+
57
+
58
+
59
+ ## 追記
60
+
61
+
62
+
63
+ > 実際に学習を行おうと思い、本の表紙が映っているデータセットを2200枚程度用意しました(全てiphone8の内蔵カメラで撮影)。撮影する際、全体が映るものから、一部しか映っていないものまで様々なものを用意しました。
64
+
65
+ > 上の3枚の画像を機械学習のトレーニングデータにする場合、本の一部しか映っていない画像(上の左から1枚目と2枚目)に "本の一部" というラベルを与えて、本の全体が映っている画像(上の左から3枚目) に "本の全体
66
+
67
+ " というラベルを与えて学習させた場合、本の全体が含まれているかを判定する識別器ができませんか?
68
+
69
+
70
+
71
+ その場合、「本の全体」「本の一部」という2クラス分類問題として解くことになります。
72
+
73
+ その方法ですと、本の全体が写っている画像と本の一部しか写っていない画像の特徴というのはかなり似ていると思うので、その差異を学習するのは難しいのではないかと予想しています。
74
+
75
+ とはいえ、機械学習は実際やってみないとどのような結果になるかはわかりませんので、試してみることはよいと思います。
76
+
77
+
78
+
79
+ 自分が追記に記載したやり方は、「本の全体」「本の一部」というクラス分類問題を行うのではなく、本の物体検出を行い、検出された矩形が画像の端に接していないかどうかで判定するというやり方です。
80
+
81
+ 本というラベルは MSCOCO データセットという有名な物体認識のデータセットに含まれているため、既存の学習済みモデルを使えば、学習しなくてもそのまま検出できます。
82
+
83
+ 以下、YOLOv3 の物体検出モデルの [keras 実装](https://github.com/qqwweee/keras-yolo3) でネットから適当に拾った画像に対して、検出した結果です。
84
+
85
+
86
+
87
+ ![イメージ説明](57eb6f564f80f59df9c9dfe3e512b228.png)
88
+
89
+
90
+
91
+ ![イメージ説明](595fe5143047458593ed18d03bbb0df9.png)
92
+
93
+
94
+
95
+ 画像が端にあるかどうかは矩形の四点の座標と画像の縁の座標を比較することで判定できます。
96
+
97
+
98
+
99
+ 画像の (幅、高さ) を (W, H)
100
+
101
+ 検出矩形 (左上の x 座標, 左上の y 座標, 右下の x 座標, 右下の y 座標) を (x1, y1, x2, y2)
102
+
103
+ としたとき、検出矩形が画像の端に近い場合は一部しか写っていない可能性が高いと判断できるため、以下の条件式で判定する。
104
+
105
+
106
+
107
+ ```python
108
+
109
+ thresh = 10 # 画像の端から何ピクセル以内だったら近いと判定するか
110
+
111
+ if x1 < thresh or \
112
+
113
+ W - x2 < thresh or \
114
+
115
+ y1 < thresh or \
116
+
117
+ H - y2 < thresh:
118
+
119
+ print("はみ出している")
120
+
121
+ ```

1

d

2019/08/26 07:23

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -19,3 +19,37 @@
19
19
 
20
20
 
21
21
  本であれば、画像処理で本の領域を抽出して、その領域に他の物体がないかどうか等で判断する手もあります。
22
+
23
+
24
+
25
+ ## 追記
26
+
27
+
28
+
29
+ > そのため、対象物体の全体がちゃんとフレーム内に収まっているかを判定する機能を付与した認識アプリ
30
+
31
+
32
+
33
+ 背景についてご説明いただきありがとうございます。
34
+
35
+ 検出対象の物体がカメラで撮影した際に画像内に収まっているかどうか (端で切れてしまっていないかどうか) を判定したいということでよろしいでしょうか。
36
+
37
+ その場合、YOLO などの物体検出モデルで物体検出を行った際に4点の矩形が取得できるので、それが画像の端のほうに接していないかで判定するのはどうでしょうか。
38
+
39
+
40
+
41
+ ![イメージ説明](4cee0017da51ebd50f29d65b3206eac2.png)
42
+
43
+
44
+
45
+ この場合、既存の物体検出のモデルを使用できますし、矩形が端にないかどうかは座標を調べるだけで判定できるので実装も簡単です。
46
+
47
+
48
+
49
+ > QRコードのようにかざしながら、本のパターンをスキャンする。
50
+
51
+
52
+
53
+ QR コードが精度よく検出できるのは、QR コードが検出しやすいように作られているからです。
54
+
55
+ なので、今回のように本でも様々な種類があるといった状況では利用できないと思います。