obichimav commited on
Commit
21fb81d
·
verified ·
1 Parent(s): 1d018e1

Update app.py

Browse files

Filter filter code update

Files changed (1) hide show
  1. app.py +16 -5
app.py CHANGED
@@ -92,7 +92,7 @@ def filter_bbox_outliers(detections: List[Dict],
92
 
93
  Args:
94
  detections: List of detection dictionaries with 'bbox', 'label', 'score'
95
- method: 'iqr' (Interquartile Range)
96
  threshold: Multiplier for IQR method or Z-score threshold
97
  min_score: Minimum confidence score to keep detection
98
 
@@ -109,8 +109,20 @@ def filter_bbox_outliers(detections: List[Dict],
109
  areas = [calculate_bbox_area(det['bbox']) for det in detections]
110
  areas = np.array(areas)
111
 
 
 
 
 
 
112
 
113
- if method == 'zscore':
 
 
 
 
 
 
 
114
  # Z-score method
115
  mean_area = np.mean(areas)
116
  std_area = np.std(areas)
@@ -118,9 +130,8 @@ def filter_bbox_outliers(detections: List[Dict],
118
  z_scores = np.abs((areas - mean_area) / std_area)
119
  valid_indices = np.where(z_scores <= threshold)[0]
120
 
121
-
122
  else:
123
- raise ValueError("Method must be 'iqr', 'zscore', or 'percentile'")
124
 
125
  # Return filtered detections
126
  filtered_detections = [detections[i] for i in valid_indices]
@@ -167,7 +178,7 @@ def detect_objects_owlv2(text_query, image, threshold=0.1):
167
  detections.append(detection)
168
 
169
  print(detections)
170
- return filter_bbox_outliers(detections,method = 'iqr'),image
171
 
172
  except Exception as e:
173
  print(f"Detection error: {e}")
 
92
 
93
  Args:
94
  detections: List of detection dictionaries with 'bbox', 'label', 'score'
95
+ method: 'iqr' (Interquartile Range) or 'zscore' (Z-score) or 'percentile'
96
  threshold: Multiplier for IQR method or Z-score threshold
97
  min_score: Minimum confidence score to keep detection
98
 
 
109
  areas = [calculate_bbox_area(det['bbox']) for det in detections]
110
  areas = np.array(areas)
111
 
112
+ if method == 'iqr':
113
+ # IQR method
114
+ q1 = np.percentile(areas, 25)
115
+ q3 = np.percentile(areas, 75)
116
+ iqr = q3 - q1
117
 
118
+ # Define outlier boundaries
119
+ lower_bound = q1 - threshold * iqr
120
+ upper_bound = q3 + threshold * iqr
121
+
122
+ # Find valid indices (non-outliers)
123
+ valid_indices = np.where((areas >= lower_bound) & (areas <= upper_bound))[0]
124
+
125
+ elif method == 'zscore':
126
  # Z-score method
127
  mean_area = np.mean(areas)
128
  std_area = np.std(areas)
 
130
  z_scores = np.abs((areas - mean_area) / std_area)
131
  valid_indices = np.where(z_scores <= threshold)[0]
132
 
 
133
  else:
134
+ raise ValueError("Method must be 'iqr' or 'zscore'")
135
 
136
  # Return filtered detections
137
  filtered_detections = [detections[i] for i in valid_indices]
 
178
  detections.append(detection)
179
 
180
  print(detections)
181
+ return filter_bbox_outliers(detections,method = 'zscore'),image
182
 
183
  except Exception as e:
184
  print(f"Detection error: {e}")