Skip to content

Commit 5fa82c0

Browse files
committed
Initial VisionCart release
0 parents  commit 5fa82c0

174 files changed

Lines changed: 125758 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

-files  ForEach-Object {

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
.env.example | 8 +
2+
.github/workflows/tests.yml | 18 +
3+
.gitignore | 66 +
4+
PORTFOLIO_UPGRADE_REPORT.md | 211 +
5+
README.md | 189 +
6+
app.py | 11 +
7+
assets/architecture_comparison.png | Bin 0 -> 95426 bytes
8+
assets/classifier_confusion_matrix.png | Bin 0 -> 107504 bytes
9+
assets/classifier_historical_confusion_matrix.png | Bin 0 -> 107504 bytes
10+
.../classifier_reproducible_confusion_matrix.png | Bin 0 -> 107662 bytes
11+
assets/demo/qualitative-demo-input.png | Bin 0 -> 1829233 bytes
12+
assets/demo/qualitative-demo-result.jpg | Bin 0 -> 380467 bytes
13+
assets/demo/validated-demo-input.jpg | Bin 0 -> 17805 bytes
14+
assets/demo/validated-demo-result.jpg | Bin 0 -> 43405 bytes
15+
assets/failure_cases/billing_error.jpg | Bin 0 -> 32630 bytes
16+
assets/failure_cases/detector_false_negative.jpg | Bin 0 -> 32630 bytes
17+
assets/failure_cases/detector_false_positive.jpg | Bin 0 -> 32630 bytes
18+
assets/failure_cases/low_confidence_review.jpg | Bin 0 -> 32630 bytes
19+
.../failure_cases/overlap_or_occlusion_error.jpg | Bin 0 -> 38724 bytes
20+
assets/failure_cases/quantity_error.jpg | Bin 0 -> 32630 bytes
21+
assets/failure_cases/resnet_breaks_yolo.jpg | Bin 0 -> 40843 bytes
22+
assets/failure_cases/resnet_corrects_yolo.jpg | Bin 0 -> 32635 bytes
23+
assets/failure_cases/small_object_error.jpg | Bin 0 -> 35325 bytes
24+
assets/failure_cases/yolo_misclassification.jpg | Bin 0 -> 32630 bytes
25+
assets/ui/visioncart-checkout-complete.png | Bin 0 -> 36725 bytes
26+
assets/ui/visioncart-detected-basket.png | Bin 0 -> 498339 bytes
27+
assets/ui/visioncart-ready.png | Bin 0 -> 198547 bytes
28+
assets/yolo_confusion_matrix.png | Bin 0 -> 286247 bytes
29+
assets/yolo_confusion_matrix_normalized.png | Bin 0 -> 414350 bytes
30+
assets/yolo_f1_curve.png | Bin 0 -> 356698 bytes
31+
assets/yolo_pr_curve.png | Bin 0 -> 140919 bytes
32+
assets/yolo_validation/BoxF1_curve.png | Bin 0 -> 356698 bytes
33+
assets/yolo_validation/BoxPR_curve.png | Bin 0 -> 140919 bytes
34+
assets/yolo_validation/BoxP_curve.png | Bin 0 -> 286162 bytes
35+
assets/yolo_validation/BoxR_curve.png | Bin 0 -> 311582 bytes
36+
assets/yolo_validation/confusion_matrix.png | Bin 0 -> 286247 bytes
37+
.../confusion_matrix_normalized.png | Bin 0 -> 414350 bytes
38+
assets/yolo_validation/val_batch0_labels.jpg | Bin 0 -> 506793 bytes
39+
assets/yolo_validation/val_batch0_pred.jpg | Bin 0 -> 515791 bytes
40+
assets/yolo_validation/val_batch1_labels.jpg | Bin 0 -> 541170 bytes
41+
assets/yolo_validation/val_batch1_pred.jpg | Bin 0 -> 539540 bytes
42+
assets/yolo_validation/val_batch2_labels.jpg | Bin 0 -> 540920 bytes
43+
assets/yolo_validation/val_batch2_pred.jpg | Bin 0 -> 541618 bytes
44+
configs/default.yaml | 33 +
45+
data/README.md | 14 +
46+
data/sample_prices.csv | 27 +
47+
frontend/eslint.config.js | 28 +
48+
frontend/index.html | 14 +
49+
frontend/package-lock.json | 4743 +
50+
frontend/package.json | 37 +
51+
frontend/postcss.config.js | 3 +
52+
frontend/src/App.tsx | 119 +
53+
frontend/src/App.voice.test.tsx | 182 +
54+
frontend/src/components/Basket.test.tsx | 42 +
55+
frontend/src/components/Basket.tsx | 43 +
56+
frontend/src/components/BasketItem.tsx | 18 +
57+
frontend/src/components/Brand.tsx | 11 +
58+
frontend/src/components/CameraView.tsx | 104 +
59+
frontend/src/components/CheckoutComplete.test.tsx | 12 +
60+
frontend/src/components/CheckoutComplete.tsx | 34 +
61+
frontend/src/components/Icons.tsx | 13 +
62+
frontend/src/components/ReviewItem.tsx | 15 +
63+
frontend/src/components/StatusBar.tsx | 32 +
64+
frontend/src/components/VoiceToggle.tsx | 29 +
65+
frontend/src/hooks/useCamera.ts | 57 +
66+
frontend/src/hooks/useReceiptSpeech.ts | 57 +
67+
frontend/src/lib/api.ts | 59 +
68+
frontend/src/main.tsx | 6 +
69+
frontend/src/styles.css | 255 +
70+
frontend/src/test/fixtures.ts | 21 +
71+
frontend/src/test/setup.ts | 1 +
72+
frontend/src/types/index.ts | 65 +
73+
frontend/src/vite-env.d.ts | 3 +
74+
frontend/tailwind.config.js | 24 +
75+
frontend/tsconfig.app.json | 22 +
76+
frontend/tsconfig.json | 7 +
77+
frontend/tsconfig.node.json | 12 +
78+
frontend/vite.config.ts | 16 +
79+
notebooks/legacy_autonomous_checkout.ipynb | 1449 +
80+
notebooks/training_and_evaluation.ipynb | 106 +
81+
publish.cmd | 339 +
82+
pyproject.toml | 50 +
83+
reports/architecture_comparison.json | 88 +
84+
reports/checkpoint_inventory.json | 94 +
85+
reports/classifier_comparison.json | 151 +
86+
reports/classifier_crop_manifest.json | 104474 ++++++++++++++++++
87+
reports/classifier_dataset_statistics.json | 133 +
88+
reports/classifier_historical_metrics.json | 853 +
89+
reports/classifier_metrics.json | 853 +
90+
reports/classifier_reproducible_metrics.json | 853 +
91+
reports/dataset_statistics.json | 228 +
92+
reports/demo_qualitative_source.json | 64 +
93+
reports/demo_selection.json | 56 +
94+
reports/end_to_end_metrics.json | 19 +
95+
reports/end_to_end_predictions.csv | 495 +
96+
reports/end_to_end_two_stage.json | 19 +
97+
reports/end_to_end_two_stage_predictions.csv | 495 +
98+
reports/end_to_end_yolo_only.json | 19 +
99+
reports/end_to_end_yolo_only_predictions.csv | 495 +
100+
reports/environment.json | 17 +
101+
reports/failure_analysis.json | 168 +
102+
reports/performance_metrics.json | 110 +
103+
reports/performance_two_stage.json | 1

.env.example

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ROBOFLOW_API_KEY=
2+
GOOGLE_SHEET_NAME=SmartCheckoutDB
3+
GOOGLE_CREDENTIALS_PATH=
4+
PRICE_PROVIDER=local
5+
TRANSACTION_PROVIDER=local
6+
YOLO_WEIGHTS=models/yolo_best.pt
7+
CLASSIFIER_WEIGHTS=models/classifier_best.pth
8+
VOICE_ENABLED=false

.github/workflows/tests.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: tests
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
lightweight:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- uses: actions/setup-python@v5
13+
with:
14+
python-version: "3.11"
15+
- run: python -m pip install -e ".[dev]"
16+
- run: python -m compileall -q src scripts app.py tools
17+
- run: pytest -q
18+

.gitignore

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Environment & credentials
2+
.env
3+
.env.*
4+
!.env.example
5+
credentials.json
6+
credentials*.json
7+
service-account*.json
8+
service_account*.json
9+
google-credentials*.json
10+
*.pem
11+
*.key
12+
13+
# Python
14+
__pycache__/
15+
*.py[cod]
16+
.pytest_cache/
17+
.ruff_cache/
18+
.mypy_cache/
19+
.coverage
20+
htmlcov/
21+
build/
22+
dist/
23+
*.egg-info/
24+
.venv/
25+
venv/
26+
env/
27+
28+
# ML datasets & weights
29+
data/raw/
30+
data/processed/
31+
models/*.pt
32+
models/*.pth
33+
models/*.ckpt
34+
models/*.onnx
35+
models/*.engine
36+
37+
# Training & runtime outputs
38+
runs/
39+
wandb/
40+
checkpoints/
41+
outputs/
42+
transactions/
43+
transactions.jsonl
44+
transactions.csv
45+
local_transactions/
46+
logs/
47+
*.mp3
48+
.ultralytics/
49+
.playwright-cli/
50+
output/playwright/
51+
52+
# Local-only archives
53+
.local/
54+
55+
# Frontend
56+
frontend/node_modules/
57+
frontend/dist/
58+
frontend/coverage/
59+
frontend/.vite/
60+
frontend/*.tsbuildinfo
61+
62+
# IDE / OS
63+
.vscode/
64+
.idea/
65+
.DS_Store
66+
Thumbs.db

0 commit comments

Comments
 (0)