2020년 9월 27일 일요일

휴대폰 네비 사용중 통화 팝업 화면으로 바꾸기

 통신사: kt

기종: 갤럭시 노트10


통화화면 설정으로 들어가 다음과 같이 변경하면 됩니다.



앱 사용 중 수신 전화 화면 선택


통화 중에도 팝업 화면 유지 선택


이 때 통화후 자동차 스피커에서 소리가 안나올 수 있는데 이를 해결하는 방법은 찾지 못하였으며, 전체 화면 설정으로 사용할 경우 스피커는 문제없음.
끝.

2018년 7월 17일 화요일

윈도우와 tv 연결시 삭제된 파일이 남아있을 때 - 미디어 스트리밍 옵션

같은 공유기로 tv와 컴퓨터를 연결하였을 때 삭제된 파일이 계속 목록에 떠있는 경우 (실행은 되지 않는 더미 파일)
윈도우 미디어 플레이어를 실행하여 왼쪽 목록에서 비디오(해당하는 유형 그림, 음악등) 선택하여 삭제
tv를 통해 접속하여도 더이상 나타나지 않음.


2018년 5월 20일 일요일

OpenFaceSwap (3) - encoder 파일 공유

  Fakeapp과 마찮가지로 모델 경로에 이 encoder 파일을 붙여넣고 트레이닝 시키면 아무것도 없는상태에서 하는것에 비해 수렴속도가 굉장히 빠르게 진행됩니다. 이미 트레이닝이 어느정도 된것이기 때문에 decoder파일의 결과물을 좋은결과로 훨씬 빨리 얻을 수 있습니다.
  아무것도 없는 상태에서 하루에 반나절씩 돌린다했을때 2~3일정도가 걸린다면 이 파일을 이용하면 5~6시간 이면 충분합니다.



  대신 이 encoder 모델파일을 사용하려면 옵션을 맞춰주어야 합니다. 사용한 옵션은 openfaceswap 기준으로 trainer는 Lowmem, Batch Size는 32입니다. 저는 1060 3GB이므로 이러한 옵션을 적용했습니다. 그래픽카드의 메모리가 더 크신 분들은 본인의 설정에 맞게 만들어서 encoder.h5을 재활용하시면 됩니다. 
  동일한 encoder파일을 바탕으로 만들어진 decoder 파일은 상호간에 호환이 가능하므로트레이닝에 소모되는 시간을 크게 단축시킬 수 있습니다.

encoder 파일 다운로드 (180520)

2018년 5월 14일 월요일

OpenFaceSwap (2) - 사용방법

  OpenFaceSwap은 FakeApp에 비해 사용이 매우 간편하도록 디자인 되어 있습니다.


  진행과정은

  • VIDEO: 비디오 파일 추가
  • IMAGES: 비디오 파일 캡처 (다른 이미지 파일 추가 가능)
  • FACES: 얼굴 부분 잘라내어 Align 데이터 획득
  • B도 A와 같이 위의 과정 반복
  • Model: 트레이닝 진행
  • SWAPS: A의 몸에 B의 얼굴 합성(반대도 가능)
  • Movie: 생성된 합성이미지 영상으로 변환 (소리 포함 가능)

상단의 디스크 이미지는 세팅을 저장하는 버튼입니다.
상단의 폴더 이미지는 저장한 세팅을 불러오는 버튼입니다.
상단의 물음표는 프로그램 우측에 표시되는 도움말을 띄우는 버튼입니다.

각각의 VIDEO A, IMAGES A버튼등은 각 단계를 진행하도록 하는 버튼이며 아래에서 설명드리겠습니다. 
그 옆의 공란은 추출되거나 추출할 대상의 경로 입니다.
그 옆의 폴더표시는 경로를 선택하는 버튼입니다.
돋보기 표시는 입력되어있는 경로의 폴더를 여는 버튼입니다.
톱니바퀴는 해당 단계를 설정하는 버튼입니다.

과정을 설명드리겠습니다.

  VIDEO A 버튼을 클릭하여 몸이 될 사람이 있는 영상을 추가해줍니다. 혹은 공란에 비디오 파일의 경로를 입력해 줍니다.

  IMAGES 버튼을 클릭하면 추가된 영상파일이 캡처파일로 생성됩니다. 우측 공란에 폴더 경로를 미리 입력해두면 해당 경로에 캡처파일이 생성됩니다. (해당 경로에 다른 이미지 추가가능) 설정에서 이미지 확장자 jpg, png를 선택할 수 있으며,
