Update app.py
Browse files
app.py
CHANGED
|
@@ -178,22 +178,32 @@ uploaded_video = st.file_uploader("Upload a Video", type=["mp4", "avi", "mov"])
|
|
| 178 |
def detect_deepfake_video(video_path):
|
| 179 |
cap = cv2.VideoCapture(video_path)
|
| 180 |
frame_scores = []
|
|
|
|
| 181 |
|
| 182 |
while cap.isOpened():
|
| 183 |
ret, frame = cap.read()
|
| 184 |
if not ret:
|
| 185 |
break
|
| 186 |
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
|
|
|
|
|
|
|
|
|
| 192 |
|
| 193 |
cap.release()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
avg_score = np.mean(frame_scores)
|
|
|
|
| 195 |
final_label = "FAKE" if avg_score > 0.5 else "REAL"
|
| 196 |
-
|
|
|
|
| 197 |
|
| 198 |
if uploaded_video is not None:
|
| 199 |
st.video(uploaded_video)
|
|
@@ -202,12 +212,14 @@ if uploaded_video is not None:
|
|
| 202 |
f.write(uploaded_video.read())
|
| 203 |
|
| 204 |
if st.button("Analyze Video"):
|
| 205 |
-
st.write("🔍 Processing...")
|
| 206 |
result = detect_deepfake_video(temp_file.name)
|
| 207 |
|
| 208 |
if result["label"] == "FAKE":
|
| 209 |
-
st.
|
|
|
|
|
|
|
| 210 |
else:
|
| 211 |
-
st.
|
| 212 |
|
| 213 |
st.markdown("🔹 **Developed for Fake News & Deepfake Detection Hackathon**")
|
|
|
|
| 178 |
def detect_deepfake_video(video_path):
|
| 179 |
cap = cv2.VideoCapture(video_path)
|
| 180 |
frame_scores = []
|
| 181 |
+
frame_count = 0
|
| 182 |
|
| 183 |
while cap.isOpened():
|
| 184 |
ret, frame = cap.read()
|
| 185 |
if not ret:
|
| 186 |
break
|
| 187 |
|
| 188 |
+
if frame_count % 10 == 0: # ہر 10ویں فریم کا تجزیہ کریں
|
| 189 |
+
frame_path = "temp_frame.jpg"
|
| 190 |
+
cv2.imwrite(frame_path, frame)
|
| 191 |
+
result = detect_deepfake_image(frame_path)
|
| 192 |
+
frame_scores.append(result["score"])
|
| 193 |
+
os.remove(frame_path)
|
| 194 |
+
|
| 195 |
+
frame_count += 1
|
| 196 |
|
| 197 |
cap.release()
|
| 198 |
+
|
| 199 |
+
if not frame_scores:
|
| 200 |
+
return {"label": "UNKNOWN", "score": 0.0} # اگر کوئی فریم پراسیس نہ ہو سکے
|
| 201 |
+
|
| 202 |
avg_score = np.mean(frame_scores)
|
| 203 |
+
confidence = round(float(avg_score), 2)
|
| 204 |
final_label = "FAKE" if avg_score > 0.5 else "REAL"
|
| 205 |
+
|
| 206 |
+
return {"label": final_label, "score": confidence}
|
| 207 |
|
| 208 |
if uploaded_video is not None:
|
| 209 |
st.video(uploaded_video)
|
|
|
|
| 212 |
f.write(uploaded_video.read())
|
| 213 |
|
| 214 |
if st.button("Analyze Video"):
|
| 215 |
+
st.write("🔍 Processing... Please wait.")
|
| 216 |
result = detect_deepfake_video(temp_file.name)
|
| 217 |
|
| 218 |
if result["label"] == "FAKE":
|
| 219 |
+
st.error(f"⚠️ Deepfake Detected! This video appears to be FAKE. (Confidence: {result['score']:.2f})")
|
| 220 |
+
elif result["label"] == "REAL":
|
| 221 |
+
st.success(f"✅ This video appears to be REAL. (Confidence: {1 - result['score']:.2f})")
|
| 222 |
else:
|
| 223 |
+
st.warning("⚠️ Unable to analyze the video. Please try a different file.")
|
| 224 |
|
| 225 |
st.markdown("🔹 **Developed for Fake News & Deepfake Detection Hackathon**")
|