구글 태그

2023년 11월 8일 수요일

얼굴 이미지로 메타휴먼 생성하기

2D 얼굴 이미지를 3D 메시로 만들어 언리얼 메타휴먼을 생성해보는걸 해봤습니다. 결과가 썩 만족스럽지는 않지만 전체 과정을 한 바퀴 돌았으니 여기까지 한 작업을 간단히 정리하고 퀄리티 업으로 넘어가기로 합니다. 본문에서 한 줄로 짧게 넘어가는 과정이 실제로는 그렇게 간단하진 않습니다. 직접 적용하려면 파이썬, 블렌더, 언리얼에 대해 어느 정도 사전 지식이 필요합니다.

기본적인 아이디어의 얼개는 다음 동영상에서 가져왔습니다.

https://youtu.be/kz13lcOQcig?si=TRlwu_A5ojT7ulKX

먼저 얼굴 이미지를 고릅니다. 일단 가볍게 테스트할 용도로 StableDiffusion이 생성한 이미지를 한 장 가져옵니다.

https://www.ptsearch.info/articles/detail/249ef784-e391-4b6c-8d8c-a36c3f25192b

전형적인 요즘 흔히 보이는 생성 이미지인데 얼굴이 잘 보여서 작업이 잘 될 것 같아 이걸로 골랐습니다.

그 다음에는 이미지를 3D 메시로 변환해야 하는데, 이 작업을 위해 얼굴 이미지에서 5군데의 점(양쪽 눈, 코, 입의 양쪽 끝)을 찾아야 합니다. 저는 다음 라이브러리를 이용했습니다.

https://github.com/ipazc/mtcnn

파이썬을 설치하고 처음에 선택한 이미지에서 이 라이브러리를 돌려주면 5군데의 점이 나옵니다. 점들을 txt 파일로 저장하고 다음 라이브러리를 세팅해서 이미지와 점 배열을 넣고 돌려주면 3D 메시(OBJ 포맷)가 나옵니다.

https://github.com/sicxu/Deep3DFaceRecon_pytorch

