Spaces:
Sleeping
Sleeping
Avoid upstream tile-mode divide-by-zero on small inputs
Browse files- app/runtime.py +13 -3
app/runtime.py
CHANGED
|
@@ -145,7 +145,11 @@ class RealCuganRuntime:
|
|
| 145 |
started = time.perf_counter()
|
| 146 |
try:
|
| 147 |
model = self._load_model(scale, variant)
|
| 148 |
-
tile_candidates = self._candidate_tile_modes(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 149 |
cache_candidates = self._candidate_cache_modes(cache_mode)
|
| 150 |
last_exc: Exception | None = None
|
| 151 |
used_tile = tile_mode
|
|
@@ -336,9 +340,15 @@ class RealCuganRuntime:
|
|
| 336 |
return digest.hexdigest()
|
| 337 |
|
| 338 |
@staticmethod
|
| 339 |
-
def _candidate_tile_modes(tile_mode: int) -> list[int]:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 340 |
ordered: list[int] = []
|
| 341 |
-
for value in [
|
|
|
|
|
|
|
| 342 |
if value not in ordered:
|
| 343 |
ordered.append(value)
|
| 344 |
return ordered
|
|
|
|
| 145 |
started = time.perf_counter()
|
| 146 |
try:
|
| 147 |
model = self._load_model(scale, variant)
|
| 148 |
+
tile_candidates = self._candidate_tile_modes(
|
| 149 |
+
tile_mode,
|
| 150 |
+
width=prepared.width,
|
| 151 |
+
height=prepared.height,
|
| 152 |
+
)
|
| 153 |
cache_candidates = self._candidate_cache_modes(cache_mode)
|
| 154 |
last_exc: Exception | None = None
|
| 155 |
used_tile = tile_mode
|
|
|
|
| 340 |
return digest.hexdigest()
|
| 341 |
|
| 342 |
@staticmethod
|
| 343 |
+
def _candidate_tile_modes(tile_mode: int, *, width: int, height: int) -> list[int]:
|
| 344 |
+
short_edge = min(width, height)
|
| 345 |
+
safe_tile_mode = tile_mode
|
| 346 |
+
if tile_mode >= 2 and short_edge < 128:
|
| 347 |
+
safe_tile_mode = 1
|
| 348 |
ordered: list[int] = []
|
| 349 |
+
for value in [safe_tile_mode, 5, 4, 3, 2, 1, 0]:
|
| 350 |
+
if value >= 2 and short_edge < 128:
|
| 351 |
+
continue
|
| 352 |
if value not in ordered:
|
| 353 |
ordered.append(value)
|
| 354 |
return ordered
|