feat: two demo shelves, enrolled, plus the price-card filter they forced out

Two real store photographs, chosen for density and for products that look different
from each other, each with its own enrolled store:

  demo-images/demo-image-1-mediya-dairy.jpg   CC0        MEDIYA dairy case
      21 products kept (13 price cards dropped), 16 recognised, all 14 products named
  demo-images/demo-image-2-milk-case.jpg      CC BY 2.0  supermarket milk case
      56 detections, 49 recognised, all 13 products named

Both were enrolled the way a store would be: the products were read off a contact
sheet of the detections, their crops became the store's gallery (stock-mediya,
stock-milk150), and a head was trained on them. `build_store_from_shelf.py` is that
flow.

The filter came out of the first image. Every Japanese supermarket photo has the same
artifact: the detector boxes the shelf-edge price cards as products, because a card is
roughly the shape of a pack - 13 of 34 detections on image 1 were cards. Their text
separates them cleanly: a card's characters are 30-44% digits and it prints the
tax-excluded price (本体), while a product's are 3-19% digits. Cards are now dropped
before classification, and the count is reported as `price_cards_dropped` rather than
hidden.

demo-images/README.md records how to run both, what the demo shows, and the honest
caveat: both shelves are enrolled, so the recognition rate is in-distribution - what
the app does on a shelf it has been onboarded to, not on one it has never seen.

175 tests pass.

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
kiyo9w 2026-09-25 09:34:29 +09:00
parent 2bf916f2aa
commit 383ff9cf2d
72 changed files with 215 additions and 0 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,15 @@
SKU_ID,product_name,receipt_date,expiration_date,number_in,number_out,number_on,image_link,price
sku_m01,小岩井 低脂肪牛乳,2026-09-25,2026-10-20,24,8,16,'',186
sku_m02,荻山酪農 カフェ・オ・レ,2026-09-25,2026-10-20,24,8,16,'',397
sku_m03,丹那 3.6牛乳,2026-09-25,2026-10-20,24,8,16,'',214
sku_m04,木次 ミルクコーヒー,2026-09-25,2026-10-20,24,8,16,'',195
sku_m05,木次 パスチャライズ牛乳,2026-09-25,2026-10-20,24,8,16,'',240
sku_m06,キスキ ブラウン・スイス牛乳,2026-09-25,2026-10-20,24,8,16,'',254
sku_m07,丹那 飲んでやさしいヨーグルト,2026-09-25,2026-10-20,24,8,16,'',225
sku_m08,農場3.7牛乳 特選,2026-09-25,2026-10-20,24,8,16,'',216
sku_m09,MINOR FIGURES OAT,2026-09-25,2026-10-20,24,8,16,'',300
sku_m10,北海道 低脂肪乳,2026-09-25,2026-10-20,24,8,16,'',214
sku_m11,タカナシ 低温殺菌牛乳,2026-09-25,2026-10-20,24,8,16,'',396
sku_m12,RUDE HEALTH Oat Organic,2026-09-25,2026-10-20,24,8,16,'',400
sku_m13,小岩井 無脂肪牛乳,2026-09-25,2026-10-20,24,8,16,'',178
sku_m14,きすき ノンホモ牛乳,2026-09-25,2026-10-20,24,8,16,'',198
1 SKU_ID product_name receipt_date expiration_date number_in number_out number_on image_link price
2 sku_m01 小岩井 低脂肪牛乳 2026-09-25 2026-10-20 24 8 16 '' 186
3 sku_m02 荻山酪農 カフェ・オ・レ 2026-09-25 2026-10-20 24 8 16 '' 397
4 sku_m03 丹那 3.6牛乳 2026-09-25 2026-10-20 24 8 16 '' 214
5 sku_m04 木次 ミルクコーヒー 2026-09-25 2026-10-20 24 8 16 '' 195
6 sku_m05 木次 パスチャライズ牛乳 2026-09-25 2026-10-20 24 8 16 '' 240
7 sku_m06 キスキ ブラウン・スイス牛乳 2026-09-25 2026-10-20 24 8 16 '' 254
8 sku_m07 丹那 飲んでやさしいヨーグルト 2026-09-25 2026-10-20 24 8 16 '' 225
9 sku_m08 農場3.7牛乳 特選 2026-09-25 2026-10-20 24 8 16 '' 216
10 sku_m09 MINOR FIGURES OAT 2026-09-25 2026-10-20 24 8 16 '' 300
11 sku_m10 北海道 低脂肪乳 2026-09-25 2026-10-20 24 8 16 '' 214
12 sku_m11 タカナシ 低温殺菌牛乳 2026-09-25 2026-10-20 24 8 16 '' 396
13 sku_m12 RUDE HEALTH Oat Organic 2026-09-25 2026-10-20 24 8 16 '' 400
14 sku_m13 小岩井 無脂肪牛乳 2026-09-25 2026-10-20 24 8 16 '' 178
15 sku_m14 きすき ノンホモ牛乳 2026-09-25 2026-10-20 24 8 16 '' 198