Spaces:
Sleeping
Sleeping
Commit ·
813e6ba
1
Parent(s): df37a62
HF models folder
Browse files- 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(
|
| 38 |
-
"custom": join_pt(
|
| 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),
|
| 192 |
-
gr.update(visible=False),
|
| 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"),
|