Frames/sec를 입력하여 캡처를 초당 몇번할 지 선택 할 수 있습니다. 이 때 몸이 될 영상의 경우 원본 영상과 동일 하도록 입력해주시기 바랍니다. 얼굴이 될 영상의 경우 2정도를 넣으면 됩니다.
(데이터로 트레이닝을 진행할 때에는 한사람당 한번에 ~1000장정도 씩 끊어서 진행하면 됨. 이 이상이 된느 경우 경우에 따라 모델이 잘 수렴하지 못하고 트레이닝 된 결과물이 선명하지 못할 수 있음. 따라서 이를 고려하여 선택하면 됨. 쓸모없이 너무 비슷한 얼굴을 많이 하여 트레이닝에 시간을 너무 많이 소요할 필요는 없음.)

  FACES A 버튼을 클릭하면 캡처파일에서 얼굴부분만을 골라냅니다.(256x256 크기임) 위와 마찬가지로 우측 공란에 폴더 경로를 미리 입력해두면 해당 경로에 Align된 이미지 파일을 생성합니다.
  설정 버튼을 누르면 Detector를 선택할 수 있습니다. 이는 얼굴을 인식하는 알고리즘을 선택하는 옵션입니다. 윈도우 7의 경우 FACES 기능을 눌렀을 때 창이 뜨자마자 사라지는 경우는 Command를 Cmd창에서 직접입력해주어야 합니다.
  cmd창을 띄워 cd c:\openfaceswap을 입력하여 명령창의 경로를 openfaceswap폴더로 지정한 후에 Command창에 쓰여져 있는 내용을 붙여넣어 실행하면 됩니다. (이는 굳이 OpenfaceSwap을 실행한 후 할 필요는 없으므로 명령어를 안다면 bat파일을 생성하여 이것만 실행해도 됨.)

  B도 A와 같이 이를 반복해줍니다.

  MODEL 버튼을 클릭하면 트레이닝이 진행됩니다. 이를 위해서는 FACES A, FACES B의 경로가 모두 지정되어 있어야 합니다. 중지를 원하시면 training창에서 '엔터'를 입력하시면 됩니다.
  설정 버튼을 누르면 Trainer를 선택할 수 있으며 Original과 LowMem정도를 활용하면 됩니다.(Layer의 갯수가 다른듯) OOM에러가 나타나면 Batch Size를 줄여야 합니다. Epochs와 Save interval은 다음 링크를 참조하시면 좋을 듯 합니다.
  저는 GTX1060 3GB를 사용하고 있습니다. 그래픽카드의 메모리에 따라 설정이 크게 영향을 받는다는 것을 참고하시면 될 것 같습니다. 저의 경우는 LowMem, batch size 32로 설정하면 진행이 됩니다.
  위의 FACES와 마찬가지로 윈도우 7의 경우 FACES 기능을 눌렀을 때 창이 뜨자마자 사라지는 경우는 Command를 Cmd창에서 직접입력해주어야 합니다.

SWAPS 버튼을 누르면 얼굴합성이 진행됩니다. 이를 위해  IMAGES A, MODEL 파일의 경로가 입력되어 있어야 합니다. 설정 버튼에서 Trainer는 이전에 MODEL에서 사용한 설정과 동일하게 선택하면 됩니다. Direction은 A,B중 누가 얼굴을 사용하는지의 방향입니다. seamless, smooth mask 등은 영상합성시에 이미지 후처리 해주는 설정입니다. 필요에 경험해보시고 사용하시면 됩니다.

MOVIE 버튼을 누르면 합성된 이미지를 영상으로 바꾸어 줍니다. 설정에서 sync audio를 누르면 음원을 같이 합칠 수 있습니다. 이 때에는 VIDEO A에 해당 영상의 경로가 입력되어 있어야 합니다.

설명은 길었지만 사실 버튼만 누르면 진행되는
과정들입니다. 저도 아직 초기 모델 학습을 진행중이여서 
결과물을 보지는 못했지만 사용이 직관적임을 느꼈습니다.

설치과정도 단순하니까 처음 시작하시는 분이라면 FakeApp보다는 
OpenFaceSwap을 추천드리고 싶네요.

