KenanKeeqi TakagiTaka commited on
Commit
0ed2702
·
verified ·
1 Parent(s): d219938

Update app.py (#3)

Browse files

- Update app.py (9448e60018852a3f118c012304509e40cae0259e)


Co-authored-by: Takamine Takagi <[email protected]>

Files changed (1) hide show
  1. app.py +12 -40
app.py CHANGED
@@ -149,45 +149,17 @@ def process_video_and_analyze(video_path, selected_model_name, progress=gr.Progr
149
 
150
  # Prediksi
151
  results = model.predict(frame_resized)
152
- # Gunakan rendering bawaan untuk YOLOv5m, render_result untuk YOLOv8m
153
- if selected_model_name == "YOLOv5m (Generalis Konstruksi)":
154
- try:
155
- annotated_frame = results[0].plot() # Rendering bawaan YOLO
156
- if annotated_frame is None:
157
- logger.warning("Rendering bawaan YOLOv5m gagal, menggunakan frame asli.")
158
- annotated_frame = frame_resized
159
- except Exception as e:
160
- logger.warning(f"Gagal merender frame dengan plot: {e}. Menggunakan frame asli.")
161
- annotated_frame = frame_resized
162
- else:
163
- try:
164
- annotated_frame = render_result(model=model, image=frame_resized, result=results[0])
165
- annotated_frame = np.array(annotated_frame) # Konversi PIL ke NumPy
166
- annotated_frame = cv2.cvtColor(annotated_frame, cv2.COLOR_RGB2BGR) # Konversi RGB ke BGR
167
- except Exception as e:
168
- logger.warning(f"Gagal merender frame dengan render_result: {e}. Menggunakan frame asli.")
169
- annotated_frame = frame_resized
170
-
171
- # Hitung deteksi dengan pengecekan tipe data
172
- try:
173
- detection_count += len(results[0].boxes)
174
- logger.debug(f"Model names: {model.names}")
175
- logger.debug(f"Boxes: {results[0].boxes}")
176
- for box in results[0].boxes:
177
- try:
178
- class_id = int(box.cls.item()) if hasattr(box.cls, 'item') else int(box.cls)
179
- if class_id < len(model.names):
180
- class_name = str(model.names[class_id]).lower()
181
- if class_name in ['hardhat', 'helmet']: # Sesuaikan dengan kelas YOLOv5m
182
- helm_detected_count += 1
183
- else:
184
- logger.warning(f"Class ID {class_id} tidak valid untuk model {selected_model_name}")
185
- except Exception as e:
186
- logger.warning(f"Error saat memproses box.cls: {e}")
187
- continue
188
- except Exception as e:
189
- logger.error(f"Error saat menghitung deteksi: {e}")
190
- continue
191
 
192
  out.write(annotated_frame)
193
 
@@ -213,7 +185,7 @@ def process_video_and_analyze(video_path, selected_model_name, progress=gr.Progr
213
  - **Jumlah Deteksi Helm:** {helm_detected_count} objek
214
  **Catatan:**
215
  - **Model Spesialis (YOLOv8m):** Fokus pada helm, akurasi tinggi untuk 'Hardhat'/'Helmet'.
216
- - **Model Generalis (YOLOv5m):** Deteksi berbagai objek, termasuk 'Hardhat' (kelas 4).
217
  """
218
 
219
  return temp_output_path, f"Status: Video berhasil diproses! ({processing_time:.2f} detik)", analysis_text
 
149
 
150
  # Prediksi
151
  results = model.predict(frame_resized)
152
+ annotated_frame = render_result(model=model, image=frame_resized, result=results[0])
153
+ annotated_frame = np.array(annotated_frame) # Konversi PIL ke NumPy
154
+ annotated_frame = cv2.cvtColor(annotated_frame, cv2.COLOR_RGB2BGR) # Konversi RGB ke BGR
155
+
156
+ # Hitung deteksi
157
+ detection_count += len(results[0].boxes)
158
+ for box in results[0].boxes:
159
+ class_id = int(box.cls)
160
+ class_name = model.names[class_id].lower()
161
+ if class_name in ['hardhat', 'helmet']:
162
+ helm_detected_count += 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
 
164
  out.write(annotated_frame)
165
 
 
185
  - **Jumlah Deteksi Helm:** {helm_detected_count} objek
186
  **Catatan:**
187
  - **Model Spesialis (YOLOv8m):** Fokus pada helm, akurasi tinggi untuk 'Hardhat'/'Helmet'.
188
+ - **Model Generalis (YOLOv5m):** Deteksi berbagai objek, akurasi helm mungkin lebih rendah.
189
  """
190
 
191
  return temp_output_path, f"Status: Video berhasil diproses! ({processing_time:.2f} detik)", analysis_text