Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -225,13 +225,22 @@ async def detect_multiple_dogs(image, conf_threshold=0.35, iou_threshold=0.5):
|
|
| 225 |
def filter_detections(dogs, image_size):
|
| 226 |
filtered_dogs = []
|
| 227 |
image_area = image_size[0] * image_size[1]
|
| 228 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 229 |
for dog in dogs:
|
| 230 |
-
_,
|
| 231 |
dog_area = (box[2] - box[0]) * (box[3] - box[1])
|
| 232 |
area_ratio = dog_area / image_area
|
| 233 |
|
| 234 |
-
if
|
| 235 |
filtered_dogs.append(dog)
|
| 236 |
|
| 237 |
return filtered_dogs
|
|
|
|
| 225 |
def filter_detections(dogs, image_size):
|
| 226 |
filtered_dogs = []
|
| 227 |
image_area = image_size[0] * image_size[1]
|
| 228 |
+
num_dogs = len(dogs)
|
| 229 |
+
|
| 230 |
+
# 根據檢測到的狗的數量動態調整閾值
|
| 231 |
+
if num_dogs > 5:
|
| 232 |
+
min_ratio, max_ratio = 0.003, 0.5
|
| 233 |
+
elif num_dogs > 2:
|
| 234 |
+
min_ratio, max_ratio = 0.005, 0.6
|
| 235 |
+
else:
|
| 236 |
+
min_ratio, max_ratio = 0.01, 0.7
|
| 237 |
+
|
| 238 |
for dog in dogs:
|
| 239 |
+
_, confidence, box = dog
|
| 240 |
dog_area = (box[2] - box[0]) * (box[3] - box[1])
|
| 241 |
area_ratio = dog_area / image_area
|
| 242 |
|
| 243 |
+
if min_ratio < area_ratio < max_ratio:
|
| 244 |
filtered_dogs.append(dog)
|
| 245 |
|
| 246 |
return filtered_dogs
|