OpenFaceSwap (1) - 소개 및 설치 방법


기존 툴인 FakeApp 쿠다8.0으로 동작한다.

  소개

  이 글에서는 OpenFaceSwap프로그램을 설치해보도록 하겠습니다. OpenFaceSwap은 해당 사이트(링크)에 따르면 기존 딥페이크 프로그램인 FakeApp, Dfaker에 비해 속도가 빠르고 성능이 좋다고 하네요(그만큼 VGA를 잘 이용하지만 동시에 다른 작업을 시도하면 OOM에러와 함께 패일이 발생할 가능성이 높음.). 기존 FakeApp을 이용해도 구축한 모델파일이 있으면 시간이 크게 소요되지는 않으므로 아직 프로그램을 갈아탈 이유는 없어 보입니다.
  다만 장기적으로 볼때 FakeApp과는 달리 지속적인 업데이트가 이뤄질 가능성이 있고 설치방법이 간단하므로, 처음 모델파일 구축을 위한 시간을 투자한다면 좋은 결과를 얻을 수 있을 거라 생각합니다.

OpenFaceSwap 쿠다 9.0을 기반으로 동작한다.

  프로그램은 업데이트가 이루어짐에 따라 명령창에서 명령을 타이핑하는것이 아닌 GUI창에서 클릭을 통해 편히 사용할 수 있도록 개선되었습니다. 또한 FakeApp에 비해 얼굴의 인식률이 올라갔다고 하네요.
  다행인 점은 Date.180514 기준으로 올라와있는 버전은 Align데이터를 추출할 때 256x256버전을 이용하므로 이전 FakeApp에서 추출하였던 얼굴데이터를 그대로 이용할 수 있습니다.(물론 트레이닝은 다시 해야함.)

설치

우선 OpenFaceSwap 설치 프로그램 다운로드를 받도록 하겠습니다. (링크)


다음으로는 필요한 것들을 설치하겠습니다.
Microsoft Visual Studio Redistributable 2015 (링크)
를 설치해주세요. 이미 설치되어있는 분들은 넘어가시면 됩니다.
  쿠다 9.0(버전에 유의)을 다음 그림을 참고하여 본인의 컴퓨터에
 맞는버전으로 설치하여 줍니다. (링크)

  쿠다 설치는 아래 그림과 같이 사용자 정의 설치 옵션을 통해
 CUDA항목만 설치하면 됩니다. 이후 패치 1, 2를 순서대로 진행해 주세요.

 (혹시 문제가 발생하여 재설치를 진행할 경우 [제어판]-[프로그램 추가/제거]에서
 CUDA9.0과 관련된 것을 모두 삭제해주시고 진행하면 됩니다.

 이 때 재설치를 수행함에 있어 실패한다면 동일하거나 새로운 버전이 있어
 설치가 중단되기 때문입니다. 이런 경우에는 아래 그림에서 체크된 항목중 Visual Studio Intergration 항목을 체크해제하고 진행하시면 됩니다.)

  
  쿠다 설치 후 CuDNN 7.0.5설치를 진행하겠습니다. (링크)
CuDNN을 다운로드 하기위해서는 엔비디아에 가입을 해야합니다.
 아래그림에서 DOWNLOAD CUDNN버튼을 클릭해주세요.

 

버튼을 눌러 진행하시면 아래 창과 같이 계정 생성을 위한 창이 나타납니다.
공란을 채워 계정을 생성한 후 입력하였던 이메일로 들어가 인증확인을 
진행하면 됩니다.


다시 위의 (링크)를 누른 후 Download CuDNN 페이지를 누르시면
계정 생성 후 로그인이 되어있는 상태 이므로 CuDNN을 다운로드
할 수 있는 페이지로 접속합니다.


접속하면 다운로드 페이지로 갈 수 있는데 이 때 CuDNN의 버전을
선택하기 위해서  Archived cuDNN Releases 을 눌러주시면 버전(7.
0.5 for CUDA 9.0)을 선택하여 다운로드 할 수 있도록 나타납니다.


다운로드한 CuDNN파일의 압축을 풀면 폴더 3개와 텍스트 파일이 들어있습니다.
폴더 3개(bin, include, lib)파일을 이전에 설치한 
CUDA 9.0폴더에 붙여넣습니다. 경로는 다음과 같습니다.
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
경로 안에는 폴더 3개와 동일한 이름의 폴더가 있으므로 합쳐주시면 됩니다.

