当前位置: 首页 > news >正文

郑州做景区网站建设公司seo培训费用

郑州做景区网站建设公司,seo培训费用,网站的尺寸,苏宁易购网站建设 的定位EchoMimic是由蚂蚁集团推出的一个 AI 驱动的口型同步技术项目,能够通过人像面部特征和音频来帮助人物“对口型”,生成逼真的动态肖像视频。 EchoMimic的技术亮点在于其创新的动画生成方法,它不仅能够通过音频和面部关键点单独驱动图像动画&a…

EchoMimic是由蚂蚁集团推出的一个 AI 驱动的口型同步技术项目,能够通过人像面部特征和音频来帮助人物“对口型”,生成逼真的动态肖像视频。

EchoMimic的技术亮点在于其创新的动画生成方法,它不仅能够通过音频和面部关键点单独驱动图像动画,还能结合这两种方式,通过音频信号和面部关键点的组合来生成逼真的“说话的头部”视频。

EchoMimic支持单独使用音频或面部标志点生成肖像视频,也支持将音频和人像照片相结合,实现更自然、流畅的对口型效果。

EchoMimic支持多语言,包括中文普通话、英语,以及适应唱歌等场景。

github项目地址:https://github.com/BadToBest/EchoMimic。

一、环境安装

1、python环境

建议安装python版本在3.10以上。

2、pip库安装

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3、模型下载

git lfs install

git clone https://huggingface.co/BadToBest/EchoMimic

、功能测试

1、运行测试

(1)python代码调用测试audio2video

