Ann-Grabetski commited on
Commit
813e6ba
·
1 Parent(s): df37a62

HF models folder

Browse files
Files changed (1) hide show
  1. planparser/app.py +32 -6
planparser/app.py CHANGED
@@ -25,6 +25,29 @@ MODEL_DIR = os.getenv("MODEL_DIR")
25
  MODEL_1 = os.getenv("MODEL_1")
26
  MODEL_2 = os.getenv("MODEL_2")
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  def join_pt(folder: str | None, name: str | None) -> str | None:
29
  if not folder or not name:
30
  return None
@@ -33,9 +56,12 @@ def join_pt(folder: str | None, name: str | None) -> str | None:
33
  return str(p)
34
  return None
35
 
 
 
 
36
  MODEL_MAP = {
37
- "yolo11l_custom": join_pt(MODEL_DIR, MODEL_1),
38
- "custom": join_pt(MODEL_DIR, MODEL_2),
39
  }
40
  MODEL_MAP = {k: v for k, v in MODEL_MAP.items() if v}
41
 
@@ -87,7 +113,7 @@ def _collect_example_images(max_n: int = 30) -> list[str]:
87
  )
88
  p = Path(local)
89
 
90
- exts = (".jpg")
91
  files = [f for f in p.rglob("*") if f.is_file() and f.suffix.lower() in exts]
92
  if not files:
93
  return []
@@ -148,6 +174,7 @@ def _counts_df(dets: list[dict]) -> pd.DataFrame:
148
  )
149
  return out.sort_values("Element").reset_index(drop=True)
150
 
 
151
  def export_df(df: pd.DataFrame):
152
  if df is None or df.empty:
153
  return None
@@ -188,8 +215,8 @@ def run_predict(model_label: str, img: Image.Image):
188
  "",
189
  empty_df,
190
  [],
191
- gr.update(value=None, visible=False), # out_csv
192
- gr.update(visible=False), # raw_acc
193
  )
194
 
195
  dets, dt, err = _request_predict(model_label, img)
@@ -253,7 +280,6 @@ with gr.Blocks(title="Planparser") as demo:
253
  out_time = gr.Markdown(value="")
254
 
255
  out_df = gr.Dataframe(
256
- # label="Element schedule",
257
  headers=["Element", "Qty"],
258
  datatype=["str", "number"],
259
  row_count=(0, "dynamic"),
 
25
  MODEL_1 = os.getenv("MODEL_1")
26
  MODEL_2 = os.getenv("MODEL_2")
27
 
28
+
29
+ def _resolve_models_dir() -> str | None:
30
+ if not MODEL_DIR:
31
+ return None
32
+
33
+ p = Path(MODEL_DIR).expanduser().resolve()
34
+
35
+ # local folder
36
+ if p.exists() and p.is_dir():
37
+ return str(p)
38
+
39
+ # HF model repo_id
40
+ patterns = [x for x in [MODEL_1, MODEL_2] if x] or ["*.pt"]
41
+ local = snapshot_download(
42
+ repo_id=MODEL_DIR.strip(),
43
+ repo_type="model",
44
+ allow_patterns=patterns,
45
+ local_dir="/tmp/models_repo",
46
+ local_dir_use_symlinks=False,
47
+ )
48
+ return str(Path(local).resolve())
49
+
50
+
51
  def join_pt(folder: str | None, name: str | None) -> str | None:
52
  if not folder or not name:
53
  return None
 
56
  return str(p)
57
  return None
58
 
59
+
60
+ RESOLVED_MODEL_DIR = _resolve_models_dir()
61
+
62
  MODEL_MAP = {
63
+ "yolo11l_custom": join_pt(RESOLVED_MODEL_DIR, MODEL_1),
64
+ "custom": join_pt(RESOLVED_MODEL_DIR, MODEL_2),
65
  }
66
  MODEL_MAP = {k: v for k, v in MODEL_MAP.items() if v}
67
 
 
113
  )
114
  p = Path(local)
115
 
116
+ exts = (".jpg",)
117
  files = [f for f in p.rglob("*") if f.is_file() and f.suffix.lower() in exts]
118
  if not files:
119
  return []
 
174
  )
175
  return out.sort_values("Element").reset_index(drop=True)
176
 
177
+
178
  def export_df(df: pd.DataFrame):
179
  if df is None or df.empty:
180
  return None
 
215
  "",
216
  empty_df,
217
  [],
218
+ gr.update(value=None, visible=False),
219
+ gr.update(visible=False),
220
  )
221
 
222
  dets, dt, err = _request_predict(model_label, img)
 
280
  out_time = gr.Markdown(value="")
281
 
282
  out_df = gr.Dataframe(
 
283
  headers=["Element", "Qty"],
284
  datatype=["str", "number"],
285
  row_count=(0, "dynamic"),