Spaces:
Sleeping
Sleeping
Ryan7mg commited on
Commit ·
2c54def
1
Parent(s): 43c9871
Configure Space runtime and use text embeddings for HF push
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitignore +2 -3
- README.md +22 -1
- app.py +7 -3
- database.py +7 -2
- dress_images/B0009VT6MI.jpg +0 -0
- dress_images/B000FCY9XM.jpg +0 -0
- dress_images/B000YLE1XM.jpg +0 -0
- dress_images/B001157SXU.jpg +0 -0
- dress_images/B0016CHUWW.jpg +0 -0
- dress_images/B0018PWU7C.jpg +0 -0
- dress_images/B001DXL1WY.jpg +0 -0
- dress_images/B001EA86KQ.jpg +0 -0
- dress_images/B001JDGNS0.jpg +0 -0
- dress_images/B001NIYDSS.jpg +0 -0
- dress_images/B001QCXH4W.jpg +0 -0
- dress_images/B001VZ6H5U.jpg +0 -0
- dress_images/B0027CTRNK.jpg +0 -0
- dress_images/B00297BG7I.jpg +0 -0
- dress_images/B0029YQQYE.jpg +0 -0
- dress_images/B002DI8HQG.jpg +0 -0
- dress_images/B002DMJQTE.jpg +0 -0
- dress_images/B002JZIO02.jpg +0 -0
- dress_images/B002PEXJD4.jpg +0 -0
- dress_images/B002TYZGJ0.jpg +0 -0
- dress_images/B002UD5URS.jpg +0 -0
- dress_images/B002VECPU6.jpg +0 -0
- dress_images/B002Y2RC8A.jpg +0 -0
- dress_images/B002YX0KZ6.jpg +0 -0
- dress_images/B002Z7ETL2.jpg +0 -0
- dress_images/B002Z7FONO.jpg +0 -0
- dress_images/B0030EHJCU.jpg +0 -0
- dress_images/B00316G2DE.jpg +0 -0
- dress_images/B0032FOQUU.jpg +0 -0
- dress_images/B00332FXRW.jpg +0 -0
- dress_images/B00342VIKW.jpg +0 -0
- dress_images/B0036DE0R2.jpg +0 -0
- dress_images/B0036ME5BE.jpg +0 -0
- dress_images/B0036MEL4U.jpg +0 -0
- dress_images/B0036SHD1W.jpg +0 -0
- dress_images/B0036Z2T3C.jpg +0 -0
- dress_images/B003725DKU.jpg +0 -0
- dress_images/B00378LCPE.jpg +0 -0
- dress_images/B00385IQY6.jpg +0 -0
- dress_images/B00387EZGM.jpg +0 -0
- dress_images/B0038HFFXY.jpg +0 -0
- dress_images/B0038JE7LI.jpg +0 -0
- dress_images/B003AQB1CM.jpg +0 -0
- dress_images/B003B00592.jpg +0 -0
- dress_images/B003BT62A4.jpg +0 -0
- dress_images/B003I62TM0.jpg +0 -0
.gitignore
CHANGED
|
@@ -15,10 +15,9 @@ env/
|
|
| 15 |
.ipynb_checkpoints/
|
| 16 |
*.ipynb
|
| 17 |
|
| 18 |
-
#
|
| 19 |
-
dress_images/
|
| 20 |
-
embeddings/
|
| 21 |
uploads/
|
|
|
|
| 22 |
|
| 23 |
# Database (generated at runtime)
|
| 24 |
*.db
|
|
|
|
| 15 |
.ipynb_checkpoints/
|
| 16 |
*.ipynb
|
| 17 |
|
| 18 |
+
# Space needs local corpus and precomputed embeddings committed
|
|
|
|
|
|
|
| 19 |
uploads/
|
| 20 |
+
embeddings/*.pkl
|
| 21 |
|
| 22 |
# Database (generated at runtime)
|
| 23 |
*.db
|
README.md
CHANGED
|
@@ -1 +1,22 @@
|
|
| 1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Dressa User Study
|
| 3 |
+
colorFrom: orange
|
| 4 |
+
colorTo: blue
|
| 5 |
+
sdk: gradio
|
| 6 |
+
app_file: app.py
|
| 7 |
+
python_version: "3.11"
|
| 8 |
+
pinned: false
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
# Dressa User Study
|
| 12 |
+
|
| 13 |
+
Public Gradio app for a dress-similarity user study.
|
| 14 |
+
|
| 15 |
+
## Runtime Environment Variables
|
| 16 |
+
|
| 17 |
+
- `DRESSA_DB_PATH` (recommended on Spaces: `/data/user_study.db`)
|
| 18 |
+
- `DRESSA_UPLOADS_DIR` (recommended on Spaces: `/data/uploads`)
|
| 19 |
+
- `DRESSA_IMAGES_DIR` (default: `./dress_images`)
|
| 20 |
+
- `DRESSA_EMBEDDINGS_DIR` (default: `./embeddings`)
|
| 21 |
+
- `DRESSA_PRELOAD_MODELS` (`0` or `1`, default `0`)
|
| 22 |
+
- `DRESSA_ENABLE_CORPUS_GROWTH` (`0` or `1`, default `0`)
|
app.py
CHANGED
|
@@ -39,11 +39,15 @@ logger = logging.getLogger(__name__)
|
|
| 39 |
|
| 40 |
# Paths - use resolve() for consistent absolute paths
|
| 41 |
APP_DIR = Path(__file__).parent.resolve()
|
| 42 |
-
UPLOADS_DIR =
|
| 43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
# Ensure uploads directory exists
|
| 46 |
-
UPLOADS_DIR.mkdir(exist_ok=True)
|
| 47 |
|
| 48 |
# Global instances (loaded at startup)
|
| 49 |
model_manager = None
|
|
|
|
| 39 |
|
| 40 |
# Paths - use resolve() for consistent absolute paths
|
| 41 |
APP_DIR = Path(__file__).parent.resolve()
|
| 42 |
+
UPLOADS_DIR = Path(
|
| 43 |
+
os.getenv("DRESSA_UPLOADS_DIR", str(APP_DIR / "uploads"))
|
| 44 |
+
).resolve()
|
| 45 |
+
IMAGES_DIR = Path(
|
| 46 |
+
os.getenv("DRESSA_IMAGES_DIR", str(APP_DIR / "dress_images"))
|
| 47 |
+
).resolve()
|
| 48 |
|
| 49 |
# Ensure uploads directory exists
|
| 50 |
+
UPLOADS_DIR.mkdir(parents=True, exist_ok=True)
|
| 51 |
|
| 52 |
# Global instances (loaded at startup)
|
| 53 |
model_manager = None
|
database.py
CHANGED
|
@@ -13,6 +13,7 @@ import uuid
|
|
| 13 |
import json
|
| 14 |
from datetime import datetime
|
| 15 |
from pathlib import Path
|
|
|
|
| 16 |
from typing import List, Optional, Dict, Any
|
| 17 |
from contextlib import contextmanager
|
| 18 |
import logging
|
|
@@ -20,7 +21,10 @@ import logging
|
|
| 20 |
logger = logging.getLogger(__name__)
|
| 21 |
|
| 22 |
# Default database path
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
|
| 26 |
class Database:
|
|
@@ -33,7 +37,8 @@ class Database:
|
|
| 33 |
Args:
|
| 34 |
db_path: Path to SQLite database file
|
| 35 |
"""
|
| 36 |
-
self.db_path = db_path
|
|
|
|
| 37 |
self._init_db()
|
| 38 |
|
| 39 |
def _init_db(self):
|
|
|
|
| 13 |
import json
|
| 14 |
from datetime import datetime
|
| 15 |
from pathlib import Path
|
| 16 |
+
import os
|
| 17 |
from typing import List, Optional, Dict, Any
|
| 18 |
from contextlib import contextmanager
|
| 19 |
import logging
|
|
|
|
| 21 |
logger = logging.getLogger(__name__)
|
| 22 |
|
| 23 |
# Default database path
|
| 24 |
+
APP_DIR = Path(__file__).parent.resolve()
|
| 25 |
+
DEFAULT_DB_PATH = Path(
|
| 26 |
+
os.getenv("DRESSA_DB_PATH", str(APP_DIR / "user_study.db"))
|
| 27 |
+
)
|
| 28 |
|
| 29 |
|
| 30 |
class Database:
|
|
|
|
| 37 |
Args:
|
| 38 |
db_path: Path to SQLite database file
|
| 39 |
"""
|
| 40 |
+
self.db_path = Path(db_path) if db_path else DEFAULT_DB_PATH
|
| 41 |
+
self.db_path.parent.mkdir(parents=True, exist_ok=True)
|
| 42 |
self._init_db()
|
| 43 |
|
| 44 |
def _init_db(self):
|
dress_images/B0009VT6MI.jpg
ADDED
|
dress_images/B000FCY9XM.jpg
ADDED
|
dress_images/B000YLE1XM.jpg
ADDED
|
dress_images/B001157SXU.jpg
ADDED
|
dress_images/B0016CHUWW.jpg
ADDED
|
dress_images/B0018PWU7C.jpg
ADDED
|
dress_images/B001DXL1WY.jpg
ADDED
|
dress_images/B001EA86KQ.jpg
ADDED
|
dress_images/B001JDGNS0.jpg
ADDED
|
dress_images/B001NIYDSS.jpg
ADDED
|
dress_images/B001QCXH4W.jpg
ADDED
|
dress_images/B001VZ6H5U.jpg
ADDED
|
dress_images/B0027CTRNK.jpg
ADDED
|
dress_images/B00297BG7I.jpg
ADDED
|
dress_images/B0029YQQYE.jpg
ADDED
|
dress_images/B002DI8HQG.jpg
ADDED
|
dress_images/B002DMJQTE.jpg
ADDED
|
dress_images/B002JZIO02.jpg
ADDED
|
dress_images/B002PEXJD4.jpg
ADDED
|
dress_images/B002TYZGJ0.jpg
ADDED
|
dress_images/B002UD5URS.jpg
ADDED
|
dress_images/B002VECPU6.jpg
ADDED
|
dress_images/B002Y2RC8A.jpg
ADDED
|
dress_images/B002YX0KZ6.jpg
ADDED
|
dress_images/B002Z7ETL2.jpg
ADDED
|
dress_images/B002Z7FONO.jpg
ADDED
|
dress_images/B0030EHJCU.jpg
ADDED
|
dress_images/B00316G2DE.jpg
ADDED
|
dress_images/B0032FOQUU.jpg
ADDED
|
dress_images/B00332FXRW.jpg
ADDED
|
dress_images/B00342VIKW.jpg
ADDED
|
dress_images/B0036DE0R2.jpg
ADDED
|
dress_images/B0036ME5BE.jpg
ADDED
|
dress_images/B0036MEL4U.jpg
ADDED
|
dress_images/B0036SHD1W.jpg
ADDED
|
dress_images/B0036Z2T3C.jpg
ADDED
|
dress_images/B003725DKU.jpg
ADDED
|
dress_images/B00378LCPE.jpg
ADDED
|
dress_images/B00385IQY6.jpg
ADDED
|
dress_images/B00387EZGM.jpg
ADDED
|
dress_images/B0038HFFXY.jpg
ADDED
|
dress_images/B0038JE7LI.jpg
ADDED
|
dress_images/B003AQB1CM.jpg
ADDED
|
dress_images/B003B00592.jpg
ADDED
|
dress_images/B003BT62A4.jpg
ADDED
|
dress_images/B003I62TM0.jpg
ADDED
|