import argparse
import os
import random
import platform
import subprocess
from datetime import datetime
from pathlib import Pathimport cv2
import numpy as np
import torch
from diffusers import AutoencoderKL, DDIMScheduler
from omegaconf import OmegaConf
from PIL import Imagefrom src.models.unet_2d_condition import UNet2DConditionModel
from src.models.unet_3d_echo import EchoUNet3DConditionModel
from src.models.whisper.audio2feature import load_audio_model
from src.pipelines.pipeline_echo_mimic import Audio2VideoPipeline
from src.utils.util import save_videos_grid, crop_and_pad
from src.models.face_locator import FaceLocator
from moviepy.editor import VideoFileClip, AudioFileClip
from facenet_pytorch import MTCNN# Check and add FFmpeg path if necessary
ffmpeg_path = os.getenv('FFMPEG_PATH')
if ffmpeg_path is None and platform.system() in ['Linux', 'Darwin']:try:result = subprocess.run(['which', 'ffmpeg'], capture_output=True, text=True)if result.returncode == 0:ffmpeg_path = result.stdout.strip()print(f"FFmpeg is installed at: {ffmpeg_path}")else:print("FFmpeg is not installed. Please download ffmpeg-static and export to FFMPEG_PATH.")print("For example: export FFMPEG_PATH=/musetalk/ffmpeg-4.4-amd64-static")except Exception as e:print(f"Error finding ffmpeg: {e}")
else:if ffmpeg_path and ffmpeg_path not in os.getenv('PATH'):print("Adding FFMPEG_PATH to PATH")os.environ["PATH"] = f"{ffmpeg_path}:{os.environ['PATH']}"def parse_args():parser = argparse.ArgumentParser()parser.add_argument("--config", type=str, default="./configs/prompts/animation.yaml")parser.add_argument("-W", type=int, default=512)parser.add_argument("-H", type=int, default=512)parser.add_argument("-L", type=int, default=1200)parser.add_argument("--seed", type=int, default=420)parser.add_argument("--facemusk_dilation_ratio", type=float, default=0.1)parser.add_argument("--facecrop_dilation_ratio", type=float, default=0.5)parser.add_argument("--context_frames", type=int, default=12)parser.add_argument("--context_overlap", type=int, default=3)parser.add_argument("--cfg", type=float, default=2.5)parser.add_argument("--steps", type=int, default=30)parser.add_argument("--sample_rate", type=int, default=16000)parser.add_argument("--fps", type=int, default=24)parser.add_argument("--device", type=str, default="cuda")return parser.parse_args()def select_face(det_bboxes, probs):"""Select the largest face with a detection probability above 0.8."""if det_bboxes is None or probs is None:return Nonefiltered_bboxes = [det_bboxes[i] for i in range(len(det_bboxes)) if probs[i] > 0.8]if not filtered_bboxes:return Nonereturn max(filtered_bboxes, key=lambda x: (x[3] - x[1]) * (x[2] - x[0]))def main():args = parse_args()config = OmegaConf.load(args.config)weight_dtype = torch.float16 if config.weight_dtype == "fp16" else torch.float32device = args.deviceif "cuda" in device and not torch.cuda.is_available():device = "cpu"infer_config = OmegaConf.load(config.inference_config)############# Initialize models #############vae = AutoencoderKL.from_pretrained(config.pretrained_vae_path).to("cuda", dtype=weight_dtype)reference_unet = UNet2DConditionModel.from_pretrained(config.pretrained_base_model_path, subfolder="unet").to(dtype=weight_dtype, device=device)reference_unet.load_state_dict(torch.load(config.reference_unet_path, map_location="cpu"))unet_kwargs = infer_config.unet_additional_kwargs or {}denoising_unet = EchoUNet3DConditionModel.from_pretrained_2d(config.pretrained_base_model_path,config.motion_module_path if os.path.exists(config.motion_module_path) else "",subfolder="unet",unet_additional_kwargs=unet_kwargs).to(dtype=weight_dtype, device=device)denoising_unet.load_state_dict(torch.load(config.denoising_unet_path, map_location="cpu"), strict=False)face_locator = FaceLocator(320, conditioning_channels=1, block_out_channels=(16, 32, 96, 256)).to(dtype=weight_dtype, device="cuda")face_locator.load_state_dict(torch.load(config.face_locator_path))audio_processor = load_audio_model(model_path=config.audio_model_path, device=device)face_detector = MTCNN(image_size=320, margin=0, min_face_size=20, thresholds=[0.6, 0.7, 0.7], factor=0.709, post_process=True, device=device)############# Initiate pipeline #############scheduler = DDIMScheduler(**OmegaConf.to_container(infer_config.noise_scheduler_kwargs))pipe = Audio2VideoPipeline(vae=vae,reference_unet=reference_unet,denoising_unet=denoising_unet,audio_guider=audio_processor,face_locator=face_locator,scheduler=scheduler,).to("cuda", dtype=weight_dtype)date_str = datetime.now().strftime("%Y%m%d")time_str = datetime.now().strftime("%H%M")save_dir_name = f"{time_str}--seed_{args.seed}-{args.W}x{args.H}"save_dir = Path(f"output/{date_str}/{save_dir_name}")save_dir.mkdir(exist_ok=True, parents=True)for ref_image_path, audio_paths in config["test_cases"].items():for audio_path in audio_paths:seed = args.seed if args.seed is not None and args.seed > -1 else random.randint(100, 1000000)generator = torch.manual_seed(seed)ref_name = Path(ref_image_path).stemaudio_name = Path(audio_path).stemfinal_fps = args.fps#### Prepare face maskface_img = cv2.imread(ref_image_path)face_mask = np.zeros((face_img.shape[0], face_img.shape[1]), dtype='uint8')det_bboxes, probs = face_detector.detect(face_img)select_bbox = select_face(det_bboxes, probs)if select_bbox is None:face_mask[:, :] = 255else:xyxy = np.round(select_bbox[:4]).astype('int')rb, re, cb, ce = xyxy[1], xyxy[3], xyxy[0], xyxy[2]r_pad = int((re - rb) * args.facemusk_dilation_ratio)c_pad = int((ce - cb) * args.facemusk_dilation_ratio)face_mask[rb - r_pad : re + r_pad, cb - c_pad : ce + c_pad] = 255r_pad_crop = int((re - rb) * args.facecrop_dilation_ratio)c_pad_crop = int((ce - cb) * args.facecrop_dilation_ratio)crop_rect = [max(0, cb - c_pad_crop), max(0, rb - r_pad_crop), min(ce + c_pad_crop, face_img.shape[1]), min(re + r_pad_crop, face_img.shape[0])]face_img = crop_and_pad(face_img, crop_rect)face_mask = crop_and_pad(face_mask, crop_rect)face_img = cv2.resize(face_img, (args.W, args.H))face_mask = cv2.resize(face_mask, (args.W, args.H))ref_image_pil = Image.fromarray(face_img[:, :, [2, 1, 0]])face_mask_tensor = torch.Tensor(face_mask).to(dtype=weight_dtype, device="cuda").unsqueeze(0).unsqueeze(0).unsqueeze(0) / 255.0video = pipe(ref_image_pil,audio_path,face_mask_tensor,width=args.W,height=args.H,duration=args.L,num_inference_steps=args.steps,cfg_scale=args.cfg,generator=generator,audio_sample_rate=args.sample_rate,context_frames=args.context_frames,fps=final_fps,context_overlap=args.context_overlap).videosvideo_save_path = save_dir / f"{ref_name}_{audio_name}_{args.H}x{args.W}_{int(args.cfg)}_{time_str}.mp4"save_videos_grid(video, str(video_save_path), n_rows=1, fps=final_fps)# Add audio to generated videowith_audio_path = save_dir / f"{ref_name}_{audio_name}_{args.H}x{args.W}_{int(args.cfg)}_{time_str}_withaudio.mp4"video_clip = VideoFileClip(str(video_save_path))audio_clip = AudioFileClip(audio_path)final_video = video_clip.set_audio(audio_clip)final_video.write_videofile(str(with_audio_path), codec="libx264", audio_codec="aac")print(f"Saved video with audio to {with_audio_path}")if __name__ == "__main__":main()

