我的图片动了,它真的动了!!!(玩转AI)
<p id="0207d3aa-c558-4478-ba70-2ceed7ee9205" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="a04c3993-cb69-4987-ab2e-bdfeec6bdd35" style="font-size:18px;margin:20px 0px;text-align:left;">今天,给大家介绍一个能够让图片动起来的AI算法。</span></p><p id="9ae6d1ad-2cd2-4f02-8324-39328b72ce29" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="3e82ade0-2214-4d31-ab83-3161d9950ef1" style="font-size:18px;margin:20px 0px;text-align:left;">通过一个视频,就可以驱动静止的图片,按照视频的动作,运动起来。</span></p><p id="c93265bf-e894-4ec0-a3a5-1346b2ccef40" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="4b82f7be-15c2-4b6b-a62a-b149c173b4fd" style="font-size:18px;margin:20px 0px;text-align:left;">成龙大哥,驱动各个图片的效果:</span></p><div id="9723d4b0-1cd1-4753-9d3f-c6c8bda58e34" style="font-size:18px;margin:20px 0px;text-align:left;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/4f0d4acdcf2440f39fe46b1dfba2fef3~noop.image?_iz=58558&from=article.pc_detail&x-expires=1660566094&x-signature=yni%2Br2ftEj2LWK%2BMEylIGBFdKLk%3D" style="width:100%;"></div><p id="ae923923-b9b7-419b-aa19-6c7c2de2eab9" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="2e548dc1-37f5-4277-89fc-f82a113ac5d8" style="font-size:18px;margin:20px 0px;text-align:left;">除了驱动头像,还可以驱动身体。</span></p><div id="f0423dac-b33a-4088-8708-0185cdfa0835" style="font-size:18px;margin:20px 0px;text-align:left;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/18a3b27dd54043b39448be7ec59b54f5~noop.image?_iz=58558&from=article.pc_detail&x-expires=1660566094&x-signature=cOspA8V6ampiWYK8FGVMy2w75rY%3D" style="width:100%;"></div><p id="95e1a929-7e8c-44e5-8175-fac96ec5e3cc" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="4daca8b9-611b-4a29-9d4e-5a3795549f8c" style="font-size:18px;margin:20px 0px;text-align:left;">该死,这糟糕的心动感,我必须跑一跑这个算法。</span></p><p id="d73d3e0a-9ff0-4ccd-ae23-9570d55da031" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="a939ed07-7f5e-449e-95a9-66032d73a90b" style="font-size:18px;margin:20px 0px;text-align:left;">今天,继续手把手教学。</span></p><p id="349d09b6-c38e-416b-bfa2-22955873faaf" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="34cf5405-1e1f-4d12-9a3c-2d25db679940" style="font-size:18px;margin:20px 0px;text-align:left;">算法原理、环境搭建、效果实现,一条龙服务,直接开始!</span></p><h1 id="1657f054-b31c-4f12-be7d-6b8e2775477f" style="font-size:20px;margin:20px 0px;font-weight:700;">算法原理</h1><p id="000fc3e6-2df4-43ac-8524-d55082596c1e" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="1a383d75-385a-4bbf-84c3-4b0689c3c069" style="font-size:18px;margin:20px 0px;text-align:left;">论文的名字是:</span></p><p id="cfc60b46-fbba-41fb-b8cc-bf84df4078a8" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="1aa98b1b-11bb-4c64-8672-1f976424ed91" style="font-size:18px;margin:20px 0px;text-align:left;">「Thin-Plate Spline Motion Model for Image Animation」</span></p><p id="98c712c1-7372-4dde-a5f4-c4fbe511e07f" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="0fb415b3-8c9b-4975-b2e7-e36932169fd5" style="font-size:18px;margin:20px 0px;text-align:left;">清华大佬们的作品,翻译成中文大概意思是,基于薄板样条插值的图像运动模型。</span></p><p id="b036a080-337c-4116-9f4d-a83f5ad79c6c" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="892d92d7-e1c9-498d-8295-72161a6e3ffc" style="font-size:18px;margin:20px 0px;text-align:left;">我大致浏览了下论文,针对一些现有的无监督学习方法,进行了改进。</span></p><p id="acd24686-dd9c-4a8c-b1d8-8d917065768a" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="6148f4ed-8312-4876-b752-7fda6e48f5b5" style="font-size:18px;margin:20px 0px;text-align:left;">缺少背景修复,也就是inpainting,这样生成的运动效果就不够逼真。</span></p><p id="6c8f140d-2682-4372-894b-ccae485ea63c" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="994b819a-24e7-43ee-9e2f-b2ffb659dfd3" style="font-size:18px;margin:20px 0px;text-align:left;">今天要介绍的算法,对此做了改进,成为了新的 SOTA。</span></p><p id="c9ab6f97-3a8c-40cc-865d-c923e44d8735" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="2c1cef75-875e-4cac-8369-f1aeef7e919c" style="font-size:18px;margin:20px 0px;text-align:left;">这类算法还是挺有意思的,可以用在视频会议、直播、视频特效、娱乐短视频等多种场景。</span></p><div id="f799ca9d-784e-4ee6-bca8-748ec5bf4d09" style="font-size:18px;margin:20px 0px;text-align:left;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/0e28ebc18b05484b906fc1f5d983c0c4~noop.image?_iz=58558&from=article.pc_detail&x-expires=1660566094&x-signature=msDX6eESAWLK0QRXR5uvERi5MlY%3D" style="width:100%;"></div><p id="8059f801-45c0-4e47-8584-1ac239a1f7a2" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="3ae80edb-af61-4678-813d-6f4eed809582" style="font-size:18px;margin:20px 0px;text-align:left;">算法主要分为四个部分:</span></p><ul id="b7c3939c-adee-419a-aefd-3e6e6d4ba45d" style="font-size:18px;margin:20px 0px;text-align:left;"><li id="f2575d1a-a546-454e-bc1b-06bc35f1ea54" style="font-size:18px;margin:20px 0px;text-align:left;"><span id="ae7ecef9-bfb5-41bc-95da-3a1b14de41e8" style="font-size:18px;margin:20px 0px;text-align:left;">Keypoint Detector:关键点预测,输出人体的关键点。</span></li><li id="c47f7bb8-f831-4a57-9771-127585afb8bf" style="font-size:18px;margin:20px 0px;text-align:left;"><span id="1cc7714b-9d14-454e-9937-b55377816b11" style="font-size:18px;margin:20px 0px;text-align:left;">BG Motion Predictor:图像背景也是运动的,背景变化预测。</span></li><li id="3a2768b5-5326-4b24-8e11-67b600e2fd1c" style="font-size:18px;margin:20px 0px;text-align:left;"><span id="293882d1-cfc6-4221-b4d8-85905cbcc1bd" style="font-size:18px;margin:20px 0px;text-align:left;">Dense Motion Network:可以理解为运动估计网络,结合关键点信息、背景运动信息,以及局部仿射变换信息,生成下一步的动作。</span></li><li id="96a025d5-e1e8-4204-bd70-b1d574b96a81" style="font-size:18px;margin:20px 0px;text-align:left;"><span id="7cad4fa7-e4aa-4fe0-9f24-2bfdf6b674af" style="font-size:18px;margin:20px 0px;text-align:left;">Inpainting Network:对运动后空缺的部位进行补全,填充背景。</span></li></ul><p id="1999232f-f0cb-4f71-951c-c260da1e037c" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="90ad2773-2185-4964-b40e-7d6299ddb485" style="font-size:18px;margin:20px 0px;text-align:left;">Dense Motion Network 和 Inpainting Network 的网络都是 hourglass 结构,就是先下采样,再上采样,形似沙漏状,密歇根大学的研究团队在ECCV2016发表的比较经典的网络结构。</span></p><p id="607ba22f-49d9-44f5-aac8-e281766d36dc" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="50099de7-9f11-4d41-b7f1-b27ba8148184" style="font-size:18px;margin:20px 0px;text-align:left;">这个算法,是一个新的端到端算法,提出了 TPS motion estimation 方法来驱动图像。</span></p><p id="056abc2a-8ccf-4ebe-94b4-20205a9ad69d" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="cdfb86c4-243c-4c47-a2ae-9020e55a0b80" style="font-size:18px;margin:20px 0px;text-align:left;">篇幅有限,更详细的内容,可以直接看论文:</span></p><blockquote id="51d60006-beec-4cd9-92fc-ec788671ac85" style="font-size:18px;margin:20px 0px;text-align:left;"><p id="dc226746-6ef6-4f4e-ba49-7d1aa11e2ce9" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="2965160b-3a28-4967-b5cc-40632eedf1b5" style="font-size:18px;margin:20px 0px;text-align:left;">https://arxiv.org/pdf/2203.14367.pdf</span></p></blockquote><h1 id="126de13a-42e4-4785-87e1-16dcea5e5a2d" style="font-size:20px;margin:20px 0px;font-weight:700;">项目部署</h1><p id="aa603ab6-67e1-4e23-803b-0a08647c32cd" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="6a1ad1ab-39c6-4a11-9e73-6c06c76786d7" style="font-size:18px;margin:20px 0px;text-align:left;">算法已经开源:</span></p><div id="47d0f7b4-f4c8-4b5d-a265-640fa5441762" style="font-size:18px;margin:20px 0px;text-align:left;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e7d0a90637514f999eedbbd1282f0f07~noop.image?_iz=58558&from=article.pc_detail&x-expires=1660566094&x-signature=1pDI8NQEar7gVJwn1iCO609nXiY%3D" style="width:100%;"></div><p id="e17ef7fb-2dfb-40b6-9152-6efa6a0166b7" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="18c12e03-978d-4610-841b-308a73f64720" style="font-size:18px;margin:20px 0px;text-align:left;">项目地址:</span></p><blockquote id="c121308a-33b3-474b-99eb-b1d178d55f30" style="font-size:18px;margin:20px 0px;text-align:left;"><p id="40a98658-98bf-4ab1-88a1-b8e57a1332e1" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="0ca131c2-bf07-43e0-8ff4-0a3ead403f49" style="font-size:18px;margin:20px 0px;text-align:left;">https://github.com/yoyo-nb/Thin-Plate-Spline-Motion-Model</span></p></blockquote><p id="c298c32b-446b-4600-a27d-7128faf91e29" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="364bee34-ede5-4904-a97a-6c18e8cd6c9a" style="font-size:18px;margin:20px 0px;text-align:left;">首先需要搭建开发环境,这里还是建议使用 Anaconda,安装一些必要的第三方库,可以参考这两篇开发环境搭建的内容:</span></p><p id="24414da8-d84d-406e-a380-d0a09f895517" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="aca31352-4eef-4bb1-94c7-df330e501517" style="font-size:18px;margin:20px 0px;text-align:left;">别再折腾开发环境了,一劳永逸的搭建方法</span></p><p id="1dd8db69-8b57-4b9d-b62d-2854aa57fdad" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="fb4a0fa5-b9e0-4126-9c75-7a74df8c89a0" style="font-size:18px;margin:20px 0px;text-align:left;">Pytorch深度学习实战教程(一):语义分割基础与环境搭建</span></p><p id="6f03d17c-554c-42fc-b715-f5a9b59a7ad7" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="3f4dbe03-c719-4d2b-99e9-ebfe84deedd3" style="font-size:18px;margin:20px 0px;text-align:left;">两篇开发环境搭建教程,如果想手把手的视频教程,可以参考这个:</span></p><blockquote id="d52beefc-d668-47b3-9db0-92ccadd3f324" style="font-size:18px;margin:20px 0px;text-align:left;"><p id="0780ebe2-4de1-448e-8bf7-ef025a905f5e" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="30abc2b8-d9f2-4c2c-8ff3-d70f26df0b4f" style="font-size:18px;margin:20px 0px;text-align:left;">https://www.bilibili.com/video/BV14R4y1g7qs</span></p></blockquote><p id="b201937f-251b-4d20-ba26-3e04c942959c" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="63bb8189-c0b7-415d-9718-9b59d83cf9b1" style="font-size:18px;margin:20px 0px;text-align:left;">环境搭建的问题,文章和视频教程都出过了,可以参考,这里就不再累述。</span></p><p id="ce07b3a7-58c2-4492-856c-edee8c68eaad" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="ec55b8d8-5dff-4ec3-910c-316de0608257" style="font-size:18px;margin:20px 0px;text-align:left;">项目的 requirements.txt 详细列出了依赖。</span></p><pre id="584152b8-87b3-4bab-9e2e-6740b0cf99b0" style="font-size:18px;margin:20px 0px;text-align:left;"><code id="2a8705e2-4aa0-4f9b-a494-61dea787ec01" style="font-size:18px;margin:20px 0px;text-align:left;">cffi==<span id="94f2aad1-1c74-49c8-b551-040daaa1c0a2" style="font-size:18px;margin:20px 0px;text-align:left;">1.14</span><span id="5ea57592-ce16-4093-bafc-72a78e419ae3" style="font-size:18px;margin:20px 0px;text-align:left;">.6</span>cycler==<span id="152811b3-224f-4250-8b99-a0f2469b605d" style="font-size:18px;margin:20px 0px;text-align:left;">0.10</span><span id="9a793d3a-5225-42b6-a1f8-23bd0cf583db" style="font-size:18px;margin:20px 0px;text-align:left;">.0</span>decorator==<span id="7736dae7-83d7-402c-9240-e21a09c1c0ba" style="font-size:18px;margin:20px 0px;text-align:left;">5.1</span><span id="52b555cf-f610-4bf7-9791-caa02f7f969b" style="font-size:18px;margin:20px 0px;text-align:left;">.0</span>face-alignment==<span id="a881bfc5-51d0-4d43-95b7-7aed74e11f73" style="font-size:18px;margin:20px 0px;text-align:left;">1.3</span><span id="6efa531a-f106-4621-a458-6c89bc5980c0" style="font-size:18px;margin:20px 0px;text-align:left;">.5i</span>mageio==<span id="0e74eba3-bf6f-4d3b-b2df-5d32eed1245a" style="font-size:18px;margin:20px 0px;text-align:left;">2.9</span><span id="c718c825-752b-493b-87e5-31137b2b41ad" style="font-size:18px;margin:20px 0px;text-align:left;">.0i</span>mageio-ffmpeg==<span id="b09353d5-07bb-46e8-9d79-b69eb1d2c454" style="font-size:18px;margin:20px 0px;text-align:left;">0.4</span><span id="719b7c07-255c-4293-ad87-fe2b938d3a0d" style="font-size:18px;margin:20px 0px;text-align:left;">.5</span>kiwisolver==<span id="6f103200-d1da-4768-8b70-bacd5b0a59ba" style="font-size:18px;margin:20px 0px;text-align:left;">1.3</span><span id="b966f46e-bd55-4749-8058-d97d328a854b" style="font-size:18px;margin:20px 0px;text-align:left;">.2</span>matplotlib==<span id="01eabd91-622b-4c15-a40c-347596a49322" style="font-size:18px;margin:20px 0px;text-align:left;">3.4</span><span id="2555da06-89d1-4ecb-841f-73ebd8acdc17" style="font-size:18px;margin:20px 0px;text-align:left;">.3</span>networkx==<span id="f94094e0-2905-4f95-8131-a326628f6378" style="font-size:18px;margin:20px 0px;text-align:left;">2.6</span><span id="6b3a8a4d-b253-4ffe-8c41-aaf07235cd77" style="font-size:18px;margin:20px 0px;text-align:left;">.3</span>numpy==<span id="4c5efcb6-34c6-4310-b35a-2d33041c74c4" style="font-size:18px;margin:20px 0px;text-align:left;">1.20</span><span id="4225e14b-77aa-45e7-9c42-3aac0984c80d" style="font-size:18px;margin:20px 0px;text-align:left;">.3</span>pandas==<span id="250fada4-f9ce-4f8c-b962-726befb5fd3e" style="font-size:18px;margin:20px 0px;text-align:left;">1.3</span><span id="7bd405c5-adf9-4570-8109-0bf51deecb08" style="font-size:18px;margin:20px 0px;text-align:left;">.3</span>Pillow==<span id="4ca65ea9-33bd-4202-b1b3-0a17cc367bc3" style="font-size:18px;margin:20px 0px;text-align:left;">8.3</span><span id="e6768e51-a943-4ad1-afa4-24b21020894c" style="font-size:18px;margin:20px 0px;text-align:left;">.2</span>pycparser==<span id="bbb84ce3-f90c-4d61-8957-de72b109dec9" style="font-size:18px;margin:20px 0px;text-align:left;">2.20</span>pyparsing==<span id="8a4bc7c5-6a3a-4646-860c-afc922c27876" style="font-size:18px;margin:20px 0px;text-align:left;">2.4</span><span id="0327d1e3-0213-402e-9140-84d45546987f" style="font-size:18px;margin:20px 0px;text-align:left;">.7</span>python-dateutil==<span id="75d0b339-ee5d-4836-80ba-96398f9c0bdd" style="font-size:18px;margin:20px 0px;text-align:left;">2.8</span><span id="f42d508e-1188-45f8-99bb-8e999ef89f3d" style="font-size:18px;margin:20px 0px;text-align:left;">.2</span>pytz==<span id="fa3ee2ae-c9b3-4c63-8043-91ae9a0eb002" style="font-size:18px;margin:20px 0px;text-align:left;">2021.1</span>PyWavelets==<span id="d5cbe029-1177-421b-afac-3413cc339db9" style="font-size:18px;margin:20px 0px;text-align:left;">1.1</span><span id="3074b1f2-4869-410d-ba8e-29a8f2ec8517" style="font-size:18px;margin:20px 0px;text-align:left;">.1</span>PyYAML==<span id="d5d6f4cb-d81e-4ec7-9037-5b0cfbc83c05" style="font-size:18px;margin:20px 0px;text-align:left;">5.4</span><span id="8bb4dc21-56aa-4993-86b9-ab8995329e67" style="font-size:18px;margin:20px 0px;text-align:left;">.1</span>scikit-image==<span id="242ed6a7-7e5b-4fe3-9e91-5b06266001e9" style="font-size:18px;margin:20px 0px;text-align:left;">0.18</span><span id="504e487e-aa0a-4130-a9b6-75c91b038527" style="font-size:18px;margin:20px 0px;text-align:left;">.3</span>scikit-learn==<span id="10a8e0d4-61ce-4adf-919d-8c262cc31179" style="font-size:18px;margin:20px 0px;text-align:left;">1.0</span>scipy==<span id="5136d5a6-72cf-472d-b977-2f5184f7526e" style="font-size:18px;margin:20px 0px;text-align:left;">1.7</span><span id="94986b62-d5f3-43c4-b267-9c9e1982f13f" style="font-size:18px;margin:20px 0px;text-align:left;">.1</span>six==<span id="9565e12d-8d20-4e80-8d02-42c668ab800b" style="font-size:18px;margin:20px 0px;text-align:left;">1.16</span><span id="0ca97671-c2d7-4edc-9a2b-3d76c770ab3f" style="font-size:18px;margin:20px 0px;text-align:left;">.0</span>torch==<span id="18239908-eea6-4531-bbf0-16117b3d1550" style="font-size:18px;margin:20px 0px;text-align:left;">1.10</span><span id="71033338-7a74-4cee-bd0d-5c89fd1e31ee" style="font-size:18px;margin:20px 0px;text-align:left;">.0</span>+cu113torchvision==<span id="59ecc79a-c250-48a3-a74d-e5dc18afe263" style="font-size:18px;margin:20px 0px;text-align:left;">0.11</span><span id="e35568d6-2160-44ad-8f31-53a9a6da7924" style="font-size:18px;margin:20px 0px;text-align:left;">.0</span>+cu113tqdm==<span id="841a003e-272d-4448-90d1-46c6b7ed89ec" style="font-size:18px;margin:20px 0px;text-align:left;">4.62</span><span id="509f654d-c29d-4efd-bca6-793be0b78863" style="font-size:18px;margin:20px 0px;text-align:left;">.3</span></code></pre><p id="f882e4fd-123f-49c4-94ad-2211dfdf6569" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="14a9aa29-e634-4d83-bff7-35b2ab386d22" style="font-size:18px;margin:20px 0px;text-align:left;">使用 conda 或者 pip 安装即可。</span></p><p id="0b002910-2914-4cfb-92dd-f219f54edc3a" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="aed24d9e-743b-4d8a-a69b-ccd196cdf845" style="font-size:18px;margin:20px 0px;text-align:left;">环境弄好,下载权重文件,作者提供了清华云盘,下载速度还不错。</span></p><blockquote id="a10a4572-4ecd-4542-a197-d77d77c24ac8" style="font-size:18px;margin:20px 0px;text-align:left;"><p id="a38cc2cf-2a8b-4f11-bf75-de3bad98b8cf" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="b3168151-a64c-4095-a5a1-e5b8195ed8ad" style="font-size:18px;margin:20px 0px;text-align:left;">https://cloud.tsinghua.edu.cn/d/30ab8765da364fefa101/</span></p></blockquote><p id="bdf2d671-9a61-41aa-bfa5-2b2c3eac433a" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="79ae180a-416f-4a78-ae10-3f3e2cad6f2c" style="font-size:18px;margin:20px 0px;text-align:left;">创建一个 checkpoints 文件夹,然后将权重文件放进去。</span></p><p id="7cd92715-9827-45e8-a57a-cbe6e55a4c72" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="3dc31beb-cbb6-4e16-8123-341709663f53" style="font-size:18px;margin:20px 0px;text-align:left;">然后就可以下面的指令运行算法:</span></p><pre id="81f6d7ae-690d-4629-9765-65b231029ec5" style="font-size:18px;margin:20px 0px;text-align:left;"><code id="5e4e9039-f31d-4719-927f-66ff699f27ec" style="font-size:18px;margin:20px 0px;text-align:left;"><span id="64dc579d-a7c3-468c-9ffd-cce9725d237c" style="font-size:18px;margin:20px 0px;text-align:left;">CUDA_VISIBLE_DEVICES</span>=<span id="d18ad2ff-bec9-4dbd-acb8-d1bbc988c249" style="font-size:18px;margin:20px 0px;text-align:left;">0</span>python demo.py --config config/vox-<span id="4bf99829-7d34-4db7-a8e4-ed3f61c1e3f3" style="font-size:18px;margin:20px 0px;text-align:left;">256</span>.yaml --checkpoint checkpoints/vox.pth.tar --source_image ./source.jpg --driving_video ./driving.mp4</code></pre><p id="4703902c-6434-4089-b770-8c68dda711f7" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="9f00e827-f9dc-4ce1-a9f5-133e8dd945b1" style="font-size:18px;margin:20px 0px;text-align:left;">CUDA_VISIBLE_DEVICES 指定 gpu,config 指定配置文件,checkpoint 指定权重文件,source_image 指定原始图像,driving_video 为驱动图像的视频文件。</span></p><p id="c4ab2849-38f7-4c87-9284-eb36ac5a0a42" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="d92a1267-5d42-438a-8f4d-9503ec24b072" style="font-size:18px;margin:20px 0px;text-align:left;">如果不想部署本地的环境,也可以使用 Colab:</span></p><blockquote id="810367bc-0cfe-45bf-9903-b45c7ac68b16" style="font-size:18px;margin:20px 0px;text-align:left;"><p id="907f8168-17b1-4f1f-bbe5-35cd12a89f76" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="9f59feb1-d1c1-47cc-bcae-7125dd66a5ec" style="font-size:18px;margin:20px 0px;text-align:left;">https://colab.research.google.com/drive/1DREfdpnaBhqISg0fuQlAAIwyGVn1loH_?usp=sharing</span></p></blockquote><p id="2c59b0b6-1359-4418-ac07-d894742604da" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="60b1ca8a-b4e1-40cb-9a72-81c54927f878" style="font-size:18px;margin:20px 0px;text-align:left;">这个算法是没有声音的,如果想添加声音,生成一个视频,可以参考我之前的代码改造下这个算法。</span></p><p id="935c7c52-40e1-4fce-b0ad-7622b7b65442" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="58dbf05f-f5bb-4646-b3f0-7e8ed94f94eb" style="font-size:18px;margin:20px 0px;text-align:left;">我之前用的是 ffmpeg 写的处理代码。</span></p><p id="522398f9-b28d-4f90-96c5-882c3e4baebc" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="12cd608f-1097-462d-8293-f09ba3371839" style="font-size:18px;margin:20px 0px;text-align:left;">让图片动起来,特朗普和蒙娜丽莎深情合唱《Unravel》</span></p><h1 id="ef402191-cc00-4edb-9882-9aa2d399b5e4" style="font-size:20px;margin:20px 0px;font-weight:700;">总结</h1><p id="28b175ab-bb71-412c-b9b4-328df3d1a78f" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="c3c86b1f-939c-4d97-8b21-c6406ea07273" style="font-size:18px;margin:20px 0px;text-align:left;">怎么样?鬼畜素材又有了吧。</span></p><p id="95033fff-44f5-4a80-9161-c2b9f673c5f2" style="font-weight:400;text-align:left;line-height:1.667;margin:20px 0px;font-size:18px;"><span id="03d86b51-8450-45fb-9c38-6f2b3cee333f" style="font-size:18px;margin:20px 0px;text-align:left;">想看这个算法的视频教程吗?考虑要不啥时候开个直播,随便聊聊。</span></p>
页:
[1]