1번째 줄: |
1번째 줄: |
| == 개요 == | | == 개요 == |
− | 범죄에도 악용될 수 있는... 위험한 기술. | + | 범죄에도 악용될 수 있는... 위험한 기술. 간단하게 서비스 해주는 곳도 있다.(https://www.youtube.com/watch?v=qaB0YqSfasM) |
| + | |
| + | 샌프란샘박사님의 딥페이크 영상 만들기에 공개된 코드이다. |
| + | |
| + | https://github.com/iperov/DeepFaceLab<nowiki/>도 참고해보자. |
| + | |
| + | 이곳저곳 찾아본 결과... 코드 실행 한 번으로 간단하게 결과물이 나오는 것은 없었다;;; 다 번거로운 중간 클릭과정들을 거쳐야 했다..ㅜ |
| + | |
| + | === 결론 === |
| + | 어플을 사용하는 게 가장 간편한 방법. 다양한 코드들로 진행한다 해서 간단하게 아주 양질의 결과물을 얻을 수 있는 것은 아니다. |
| | | |
| == 사전준비 == | | == 사전준비 == |
| + | {| class="wikitable" |
| + | !과정 |
| + | !설명 |
| + | !방법 |
| + | |- |
| + | |필요 패키지 설치 |
| + | |프로젝트 디렉터리에서 진행. |
| + | |pip install scikit-video |
| + | git clone <nowiki>https://github.com/drminix/first-order-model</nowiki> |
| + | |- |
| + | | |
| + | | |
| + | | |
| + | |} |
| + | |
| + | == 사용 == |
| + | {| class="wikitable" |
| + | !과정 |
| + | !설명 |
| + | !방법 |
| + | |- |
| + | |입력영상과 사진 불러오기 |
| + | |영상과 그 영상에 덧입힐 사진을 지정한다. |
| + | |<syntaxhighlight lang="python"> |
| + | import imageio |
| + | 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 warnings |
| + | import os |
| + | import skvideo.io |
| + | warnings.filterwarnings("ignore") |
| + | |
| + | #입력사진 |
| + | source_image = imageio.imread('/이미지 경로.jpg') |
| + | |
| + | #입력영상 |
| + | driving_video = skvideo.io.vread('/영상 경로.mp4') |
| + | |
| + | #Resize image and video to 256x256 |
| + | source_image = resize(source_image, (256, 256))[..., :3] |
| + | |
| + | driving_video = [resize(frame, (256, 256))[..., :3] for frame in driving_video] |
| + | |
| + | |
| + | 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 |
| + | |
| + | HTML(display(source_image, driving_video).to_html5_video()) |
| + | </syntaxhighlight> |
| + | |- |
| + | |영상만들기 |
| + | | |
| + | |<syntaxhighlight lang="python"> |
| + | from demo import load_checkpoints |
| + | import os |
| + | generator, kp_detector = load_checkpoints(config_path='config/vox-256.yaml', |
| + | checkpoint_path=os.path.join(target_folder,'vox-cpk.pth.tar')) |
| + | |
| + | from demo import make_animation |
| + | from skimage import img_as_ubyte |
| + | |
| + | predictions = make_animation(source_image, driving_video, generator, kp_detector, relative=True) |
| + | |
| + | #save resulting video |
| + | imageio.mimsave('../생성할파일경로.mp4', [img_as_ubyte(frame) for frame in predictions]) |
| + | #video can be downloaded from /content folder |
| | | |
− | # CUDA 세팅
| + | HTML(display(source_image, driving_video, predictions).to_html5_video()) |
− | #: CPU연산은 너무 오래걸린다. http://id8436.iptime.org:2786/mediawiki/index.php/TensorFlow<nowiki/>를 참고하자.
| + | </syntaxhighlight> |
− | # 소스코드 다운
| + | |} |
− | #: 깃허브에서 faceswap코드를 다운받는다. git clone --depth 1 https://github.com/deepfakes/faceswap.git
| |
− | #: 받은 파일의 압축을 풀고 프롬프트에서 setup.py를 실행한다. 설치환경을 설정해준다. cuda연산 사용여부 등등을 묻는데, 이곳에 답하면 자동으로 설정해준다.
| |
| # | | # |
| | | |
| [[분류:인공지능 기능구현]] | | [[분류:인공지능 기능구현]] |