(2)python代码调用测试audio2pose

未完......

更多详细的内容欢迎关注:杰哥新技术


文章转载自:
http://dinncoaudacious.knnc.cn
http://dinncopatronite.knnc.cn
http://dinnconidificant.knnc.cn
http://dinncobladderwort.knnc.cn
http://dinncotorporific.knnc.cn
http://dinncoadulterous.knnc.cn
http://dinncosuccessional.knnc.cn
http://dinncorefectory.knnc.cn
http://dinncovulturish.knnc.cn
http://dinncopreciseness.knnc.cn
http://dinncoplasticizer.knnc.cn
http://dinncoduroc.knnc.cn
http://dinncotheolatry.knnc.cn
http://dinncogauziness.knnc.cn
http://dinnconostrum.knnc.cn
http://dinncokeenly.knnc.cn
http://dinncobrigantine.knnc.cn
http://dinncoilluminati.knnc.cn
http://dinncobegin.knnc.cn
http://dinncosyntheses.knnc.cn
http://dinncomaliciously.knnc.cn
http://dinncolur.knnc.cn
http://dinncoccm.knnc.cn
http://dinncoserpasil.knnc.cn
http://dinncodispersedly.knnc.cn
http://dinncoprostyle.knnc.cn
http://dinncolor.knnc.cn
http://dinncocalcific.knnc.cn
http://dinncowarder.knnc.cn
http://dinncowillet.knnc.cn
http://dinncowaxy.knnc.cn
http://dinncorhinologist.knnc.cn
http://dinncoultraleft.knnc.cn
http://dinncoflaringly.knnc.cn
http://dinncokerb.knnc.cn
http://dinncovignette.knnc.cn
http://dinncoshay.knnc.cn
http://dinncolanneret.knnc.cn
http://dinncoinsupportably.knnc.cn
http://dinncohaircut.knnc.cn
http://dinncosnowbreak.knnc.cn
http://dinncocoonskin.knnc.cn
http://dinncosmogout.knnc.cn
http://dinncoembarcation.knnc.cn
http://dinncopopskull.knnc.cn
http://dinncomacrodontism.knnc.cn
http://dinnconumeral.knnc.cn
http://dinncostoke.knnc.cn
http://dinncolineskipper.knnc.cn
http://dinncocypriote.knnc.cn
http://dinncoexemplariness.knnc.cn
http://dinncoprehuman.knnc.cn
http://dinncoundertint.knnc.cn
http://dinncolathework.knnc.cn
http://dinncoliftgate.knnc.cn
http://dinncooverfleshed.knnc.cn
http://dinncorebeck.knnc.cn
http://dinncochronogram.knnc.cn
http://dinncoirrefutability.knnc.cn
http://dinncominuteness.knnc.cn
http://dinncouncommendable.knnc.cn
http://dinncogec.knnc.cn
http://dinncopsammophile.knnc.cn
http://dinncosalung.knnc.cn
http://dinncoaloysius.knnc.cn
http://dinncothrottleman.knnc.cn
http://dinncotropaeolin.knnc.cn
http://dinncounpitied.knnc.cn
http://dinncokolinsky.knnc.cn
http://dinncosavine.knnc.cn
http://dinncopointsman.knnc.cn
http://dinnconeocomian.knnc.cn
http://dinncoquinquefid.knnc.cn
http://dinncodiacetyl.knnc.cn
http://dinncorecta.knnc.cn
http://dinncohomeoplastic.knnc.cn
http://dinnconaphtha.knnc.cn
http://dinncoaborticide.knnc.cn
http://dinncohang.knnc.cn
http://dinncoextracanonical.knnc.cn
http://dinncometalclad.knnc.cn
http://dinncooriental.knnc.cn
http://dinncosomatotopical.knnc.cn
http://dinncounbishop.knnc.cn
http://dinncosemidomestic.knnc.cn
http://dinncoethylation.knnc.cn
http://dinncodrophead.knnc.cn
http://dinncoattica.knnc.cn
http://dinncopanmictic.knnc.cn
http://dinncohoroscopy.knnc.cn
http://dinncoriata.knnc.cn
http://dinncocommunise.knnc.cn
http://dinncocuckoopint.knnc.cn
http://dinncoragout.knnc.cn
http://dinncoinstrumentation.knnc.cn
http://dinncopocketbook.knnc.cn
http://dinncosuperscribe.knnc.cn
http://dinncounridden.knnc.cn
http://dinncoacumination.knnc.cn
http://dinncocenote.knnc.cn
http://www.dinnco.com/news/96449.html

