Ryan7mg commited on
Commit
2c54def
·
1 Parent(s): 43c9871

Configure Space runtime and use text embeddings for HF push

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +2 -3
  2. README.md +22 -1
  3. app.py +7 -3
  4. database.py +7 -2
  5. dress_images/B0009VT6MI.jpg +0 -0
  6. dress_images/B000FCY9XM.jpg +0 -0
  7. dress_images/B000YLE1XM.jpg +0 -0
  8. dress_images/B001157SXU.jpg +0 -0
  9. dress_images/B0016CHUWW.jpg +0 -0
  10. dress_images/B0018PWU7C.jpg +0 -0
  11. dress_images/B001DXL1WY.jpg +0 -0
  12. dress_images/B001EA86KQ.jpg +0 -0
  13. dress_images/B001JDGNS0.jpg +0 -0
  14. dress_images/B001NIYDSS.jpg +0 -0
  15. dress_images/B001QCXH4W.jpg +0 -0
  16. dress_images/B001VZ6H5U.jpg +0 -0
  17. dress_images/B0027CTRNK.jpg +0 -0
  18. dress_images/B00297BG7I.jpg +0 -0
  19. dress_images/B0029YQQYE.jpg +0 -0
  20. dress_images/B002DI8HQG.jpg +0 -0
  21. dress_images/B002DMJQTE.jpg +0 -0
  22. dress_images/B002JZIO02.jpg +0 -0
  23. dress_images/B002PEXJD4.jpg +0 -0
  24. dress_images/B002TYZGJ0.jpg +0 -0
  25. dress_images/B002UD5URS.jpg +0 -0
  26. dress_images/B002VECPU6.jpg +0 -0
  27. dress_images/B002Y2RC8A.jpg +0 -0
  28. dress_images/B002YX0KZ6.jpg +0 -0
  29. dress_images/B002Z7ETL2.jpg +0 -0
  30. dress_images/B002Z7FONO.jpg +0 -0
  31. dress_images/B0030EHJCU.jpg +0 -0
  32. dress_images/B00316G2DE.jpg +0 -0
  33. dress_images/B0032FOQUU.jpg +0 -0
  34. dress_images/B00332FXRW.jpg +0 -0
  35. dress_images/B00342VIKW.jpg +0 -0
  36. dress_images/B0036DE0R2.jpg +0 -0
  37. dress_images/B0036ME5BE.jpg +0 -0
  38. dress_images/B0036MEL4U.jpg +0 -0
  39. dress_images/B0036SHD1W.jpg +0 -0
  40. dress_images/B0036Z2T3C.jpg +0 -0
  41. dress_images/B003725DKU.jpg +0 -0
  42. dress_images/B00378LCPE.jpg +0 -0
  43. dress_images/B00385IQY6.jpg +0 -0
  44. dress_images/B00387EZGM.jpg +0 -0
  45. dress_images/B0038HFFXY.jpg +0 -0
  46. dress_images/B0038JE7LI.jpg +0 -0
  47. dress_images/B003AQB1CM.jpg +0 -0
  48. dress_images/B003B00592.jpg +0 -0
  49. dress_images/B003BT62A4.jpg +0 -0
  50. dress_images/B003I62TM0.jpg +0 -0
.gitignore CHANGED
@@ -15,10 +15,9 @@ env/
15
  .ipynb_checkpoints/
16
  *.ipynb
17
 
18
- # Large data files (stored separately / use Git LFS)
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
- # Dressa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 = APP_DIR / "uploads"
43
- IMAGES_DIR = APP_DIR / "dress_images"
 
 
 
 
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
- DEFAULT_DB_PATH = Path(__file__).parent / "user_study.db"
 
 
 
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 or DEFAULT_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