엔비디아의 그래픽 드라이버가 깔려있지 않은 분들은 설치를 진행해주시고요.
미리 다운로드 받아두었던 OpenFaceSwap파일을 통해 설치를 진행합니다.
next랑 ok만 눌러주시면 아래 그림과 같이 설치가 진행이 됩니다.

설치 진행 초반에 멈춘것처럼 보일 수 있는데 처음이 약간 원래 느립니다.


실행을 위한 권장사항으로는 CPU 샌디브릿지 이후 세대입니다.
윈도우 7도 동작 가능하며 명령어를 수동으로
 입력해야 하는 번거로움은 있습니다.

최초로 OpenFaceSwap을 실행할 경우 시간이 소요되며
이는 정상입니다. 이후에 다른 기능들을 최초로 사용할 때에도
대기 시간이 소요될 수 있으며 이는 정상입니다.

다음에는 사용방법을 알아 보겠습니다.
다음 글 링크

Deepfakes(10) - 영상에 소리 넣기, 만든 영상 소리 합치기

  소리를 넣는 것은 ffmpeg를 이용하여 이루어 집니다.
모든 과정을 마치고 소리가 없는 영상을 제작한 단계라고 가정하겠습니다. 

  우선 원본영상에서 소리를 추출해야 합니다. cmd 창을 켜서 다음과  같은명령어를 사용합니다.
  • cd c:\파일저장위치
  위의 명령어를 이용하여 원본영상이 있는 파일위치로 cmd창의 경로를 변경하여 줍니다.
이때 파티션을 바꿔야하는 경우는 cd명령어를 이용하지 않고 그냥 d:\라고 입력하여 드라이브 위치 변경 후 cd명령어를 사용해주시면 됩니다.
  • ffmpeg -i [파일이름_영상].mp4 -f mp3 -ab 192000 -vn [파일이름_소리].mp3
위와 같은 명령어를 실행해줍니다. 이때 파일이름_영상에는 원본파일의 이름을 넣어주시면 됩니다. 파일이름_소리는 생성되는 mp3소리파일의 파일이름이 됩니다.

  이제 만들어낸 영상과 음원이 준비되었으니 합쳐주면 됩니다. 만들어낸 영상파일과 음원파일을 한곳에 둔채로 cmd창의 경로가 그곳에 있도록 해줍니다. 이후
  • ffmpeg -i [만들어낸영상].mp4 -i [소리파일].mp3 -c copy [소리가포함된영상].mp4
와 같이 입력 해주면 완성됩니다. 

  여러 파일을 합쳐주어야 하는 경우 배치파일(bat)을 만들어 이용하면 기다릴 필요없이 여러 명령을 내려줄 수 있습니다. 공백이 포함된 경우""를 이용해야 하며, %의 경우 하나를 쓰면 오류가 나타나는 경우가 있습니다. 이는 %% 이렇게 두개를 입력해주시면 됩니다.

bat파일의 예시는 다음과 같습니다. 생성된 이미지를 바탕으로 영상을 제작하고 음원을 추출한 뒤에 이를 합성하는 것입니다.

cd c:\fakes
ffmpeg -f image2 -framerate 30 -i "[이미지]3 %%04d.jpg" -vcodec libx264 -crf 24 -pix_fmt yuv420p [만든영상].mp4
ffmpeg -i [원본영상].mp4 -f mp3 -ab 192000 -vn [소리파일].mp3
ffmpeg -i [만든영상].mp4 -i [소리파일].mp3 -c copy [소리가포함된영상].mp4

메모장에 다음과 같이 입력해주시고(한줄의 명령어 이후 엔터로 다음줄로 넘기면 됨.) 저장시에 모든 파일 형식으로 변경해주신뒤에 배치파일.bat와 같이 bat파일로 저장해주시면 됩니다.

2018년 3월 18일 일요일

Deepfakes(9) - encoder파일공유/ 연속적인 트레이닝을 통해서 시간을 단축/ 모델 파일을 효율적으로 활용하기.


  정상적으로 트레이닝까지 진행을 한 model 폴더안에는 총 4종류의 파일이 있습니다.