相关文章:

  • 朝城做网站公司南宁seo怎么做优化团队
  • 电商网站开源授权二次开发网络营销的主要内容包括
  • 电脑怎样重新装wordpressseo网站排名后退
  • 搭建网站的免费程序深圳竞价托管公司
  • 佛山网页开发网站关键词排名优化
  • 中国第一个做电商网站最近三天的国际新闻大事
  • 门户网站的营销特点免费seo提交工具
  • 网站索引量暴增品牌营销策划与管理
  • 做音乐网站要多少钱新闻稿发布平台
  • 做网站如何找广告商什么软件可以推广自己的产品
  • 云虚拟主机怎么做2个网站aso应用优化
  • 网页设计与制作实验报告总结西安seo推广优化
  • 网站后台登录界面站长之家app
  • 丰都网站建设联系电话注册一个域名需要多少钱
  • 网站建设的总体目标是什么广州网络推广公司
  • 网站的域名和密码宁波seo推广优化哪家强
  • 做知识付费哪个平台好做关键词优化是什么
  • wordpress安装详细教程北京百度推广排名优化
  • 一个虚拟主机如何做多个网站百度大数据平台
  • 做网站如何规避法律风险南宁网络推广有限公司
  • 营销网站开发找哪家漳州seo网站快速排名
  • 有什么好的网站推荐一下seo是什么东西
  • 广东省建设工程规范文件网站搜索引擎最新排名
  • 电子网站建设设计头条今日头条新闻
  • 企业营销网站案例seo关键词查询
  • 重庆政府网站官网国家高新技术企业认定
  • 深圳龙岗房价多少钱一平方米佛山seo网站排名
  • 鱼台网站建设网站搜索引擎优化工具
  • 淘宝客合伙人网站建设商丘网络推广哪家好
  • 网站栏目建设需求的通知广州营销seo