Skip to content

Commit 84aad47

Browse files
bizybclaude
andcommitted
[LIP SYNC] Fix basicsr/torchvision 0.18+ compatibility
basicsr 1.4.2 imports from torchvision.transforms.functional_tensor, which was removed in torchvision 0.17+. This fix creates a dummy module at runtime so basicsr can import rgb_to_grayscale. References: - XPixelGroup/BasicSR#677 - xinntao/Real-ESRGAN#859 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent cc5f635 commit 84aad47

3 files changed

Lines changed: 55 additions & 0 deletions

File tree

lip-sync/lipsync/__init__.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,23 @@
55
in a video using MuseTalk, LivePortrait, and CodeFormer.
66
"""
77

8+
# =============================================================================
9+
# TORCHVISION COMPATIBILITY FIX - Must run before any basicsr import
10+
# =============================================================================
11+
# basicsr 1.4.2 imports from torchvision.transforms.functional_tensor, which was
12+
# removed in torchvision 0.17+. This fix creates a dummy module so basicsr works.
13+
import sys
14+
import types
15+
16+
try:
17+
from torchvision.transforms.functional_tensor import rgb_to_grayscale
18+
except ImportError:
19+
from torchvision.transforms.functional import rgb_to_grayscale
20+
_functional_tensor = types.ModuleType("torchvision.transforms.functional_tensor")
21+
_functional_tensor.rgb_to_grayscale = rgb_to_grayscale
22+
sys.modules["torchvision.transforms.functional_tensor"] = _functional_tensor
23+
# =============================================================================
24+
825
from .pipeline import LipSyncPipeline, PipelineConfig, FaceJob, process_lipsync
926
from .compositor import FaceCompositor, FaceRegion
1027
from .alignment import FaceAligner, AlignmentMetadata, align_video, unalign_video

lip-sync/lipsync/codeformer.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,26 @@
55
reducing artifacts and improving visual fidelity.
66
"""
77

8+
# =============================================================================
9+
# TORCHVISION COMPATIBILITY FIX
10+
# =============================================================================
11+
# basicsr 1.4.2 imports from torchvision.transforms.functional_tensor, which was
12+
# removed in torchvision 0.17+. This fix creates a dummy module so basicsr works.
13+
# See: https://github.com/XPixelGroup/BasicSR/pull/677
14+
# See: https://github.com/xinntao/Real-ESRGAN/issues/859
15+
import sys
16+
import types
17+
18+
try:
19+
from torchvision.transforms.functional_tensor import rgb_to_grayscale
20+
except ImportError:
21+
from torchvision.transforms.functional import rgb_to_grayscale
22+
# Create a fake module for backward compatibility
23+
_functional_tensor = types.ModuleType("torchvision.transforms.functional_tensor")
24+
_functional_tensor.rgb_to_grayscale = rgb_to_grayscale
25+
sys.modules["torchvision.transforms.functional_tensor"] = _functional_tensor
26+
# =============================================================================
27+
828
import logging
929
import os
1030
import time

lip-sync/scripts/validate-imports.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,24 @@
2222

2323
import sys
2424
import os
25+
import types
26+
27+
# =============================================================================
28+
# TORCHVISION COMPATIBILITY FIX - Must run before any basicsr import
29+
# =============================================================================
30+
# basicsr 1.4.2 imports from torchvision.transforms.functional_tensor, which was
31+
# removed in torchvision 0.17+. This fix creates a dummy module so basicsr works.
32+
try:
33+
from torchvision.transforms.functional_tensor import rgb_to_grayscale
34+
except ImportError:
35+
try:
36+
from torchvision.transforms.functional import rgb_to_grayscale
37+
_functional_tensor = types.ModuleType("torchvision.transforms.functional_tensor")
38+
_functional_tensor.rgb_to_grayscale = rgb_to_grayscale
39+
sys.modules["torchvision.transforms.functional_tensor"] = _functional_tensor
40+
except ImportError:
41+
pass # torchvision not installed yet, that's fine for import validation
42+
# =============================================================================
2543

2644
# Add the lip-sync directory to path
2745
script_dir = os.path.dirname(os.path.abspath(__file__))

0 commit comments

Comments
 (0)