메타휴먼으로 넘기기 전에 블렌더에서 UV를 만들어 줍니다. 이 과정은 처음 나온 동영상에 잘 나와있습니다. 매번 동영상을 보기가 번거로워서 블렌더에서의 작업 단계를 정리합니다.

  • 씬을 비우고 OBJ 파일 임포트
  • UV Editing으로 이동해서 빈 UV 이미지 생성
  • 빈 UV 이미지에 이름 지정
  • 메시를 선택하고 UV 메뉴에서 Smart UV Project
  • Shading에서 Color Attribute 입력을 추가하고 Color 속성을 Color로 변경하여 Principled BSDF의 Base Color에 연결
  • Render 속성에서 렌더러를 Cycles로 변경하고 Device를 GPU Compute로 변경
  • Image Texture 추가하고 앞서 생성한 UV 이미지로 지정
  • Target Image를 앞서 생성한 UV 이미지로 지정
  • Bake 메뉴에서 다음과 같이 지정하고 Bake
  • Bake Type을 Diffuse로 지정 
  • Contributions를 Color만 남기고 모두 지움 
  • Bake가 완료되면 Target Image의 Color를 Principled BSDF의 Base Color에 연결하여 결과 확인
  • 작업이 완료된 이미지를 저장
  • 다음과 같이 옵션을 지정하여 FBX로 익스포트
  • Path Mode는 Copy
  • Object Types는 Mesh만 선택 

  • 여기까지 작업해서 만든 메시를 블렌더에서 보니 처음에 선택했던 이미지와 크게 다르지는 않은데 살짝 덜 예뻐진 것 같습니다.

    이제 메시를 메타휴먼으로 넘겨줍니다. 이 과정은 다음 문서에 잘 나와있습니다.

    https://dev.epicgames.com/documentation/en-US/metahuman/mesh-to-metahuman-quick-start-in-unreal-engine

    이 단계를 실제로 해보면 메타휴먼으로 넘기는 과정에서 얼굴 형태에 변형이 생깁니다. 메타휴먼 플러그인이 눈코입 위주로 처리해서 넘기는 방식이라 전체적인 모양이 생각대로 안 나옵니다. 눈이 작아진 것처럼 느껴지는것도 얼굴이 커져서가 아닐까 싶어요. 프로그래머인 저 보다 예술감각이 있는 사람이 메타휴먼 크리에이터에서 세팅을 하면 이것보단 나을 것 같지만 헤어스타일에도 제약이 많아서 비슷한 느낌이 나지 않네요. 전반적으로 얼굴이 평범해집니다.

    생성한 메타휴먼을 언리얼 인게임으로 불러오는건 생략하겠습니다. 메타휴먼 단계에서 이 상태면 인게임에서는 더 안 예쁠 공산이 크므로 귀찮네요.

    일단 된다는데 의의를 두고 좀 더 다듬어봐야겠네요. 얼굴형이 중요한 타입 보다는 눈코입이 뚜렷한 타입의 얼굴이 결과물이 잘 나올 것 같아요.

    2023년 8월 14일 월요일

    크롬에서 마우스 우클릭 검색 결과가 탭에 표시되는 동작 수정하기

    최근 크롬 업데이트로 마우스 우클릭 검색의 결과가 탭 형태로 창 우측(공식 명칭은 측면 패널이라는 것 같습니다)에 표시되도록 변경되었는데, 이거 너무 불편합니다.

    이전처럼 검색결과가 새탭에서 표시되도록 수정하는 방법을 찾아서 기록 목적으로 남겨둡니다.

    1. 주소창에서 크롬 설정으로 들어감
    chrome://flags/
    2. Search flags 검색창에 csc 입력

    3. Disabled로 변경하여 csc 기능을 끔

    csc가 무엇의 약자인지 모르겠는데, 왜 이런 불편한 기능을 기본값으로 변경한건지 이해가 안 가네요.

    2023년 7월 19일 수요일

    Mission: Impossible - Dead Reckoning Part 1 (2023)

    미션 임파서블 데드 레커닝 파트 1을 봤습니다. 며칠 전에 봤지만 강스포를 담아 이제야 소감을 적어보네요.

    이 영화에서 가장 좋았던 점은 관객의 기대를 배신하는 이야기 전개에 있습니다. 특히 예고편을 적극 활용한 게 눈에 띄는데, 예고편에서 이야기에 대한 기대를 특정 방향으로 몰아간 후 정작 본편에서는 모든 부분에서 정반대로 나갔더군요. 여러 종류의 예고편을 골고루 챙겨 보고 기대를 많이 갖고 극장을 찾았던 사람일수록 재미있게 봤을 가능성이 높지 않을까 생각이 들어요. 소위 말하는 예고편 낚시, 혹은 마술에서 말하는 미스디렉션을 적극 활용했다는 느낌이더군요.
    최근 헐리웃 액션 블럭버스터들이 다 그렇지만 영화가 엄청 빠르게 달려요. 군더더기 없이 액션-대화로 스토리 전개-액션-대화로 스토리 전개-액션의 패턴입니다. 꽤 오래된 시리즈라 가능한, 전작의 요소들을 뒤틀거나 재배치한 부분이 많아서 바쁜 액션씬의 와중에도 소소하게 재미있는 장면들이 많았던 점도 좋았어요.
    파트 1이지만 기승전결을 모두 갖추고 있어서 영화가 깔끔하게 끝납니다. 1편의 미션이 성공했고 2편에서 뭘 할지 뚜렷하게 제시했기 때문에 2부작이지만 2편이 나올 때까지 찜찜한 심정으로 기다릴 필요가 없을 것 같습니다.

    잘 안된 점은 일사 파우스트(레베카 페르구손)를 다루는 방식, 배우 연기 같은 것들이에요. 전작에서도 그런 면이 있었지만, 이번 작에서 일사는 확연히 죽음을 향해 나아 가는 것 같은 캐릭터가 됐습니다. 주요 인물들이 모이는 클럽에서의 파티 장면에서 소파에 앉아 있는 일사를 비추는 장면이 있는데 저는 이 장면에서 상당한 위화감을 느꼈어요. 나중에 생각해 보니 연기(혹은 연기 지도)가 나빴다는 생각이 듭니다. 다른 인물들이 각자의 방식으로 긴장감을 표현하는데 혼자 자기 집 거실 소파에 앉아 있듯 편안한 미소를 띠고 있더군요. 얼굴에 미소를 띠더라도 다른 방식으로 긴장감을 표현할 수도 있는데 그런 게 하나도 안 느껴져서 되게 이상한 장면이었습니다. 배우가 장면에서 겉돈다고 할까요. 그 장면을 보면서 이번 편에서 죽으려나 싶었는데 정말 금방 죽더군요. 그 후 베니스에서 일사가 가브리엘(에사이 모랄레스)에게 죽음을 맞게 되는데, 이 장면도 어색했어요. 배경의 공간이나 상황이 연극적이라 다른 장면들과의 이질감이 컸습니다.
    영화가 일사의 하차를 다루는 방식도 아쉬웠는데, 이야기상 그레이스(헤일리 앳웰)에게 마음의 짐을 지워 위험한 임무를 수락하게 하는 장치가 되었기 때문에 흐름은 매끄러웠다고 볼 수 있지만, 죽음 이후 이든(톰 크루즈)이 혼자 슬퍼하는 짧은 장면 하나 넣고 지나가는 게 감정선이 살지 않았어요. 이 점은 전작에서 줄리아(미셸 모나한)의 하차를 워낙 정중한 태도로 다뤄서 더 그런 것 같아요. 아내와 동료는 다른 거라고 할 수도 있겠지만요.

    그 외에 애매했던 것들도 있습니다. 그레이스의 경우 발암캐인 면이 있긴 하지만 구축된 이야기 안에서는 말이 되는 수준이라 크게 거슬리지는 않았습니다. 배우가 몸매로 유명하지만 내용상 몸매가 부각되는 장면은 전혀 없었네요. 예고편에서 주야장천 보여줬던 스턴트는 실제로 보면 애매했어요. 우린 톰 크루즈가 높은 데서 뛰어내리는 걸 한두 번 본 게 아니잖아요. 제작진도 이 스턴트는 하는게 어렵지 봤을 때 그렇게 엄청나지는 않다는 걸 알았는지 이 스턴트가 얼마나 어려운지를 아예 작중 대사로 설명하는 게 필사적으로 느껴져서 귀엽더군요. 그리고 아무리 톰 크루즈라도 절벽에서 뛰어내려 낙하산을 타고 달리는 열차에 내리는걸 원테이크로 찍는건 불가능했을 거라, 아예 장면을 나누고 열차에 뛰어드는 부분을 떼어내서 코미디로 활용한 건 좋은 아이디어였다는 생각이 들었어요.

    전체적으로 재미있게 보긴 했습니다만, 이번 작은 크리스토퍼 맥쿼리가 감독한 3번째 미션 임파서블 영화인데, 본인이 감독한 전작 두 편보다는 좀 못한 감이 있긴 합니다.

    2023년 6월 5일 월요일

    Ghosted (2023)

    아나 데 아르마스, 크리스 에반스 주연의 넷플릭스 영화입니다. 프롤로그 부분은 로맨틱 코미디로 시작했다가 본편은 액션으로 바뀌는 구조를 취하고 있어요. 이 영화의 문제는 초반의 로맨틱 코미디 이후의 전개가 납득이 가지 않는다는 점입니다. 아나 데 아르마스와 크리스 에반스가 한 눈에 반해 연애를 한다는건 그림으로 보나 이야기로 보나 전혀 어색할 게 없지만, 이후 전개에서 크리스 에반스가 맡은 배역의 캐릭터는 누가 봐도 집착이 심하고 별로 좋지 않은 남자입니다. 그리고 이 지나친 집착이라는 잘못을 상쇄하기 위해, 혹은 사랑으로 포장하기 위해 이 영화의 각본가들이 사용한 무리수가 굉장히 거슬리거든요.

    구체적으로, 중간에 이 문제를 두고 두 사람이 정면으로 의견 충돌을 일으키는 대목이 있는데, 이 대화의 결론이 무려 '너도 잘못했잖아'입니다. 이건 전혀 납득이 가지 않는 이야기에요. 어쨌든 대충 둘 다 잘못한 걸로 퉁치고 액션으로 사태를 해결하는데, 액션은 나름 괜찮습니다. 뭔가 주인공들의 감정선이나 동기 같은게 이상하긴 하지만 액션이 괜찮으니 그럭저럭 볼만한 수준으로 마무리가 되는 모양새를 갖추죠. 전체적으로 주인공들의 대화가 보는 이들에게 내면의 동기를 설득하지 못하는 문제가 있다보니 잘생긴 주인공들이 괜찮은 액션을 선보이고 있음에도 어떤 위화감이 듭니다. 이야기의 맥락을 무시하고 액션만으로 즐길 수 있다면 볼만한 영화일지도 모르겠네요.

    2023년 6월 2일 금요일

    Dungeons & Dragons: Honor Among Thieves (2023)

    영화가 재미없지는 않은데 그렇다고 확 재미있지도 않습니다. 등장인물들의 감정선을 보면 처해있는 상황에 이입해 있다기 보다는 한발자국 물러나 메타적인 농담을 하는 인상을 주기도 하고요. 기승전결이 뚜렷한 이야기 전개 끝에 깔끔한 마무리를 보여주기 때문에 다 보고 나면 속편이나 세계관에 대한 기대감이 차오르는 대신 그냥 가볍게 즐기고 끝났다는 느낌을 받게 되는데, 이 정도의 즐거움을 주는 유희꺼리는 다른데서도 얼마든지 찾을 수 있거든요. 거슬리는 곳 없이 매끈하게 잘 만든 영화이긴 한데 기억에 남지도 않습니다.

    2023년 5월 30일 화요일

    John Wick 4 (2023)

    액션 연출은 전작보다 나아졌는데, 주연 배우가 나이가 든다는게 느껴집니다. 전반적으로 액션 동작이 힘에 부친다는 인상을 줘요. 설정과 이야기를 단순화시키고 액션 연출을 개선하는 등 3편의 문제점이 대부분 좋은 방향으로 수정되었습니다. 하지만 전체적으로 영화가 길어요. 전작들도 그랬듯 후반부에 좋은 연출이나 장면들이 몰려있어서 영화가 끝날때는 만족스러운 감상을 갖게 되지만 중반부에는 비슷한 방식의 액션이 계속 이어져서 다소 지루해지는 부분이 있습니다. 이번 편도 1편 만큼의 울림을 주지는 못했다는 면에서 아쉽기는 하지만 존 윅과의 여정이 끝나는걸 보지 않고 지나칠 수는 없지 않나 싶어요.

    2023년 3월 29일 수요일

    젤다의 전설 왕국의 눈물 트레일러를 보고 든 잡상

    이전에 야숨에 대한 포스트에서도 언급했지만, 개인적으로 야숨은 잘 만든 게임이지만 오픈월드 장르에 어떤 혁신을 가져왔다고는 생각하지 않습니다. 야숨에서 새롭게 도입했던 요소들 중에 현시점에서 평가했을때 가장 혁신적이라고 할만한 요소는 물리 기반의 퍼즐 및 전투 시스템인데, 이걸 기술적으로 가능하게 하기 위해 야숨 제작진은 월드의 개체 밀도를 크게 낮췄죠. 실사 기반인 서구권 오픈월드 게임에서는 월드의 밀도를 물리 시뮬레이션이 돌아갈 정도로 낮출 수는 없었기 때문에 이건 알면서도 따라할 수 없는 요소였고, 결국 야숨이 오픈월드 장르에 혁신을 가져오기 보다는 고립된 하나의 시도로 끝나는 결과를 가져왔다고 생각합니다.

    왕국의 눈물 트레일러를 보니 이번 작은 전작보다도 더 고립된 게임이 될 것으로 보입니다. 결국 야숨의 엔진을 그대로 사용해서 장비와 아이템을 조합하는 기능을 추가했다고 보이는데, 이건 기존 오픈월드 게임의 무기 업그레이드에 물리 시뮬레이션을 결합한 아이디어입니다. 분명히 재미는 있겠지만 근본적인 혁신은 아니라고 보여요. 또 야숨류가 대세가 될 수 없었던 동일한 기술적 한계를 그대로 갖고 있기 때문에 이번에도 고립된 하나의 시도로만 남을 것으로 보입니다.

    2023년 2월 16일 목요일

    AMD GPU에서 Stable Diffusion 설정하기

    지난번 글에서 Stable Diffusion 설치에 대한 링크를 모아뒀는데, 해당 내용은 연산을 위해 엔비디아 CUDA를 이용하도록 구성된 것이므로 AMD GPU를 사용하는 PC에서는 동작하지 않습니다. 집에서 사용하는 PC가 5600X/RX6600인 라라랜드 조합이라 Stable Diffusion 설치 과정에서 번거로웠던 내용을 약간 정리합니다.

    가장 쉬운 방법은 AMD에 최적화된 배포본인 nod-ai의 SHARK를 쓰는 것인데, 이쪽은 아직 확장 프로그램이 따라오는게 늦은 상태입니다. 그냥 편하게 AMD GPU에서 이미지 생성만 해보고 싶으면 SHARK를 쓰고, 확장을 해보고 싶으면 다음 내용을 참고해서 고난의 여정;;에 참여하면 됩니다.

    AMD GPU 환경에서 Stable Diffusion을 이용하려면 CUDA를 대체하는 MS의 기술인 DirectML을 사용해야 합니다. DirectML을 사용하면 CUDA보다 느리다고 알려져있긴 한데, 아예 안 되는 것보다는 나은 상황이므로 AMD GPU를 쓰는 죄(;;)로 느릴 뿐 아니라 설치가 번거롭기까지 하지만 DirectML 기반으로 환경을 구축해 보겠습니다.

    큰 흐름은 이전 글에 링크된 CUDA 버전을 다루는 문서와 일치하지만 세부적으로 약간 차이가 있습니다.
    https://skyksit.com/useful/install-stable-diffusion-for-windows/

    DirectML 버전의 설치 방법은 다음 문서에 나와 있습니다.
    https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs

    - 필수 설치
    1. Python 설치
    2. Git 설치
    CUDA 설치(불필요)
    3. stable-diffusion-webui 다운로드(DirectML 대응)
    4. repositories의 구성요소 다운로드(DirectML 대응)
    5. stable-diffusion Model 파일 다운로드
    6. stable-diffusion-webui 실행(AMD GPU에만 옵션 추가)
    - 옵션
    7. waifu-diffusion 파일 다운로드
    8. GFPGAN 파일 다운로드

    1. Python 설치
    명령 프롬프트를 열고
    winget install python

    2. Git 설치
    winget install git

    3. stable-diffusion-webui 다운로드(DirectML 대응)
    명령프롬프트에서 설치할 경로로 이동한 후
    git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml.git

    여기서부터 이전 글에 링크한 문서와 차이가 생기는데, CUDA에 대응하는 원본은 https://github.com/AUTOMATIC1111/stable-diffusion-webui에 있지만, 우리는 DirectML에 대응하도록 수정한 버전을 설치해야 합니다. https://github.com/lshqqytiger/stable-diffusion-webui-directml

    4. repositories의 구성요소 다운로드(DirectML 대응)
    명령 프롬프트에서 stable-diffusion-webui-directml/repositories 경로로 이동한 후
    git clone https://github.com/lshqqytiger/k-diffusion-directml k-diffusion
    git clone https://github.com/lshqqytiger/stablediffusion-directml stable-diffusion-stability-ai

    5. stable-diffusion Model 파일 다운로드

    다음 주소로 이동하여 무료 회원 가입 후 Model을 골라 설치해 봅니다.
    https://huggingface.co/models

    다운받을 수 있는 모델 포맷은 .ckpt나 .safetensors 파일인데, .safetensors 파일이 모델 변경 시 속도가 더 빠르다고 알려져 있습니다. 체감적으로는 별 차이를 모르겠네요. 다운 받은 후 models/Stable-diffusion 폴더에 넣어줍니다.

    6. stable-diffusion-webui 실행(AMD GPU에만 옵션 추가)

    webui-user.bat를 열고 다음과 같이 수정합니다.
    set COMMANDLINE_ARGS=--opt-sub-quad-attention --lowvram --no-half-vae

    저 옵션들은 제 PC에서 몇차례 실행하면서 RX6600에서 필요하다고 확인한 것들인데, 각자의 환경에 따라 더하거나 빠질 수 있습니다. 이제 webui-user.bat를 실행하고 기다리면 오류가 없을 경우 명령 프롬프트에 접속할 수 있는 웹주소가 나타납니다.

    2023년 2월 15일 수요일

    Stable Diffusion 관련 링크 정리

    요즘 개인적으로 갖고 놀고 있는 머신러닝 기반의 이미지 생성 도구인 Stable Diffusion을 깔아서 사용하는 방법에 대하여 간략히 링크를 정리합니다.

    1. 로컬 PC에 Stable Diffusion을 설치해 봅니다.

    2. 여기에 학습이 된 상태인 Model을 넣어줘야 다양한 화풍의 이미지를 생성할 수 있습니다. Model을 설치해 봅니다. (무료 가입이 필요함)

    3. 이렇게 해서 프롬프트에 키워드 몇 개를 넣어 처음으로 이미지를 생성해보면 품질이나 디테일이 매우 떨어짐을 느낄 수 있습니다. 프롬프트를 잘 넣어줘야 이미지 품질을 올릴 수 있는데, 남들이 어떤 프롬프트를 사용하는지 확인해서 필요한걸 가져다 쓰며 품질을 올려봅니다.

    https://www.ptsearch.info/home/
    https://lexica.art/
    https://prompthero.com/

    2023년 1월 30일 월요일

    Horizon Forbidden West (PS5)

    전작인 호라이즌 제로 던의 리뷰에서 언급했듯이, 개인적으로 그 후속작인 호라이즌 포비든 웨스트에 스토리 면으로는 큰 기대가 없었습니다. 일단 전작의 엔딩에서 남긴 떡밥이 흥미롭지 않았던게 컸고, 전작에서 사건이 워낙 깔끔하게 일단락 지어졌기 때문에 후속작이 새롭게 탐구할만한 여지가 별로 없어 보였죠. 그런 면에서 보자면 이번 작인 호라이즌 포비든 웨스트도 전작과 마찬가지 측면에서 의외의 장점을 갖습니다. 플레이 전에 기대했던 것보다 스토리가 엄청 좋아요. 스포일러를 피해 이야기하자면, 작은 이야기에서 가지를 쳐서 예상치 못한 큰 이야기로 자연스럽게 넘어갈 수 있는 전개가 감탄스러워요. 주인공의 성장 서사라는 면에서도 더 다룰게 별로 없어 보였던 것에 비해 확실히 진전된 면을 보이고요. 전작의 스토리로부터 출발해야 하는 제약을 갖는 후속작의 한계를 감안하면 최고로 잘 나온 속편 시나리오라고 생각합니다.



    그래픽 면에서도 PS5로 나온 AAA 게임 중에 최고가 아닐까 싶어요. 4K 화면 전체에 디테일이 꽉 차 있습니다. 전작과 마찬가지로 이펙트가 아쉬운 부분이 아주 간혹 눈에 띠기는 하지만 그 외에는 흠잡을 데가 없어 보입니다. 모든 면에서 전작으로부터 업그레이드 된 느낌을 받을 수 있어요.



    다른 오픈월드 게임에도 흔히 있는 단조로운 미니게임 요소들이 거의 비슷하게 들어간 부분들이 있는데, 저는 그냥 플레이 안 하고 스킵했습니다. 이런 유사 컨텐츠는 단점이라면 단점일 수도 있는 부분이긴 한데, 이런 것들을 스킵해도 게임 진행에 지장이 없게 만들어 둔 배려가 같이 들어가 있어서 큰 단점은 아니지 않았나 싶어요.



    트로피 달성률은 84%에서 마무리했는데 남은 요소들은 그다지 플레이하고 싶은 생각이 안 들어서 플래티넘은 노리지 않으려고 해요. 그래도 게임 자체는 정말 잘 나왔다고 말하고 싶네요.