回答編集履歴

2

 

2022/03/27 22:11

投稿

退会済みユーザー
test CHANGED
@@ -4,6 +4,14 @@
4
4
 
5
5
  「調べても出てこなかった」原因の一つは、「課題の認識粒度がでかすぎた」があると思います。下にかみ砕いた
6
6
  課題を書きます。個々の課題を解決できうる技術はそろっているのですが、それをまとめて解こうとする技術はどこにもない(あっても公開されていない、便利なので誰も公開しない――たぶん営利企業がすること)と思います。
7
+
8
+
9
+ ---
10
+ > 1枚の画像から複数情報を読み取りカテゴライズできるか
11
+
12
+ 多分ですが、質問のいとは「リンゴ5玉500円の写っている画像で「りんご」「5玉」「500円」という出力をするニューラルネットワークが欲しい」、というものと思います。「途方もない数のPOPデータをかき集めて、出力層の出力数をそれらの数だけ用意すればできる」と思います。
13
+
14
+ が、**でかい課題のままニューラルネットワークにつっこんでも、でかい課題を細かく分解してほしい形にしてくれるほど今のニューラルネットワークはまだ賢くない**です。これが根底にあり、下記のような形の回答となりました。
7
15
 
8
16
  ---
9
17
 
@@ -30,3 +38,4 @@
30
38
  ---
31
39
 
32
40
  #1-3はそれなりにゴツい作業が必要になります。手間を考えるとオンラインでPDFのチラシをDLして文字データから直接認識させるだとか、スーパーマーケットと提携して元からCSVの状態でデータをもらうとかしたほうが商売ベースに乗っけられそうです。
41
+

1

2022/03/27 22:05

投稿

退会済みユーザー
test CHANGED
@@ -14,15 +14,15 @@
14
14
 
15
15
  **#1**
16
16
  [日本語用OCR](https://github.com/tanreinama/OCR_Japanease)は手書きで認識できるくらいですので、いろいろなフォントも学習させれば使えるレベルになりそうです。優秀なOCRのようで、塊ごとに認識して出力してくれるので使いやすいと思います。
17
- 次に、この認識した塊の文字列が何を指すか判別がいります。「りんご」「5玉」「500円」という文字列に価値を持たせる必要があるためです。人間であれば文字列の価値がわかりますが、ここまでだとプログラム的には「○○という文字列があるのは分かる(それの価値は知らん!)」というところで止まっているためです。これをする処理が、Word2Vecと呼ばれる処理です。「○○と文字列」を「x,y,z」みたいな座標データ(行列)に変換します。
17
+ 次に、この認識した塊の文字列が何を指すか判別がいります。「りんご」「5玉」「500円」という文字列に価値を持たせる必要があるためです。人間であれば文字列の価値がわかりますが、ここまでだとプログラム的には「○○という文字列があるのは分かる(それの価値は知らん!)」というところで止まっているためです。これをする処理が、[Word2Vec](https://blog.hoxo-m.com/entry/2020/02/20/090000)と呼ばれる処理です。「○○と文字列」を「x,y,z」みたいな座標データ(行列)に変換します。
18
18
 
19
19
  **#2**
20
- 先の#1で「りんご」「5玉」「500円」の画像上の距離の近さで「どこまでがある商品の説明」か大体は判別できると思われるためです。これで処理できない場合のオプションが枠の認識です。OpenCVなんかで探せばいくらでも出てくると思います。が、広告にもいろいろな表示があるのでもっとロバスト性の高い方法が好ましいとも思います。
21
- ※深層学習でやるなら、インスタンスセグメンテーションでしょうか。「1つの商品の説明がある場所を認識する」
20
+ 先の#1で「りんご」「5玉」「500円」の画像上の距離の近さで「どこまでがある商品の説明」か大体は判別できると思われるためです。これで処理できない場合のオプションが枠の認識です。[OpenCV](https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html)で探せばいくらでも出てくると思います。が、広告にもいろいろな表示があるので**もっとロバスト性の高い方法が好ましい**とも思います。
21
+ ※深層学習でやるなら、[インスタンスセグメンテーション](https://www.skillupai.com/blog/tech/segmentation1/)でしょうか。「1つの商品の説明がある場所を認識する」
22
22
  処理をかませて、そこに対して#1をするのもありっぽいですね。
23
23
 
24
24
  **#3**
25
- 商品の写真の認識自体は完全にオプションです。「5玉」「500円」の説明があっても「りんご」の説明がない場合の救済処置です。#2のインスタンスセグメンテーションをして、#1のW2Vをして、それでも分からないときに写真から何なのかを判別します。普通のImagenetの画像認識をそのままぶっこめば対応できると思います。
25
+ 商品の写真の認識自体は完全にオプションです。「5玉」「500円」の説明があっても「りんご」の説明がない場合の救済処置です。#2のインスタンスセグメンテーションをして、#1のW2Vをして、それでも分からないときに写真から何なのかを判別します。普通の[Imagenetの画像認識](https://paperswithcode.com/sota/image-classification-on-imagenet)をそのままぶっこめば対応できると思います。
26
26
 
27
27
  **#4**
28
28
  説明するまでもないですがこれらの結果を「インスタンス」毎にlistに格納してCSVに吐き出すだけです。