encoder는 프로그램에서 어떤 얼굴인지를 정확하게 인식 혹은 처리할 수 있도록 변경해주는것으로 보입니다.
  따라서 트레이닝이 아예 진행되지 않은 encoder파일이 아닌 이전에 사용한 encoder파일을 이용하여 다른 학습을 진행하더라도 트레이닝이 빠르게 진행됩니다.
 decoder_A, B는 그렇게 처리된 얼굴 이미지를 A,B에 맞는 얼굴로 변환해줍니다. 결론적으로 모델 폴더 전체를 복사하지 않고 일부만 복사하여 사용이 가능하다는 의미입니다.

  단 이전에 개별적으로 A, B/ C, D의 트레이닝을 진행하였을 때 A,C의 트레이닝을 하기 위해 decoder_C를 decoder_B 대신에 붙여넣어도 정상적으로 진행이 되지 않았습니다.??? (A, B로 만들어진 파일을 기반으로 A,C를 트레이닝 후 A,B-B(A,B트레이닝으로 만들어진 B)와 A,C-C를 이용해 B,C 트레이닝이 되는것 같기도??? 아직 이부분은 잘모르겠음.)

  A,B/ A,C의 트레이닝을 진행할 때 A, C의 트레이닝을 A,B의 model 파일을 이용하여 진행했다면 A,B의 트레이닝을 통해 얻은 decoder_A파일과 A, C의 트레이닝을 통해 얻은 decoder_A파일은 서로 호환이 가능합니다. 즉 트레이닝이 이어지므로 A, B/ A, C의 트레이닝이 분리되는 것이 아니고 A의 얼굴 트레이닝은 연속적으로 가능하므로 두번의 트레이닝을 통해 모두 A의 Loss를 줄여나갈 수 있으므로 시간 단축이 가능합니다. 또한 encoder파일도 서로 호환가능합니다.

  예를 들어 이렇게 이용가능합니다. 주로 사용하는 A, B라는 인물의 트레이닝을 동시에 진행하여 model파일을 생성합니다. 이후 축구선수 C의 몸에 A의 얼굴을 붙여넣기 위해 A, B의 model파일을 기반으로 트레이닝을 하여 합성을 완료한 후 A, C의 트레이닝을 통해 발전된 encoder.h5와 decoder_A.h5 파일을 A, B의 model 폴더에 붙여넣어 A 얼굴에 대해 Loss를 감소시킨 model을 얻을 수 있습니다. 다시 B의 얼굴을 사용하여 D의 몸에 붙여넣을 경우 위와 같은 과정을 반복하면 A, B 트레이닝을 직접 진행하지는 않았지만 결과적으로 A, B의 Loss가 줄어든 model 파일을 얻을 수 있습니다.

  이를 통해 이전에 개별적인 2단계 혹은 3단계의 과정을 거칠 필요없이 연속적인 하나의 A, B모델을 얻음으로써 시간을 크게 단축하고 계속해서 Loss를 줄여나갈 수 있습니다.

ps. 최근에 dfake, myfakeapp등이 새로 나온것 같네요. 얼굴 인식률이 좋아지거나 얼굴의 범위를 크게 잡아 좀더 자연스럽게 하려는 방향으로 나아가고 있습니다.

  즉 위에 주황색 부분의 이야기까지 맞다면 encoder.h5은 계속 누적해서 사용하면 됨.
인물별로 각 인물에 해당하는 decoder_땡.h5 파일만 돌려서 사용(Loss를 계속 줄이는 것이 가능)하면 됨. 어차피 본인이 사용하는 Node, Layer값은 동일할 것임으로.

180407 현재 알고있는 바로는 encoder가 호환의 기준이되는 것으로 보임. 동일한 encoder를 계속 사용한다면 모든 decoder끼리도 돌려가며 사용가능해보임. (encoder 파일을 족발집 육수마냥 우리기 가능)

그런 의미에서 encoder파일을 공유합니다.
이를 사용하시면 빈파일을 사용하시는것에 비해 굉장히 빠르게 좋은 결과를 얻으실 수 있을거라 생각합니다. 사용방법은 model폴더를 만드실 때 decoder는 기존 빈파일을 이용하고 encoder와 config 파일만 이파일로 넣으시면 됩니다.
batch size:32
save period:32
Layers:4
Nodes:256

download - (Ver Date.180407)