Spaces:
Runtime error
Runtime error
import imageio | |
import imageio.v3 as iio | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import matplotlib.animation as animation | |
from skimage.transform import resize | |
from IPython.display import HTML | |
import asyncio | |
import warnings | |
from demo import load_checkpoints | |
import torch | |
from animate import normalize_kp | |
from skimage import img_as_ubyte | |
from tqdm import tqdm | |
from scipy.spatial import ConvexHull | |
from urllib.request import Request, urlopen | |
from nextcord import Interaction, SlashOption, ChannelType | |
from nextcord.abc import GuildChannel | |
from nextcord.ext import commands | |
import nextcord | |
client = commands.Bot(command_prefix='!') | |
testigaerverid=989256818398203945 | |
#aaaaaaaaaaaa | |
def find_best_frame(source, driving, cpu=False): | |
import face_alignment | |
def normalize_kp(kp): | |
kp = kp - kp.mean(axis=0, keepdims=True) | |
area = ConvexHull(kp[:, :2]).volume | |
area = np.sqrt(area) | |
kp[:, :2] = kp[:, :2] / area | |
return kp | |
fa = face_alignment.FaceAlignment(face_alignment.LandmarksType._2D, flip_input=True, | |
device='cpu' if cpu else 'cuda') | |
kp_source = fa.get_landmarks(255 * source)[0] | |
kp_source = normalize_kp(kp_source) | |
norm = float('inf') | |
frame_num = 0 | |
for i, image in tqdm(enumerate(driving)): | |
kp_driving = fa.get_landmarks(255 * image)[0] | |
kp_driving = normalize_kp(kp_driving) | |
new_norm = (np.abs(kp_source - kp_driving) ** 2).sum() | |
if new_norm < norm: | |
norm = new_norm | |
frame_num = i | |
return frame_num | |
#sssssssssssss | |
def display(source, driving, generated=None): | |
fig = plt.figure(figsize=(8 + 4 * (generated is not None), 6)) | |
ims = [] | |
for i in range(len(driving)): | |
cols = [source] | |
cols.append(driving[i]) | |
if generated is not None: | |
cols.append(generated[i]) | |
im = plt.imshow(np.concatenate(cols, axis=1), animated=True) | |
plt.axis('off') | |
ims.append([im]) | |
ani = animation.ArtistAnimation(fig, ims, interval=50, repeat_delay=1000) | |
plt.close() | |
return ani | |
#Resize image and video to 256x256 | |
def dy(): | |
for i in range( 10): | |
i=i+1 | |
time.sleep(5) | |
yield str(i) | |
async def repeat(interaction : Interaction, message:str, message2:str): | |
channel = interaction.channel | |
await interaction.response.send_message("jj") | |
warnings.filterwarnings("ignore") | |
web_image = message | |
request_site = Request(web_image, headers={"User-Agent": "Mozilla/5.0"}) | |
source_image =iio.imread(urlopen(request_site).read()) | |
urlforvideo=message2 | |
driving_video = iio.imread(urlforvideo) | |
source_image = resize(source_image, (256, 256))[..., :3] | |
driving_video = [resize(frame, (256, 256))[..., :3] for frame in driving_video] | |
eg,cd=load_checkpoints('config//vox-256.yaml','vox-cpk.pth.tar',True) | |
cpu=True | |
print("came to this") | |
with torch.no_grad(): | |
predictions = [] | |
source = torch.tensor(source_image[np.newaxis].astype(np.float32)).permute(0, 3, 1, 2) | |
if not cpu: | |
source = source.cuda() | |
driving = torch.tensor(np.array(driving_video)[np.newaxis].astype(np.float32)).permute(0, 4, 1, 2, 3) | |
kp_source = cd(source) | |
kp_driving_initial = cd(driving[:, :, 0]) | |
progress_message = await channel.send("Progress: 0%") | |
for frame_idx in tqdm(range(driving.shape[2])): | |
driving_frame = driving[:, :, frame_idx] | |
if not cpu: | |
driving_frame = driving_frame.cuda() | |
kp_driving = cd(driving_frame) | |
kp_norm = normalize_kp(kp_source=kp_source, kp_driving=kp_driving, | |
kp_driving_initial=kp_driving_initial, use_relative_movement=True, | |
use_relative_jacobian=True, adapt_movement_scale=True) | |
out = eg(source, kp_source=kp_source, kp_driving=kp_norm) | |
predictions.append(np.transpose(out['prediction'].data.cpu().numpy(), [0, 2, 3, 1])[0]) | |
await progress_message.edit(content=f"{frame_idx}") | |
print("print karandath puluvan bola") | |
imageio.mimsave('../generated.mp4', [img_as_ubyte(frame) for frame in predictions]) | |
async def on_ready(): | |
print("Bot is connected") | |
client.run("MTA1OTcwODIxNTY5MDAwNjU5OA.GjNyS_.QNudUyA7G-gHbMZPQDuPWIQdmldKFJOi5c6AdI") |