Update two_stage_processor.py
Browse files- two_stage_processor.py +8 -4
two_stage_processor.py
CHANGED
|
@@ -11,6 +11,7 @@
|
|
| 11 |
import pickle
|
| 12 |
import logging
|
| 13 |
from pathlib import Path
|
|
|
|
| 14 |
|
| 15 |
logger = logging.getLogger(__name__)
|
| 16 |
|
|
@@ -83,8 +84,11 @@ def _prog(pct: float, desc: str):
|
|
| 83 |
|
| 84 |
# Save masks for potential reuse
|
| 85 |
mask_file = self.mask_cache_dir / f"{Path(output_path).stem}_masks.pkl"
|
| 86 |
-
|
| 87 |
-
|
|
|
|
|
|
|
|
|
|
| 88 |
|
| 89 |
_prog(1.0, "Stage 1 complete: Green screen created")
|
| 90 |
return output_path, f"Green screen created: {frame_count} frames"
|
|
@@ -209,6 +213,7 @@ def _extract_person_mask(self, frame):
|
|
| 209 |
def _refine_mask(self, frame, mask):
|
| 210 |
"""Refine mask using MatAnyone if available"""
|
| 211 |
if self.matanyone_model is None:
|
|
|
|
| 212 |
return mask
|
| 213 |
|
| 214 |
try:
|
|
@@ -216,6 +221,7 @@ def _refine_mask(self, frame, mask):
|
|
| 216 |
# This would depend on your MatAnyone implementation
|
| 217 |
return mask
|
| 218 |
except:
|
|
|
|
| 219 |
return mask
|
| 220 |
|
| 221 |
def _apply_greenscreen_hard(self, frame, mask, green_bg):
|
|
@@ -277,8 +283,6 @@ def process_full_pipeline(self, video_path, background, final_output,
|
|
| 277 |
"""
|
| 278 |
Run the complete two-stage pipeline
|
| 279 |
"""
|
| 280 |
-
import tempfile
|
| 281 |
-
|
| 282 |
# Stage 1: Create green screen
|
| 283 |
greenscreen_path = tempfile.mktemp(suffix='_greenscreen.mp4')
|
| 284 |
gs_result, gs_msg = self.stage1_extract_to_greenscreen(
|
|
|
|
| 11 |
import pickle
|
| 12 |
import logging
|
| 13 |
from pathlib import Path
|
| 14 |
+
import tempfile
|
| 15 |
|
| 16 |
logger = logging.getLogger(__name__)
|
| 17 |
|
|
|
|
| 84 |
|
| 85 |
# Save masks for potential reuse
|
| 86 |
mask_file = self.mask_cache_dir / f"{Path(output_path).stem}_masks.pkl"
|
| 87 |
+
try:
|
| 88 |
+
with open(mask_file, 'wb') as f:
|
| 89 |
+
pickle.dump(masks, f)
|
| 90 |
+
except Exception as e:
|
| 91 |
+
logger.warning(f"Failed to save masks: {e}")
|
| 92 |
|
| 93 |
_prog(1.0, "Stage 1 complete: Green screen created")
|
| 94 |
return output_path, f"Green screen created: {frame_count} frames"
|
|
|
|
| 213 |
def _refine_mask(self, frame, mask):
|
| 214 |
"""Refine mask using MatAnyone if available"""
|
| 215 |
if self.matanyone_model is None:
|
| 216 |
+
logger.warning("MatAnyone not available, using original mask")
|
| 217 |
return mask
|
| 218 |
|
| 219 |
try:
|
|
|
|
| 221 |
# This would depend on your MatAnyone implementation
|
| 222 |
return mask
|
| 223 |
except:
|
| 224 |
+
logger.warning("MatAnyone refinement failed, using original mask")
|
| 225 |
return mask
|
| 226 |
|
| 227 |
def _apply_greenscreen_hard(self, frame, mask, green_bg):
|
|
|
|
| 283 |
"""
|
| 284 |
Run the complete two-stage pipeline
|
| 285 |
"""
|
|
|
|
|
|
|
| 286 |
# Stage 1: Create green screen
|
| 287 |
greenscreen_path = tempfile.mktemp(suffix='_greenscreen.mp4')
|
| 288 |
gs_result, gs_msg = self.stage1_extract_to_greenscreen(
|