Deepfake Authenticator commited on
Commit Β·
3df7b7b
1
Parent(s): e0772b8
fix: auto fast_mode by duration, restore threshold 0.58
Browse files- backend/detector.py +1 -1
- backend/main.py +14 -1
backend/detector.py
CHANGED
|
@@ -380,7 +380,7 @@ class DecisionAgent:
|
|
| 380 |
# Agent 4: Report Generator Agent
|
| 381 |
# βββββββββββββββββββββββββββββββββββββββββββββ
|
| 382 |
class ReportGeneratorAgent:
|
| 383 |
-
BASE_THRESHOLD = 0.54
|
| 384 |
|
| 385 |
def generate(self, analysis: dict, metadata: dict, audio: dict | None = None) -> dict:
|
| 386 |
prob = analysis["overall_fake_probability"]
|
|
|
|
| 380 |
# Agent 4: Report Generator Agent
|
| 381 |
# βββββββββββββββββββββββββββββββββββββββββββββ
|
| 382 |
class ReportGeneratorAgent:
|
| 383 |
+
BASE_THRESHOLD = 0.58 # Restored β 0.54 caused false positives
|
| 384 |
|
| 385 |
def generate(self, analysis: dict, metadata: dict, audio: dict | None = None) -> dict:
|
| 386 |
prob = analysis["overall_fake_probability"]
|
backend/main.py
CHANGED
|
@@ -295,7 +295,20 @@ async def analyze_video(
|
|
| 295 |
logger.info(f"File is {suffix} β no conversion needed")
|
| 296 |
|
| 297 |
logger.info(f"Calling authenticator.analyze({analyze_path})")
|
| 298 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
|
| 300 |
# Increment usage counter if API key provided
|
| 301 |
if x_api_key:
|
|
|
|
| 295 |
logger.info(f"File is {suffix} β no conversion needed")
|
| 296 |
|
| 297 |
logger.info(f"Calling authenticator.analyze({analyze_path})")
|
| 298 |
+
# Use fast mode only for short extension captures (< 30s), full mode for uploaded files
|
| 299 |
+
video_meta = None
|
| 300 |
+
try:
|
| 301 |
+
import cv2
|
| 302 |
+
cap = cv2.VideoCapture(str(analyze_path))
|
| 303 |
+
fps = cap.get(cv2.CAP_PROP_FPS)
|
| 304 |
+
total = cap.get(cv2.CAP_PROP_FRAME_COUNT)
|
| 305 |
+
cap.release()
|
| 306 |
+
duration = total / fps if fps > 0 else 999
|
| 307 |
+
except Exception:
|
| 308 |
+
duration = 999
|
| 309 |
+
fast = duration < 30 # extension captures are ~8s; uploaded files are longer
|
| 310 |
+
logger.info(f"Video duration: {duration:.1f}s β fast_mode={fast}")
|
| 311 |
+
result = authenticator.analyze(str(analyze_path), fast_mode=fast)
|
| 312 |
|
| 313 |
# Increment usage counter if API key provided
|
| 314 |
if x_api_key:
|