나의 반려묘 사진을 AI로 학습하여 '이미지 생성 모델'을 생성하기
사랑하는 존재를 떠나보낸다는 것은 누구에게나 큰 상실감과 가슴이 저려오는 슬픔을 안긴다.
특히 그 대상이 다시는 볼 수 없는 영원의 길로 떠났다면 더욱 그럴 것이다.
불과 며칠 전 일이었다.
10년 넘게 가족의 일원이던 반려묘 '에릭'(별칭으로 '에릭 고')이 미쳐 마음의 준비는커녕 상상도 할 수 없었던 이별을 고하였다.
10년 전 무심코 차에 치인 길냥이를 발견하여 동물보호소에 맡기던 날, 당시 4살로 추정되던 유기묘인 '에릭'을 처음 만났었다.
덩치에 비해 좁디좁은 철장 케이지에 갇혀 손이 삐죽 나와있는 채로 나를 보자마자 제발 자신을 봐 달라며 손을 허우적대며 울부짖던 모습이 지금도 눈에 선하다.
유기묘가 일정 기간 입양이 안되면 결국 안락사를 한다며, 내일이 '에릭'이 차례라는 직원의 이야기를 듣고는 주저 없이 입양을 결정하였다.
입양 후 정밀 건강검진을 해보니, 선천성 심장병이라 치료도 꾸준히 해야 하고 비용도 부담이 될 거라며 완치가 안 되는 심장병이라 관리를 잘해도 아마 1~2년 정도밖에는 못 살 거라는 수의사의 말에 '에릭'이 유기묘가 된 이유가 짐작이 되었다.
그렇게 매일 '에릭'의 약과 건강기능 식품들을 챙기고 치료와 관리를 꾸준히 한 덕분에 '에릭'은 생을 다하는 마지막 하루를 제외하고는 10년간 펄펄 날아다닐 정도로 건강했다.
그동안 '에릭'이 우리 가족에게 준 기쁨과 행복은 이루 헤아릴 수 없이 감사할 따름이다.
'에릭'을 입양하여 처음 우리 집에 온 날.
감사의 표시인지, 유튜브로만 보던 "꾹꾹이"를 '에릭'이 내게 30분이나 해주던 그날의 신기한 경험은 늘 잊히지 않고 내게 커다란 추억이다.
그런 '에릭'이 심장이 더 버틸 수 없는 노화까지 맞자 그나마 다행인지 하루 동안 아프고 이별을 준비할 겨를도 없이 우리 곁을 떠났다.
10년을 함께한 가족이기에 정중히 예를 갖춰 장례를 치러주었지만, 다시 볼 수 없을 거란 생각에 가족들 모두 큰 슬픔을 표하며 상실감에 충격이 컸다.
슬픔에 빠진 가족들과 나를 위해 '에릭'을 추억하고 우리 곁에 늘 함께 한다는 사실적인 감정을 만들고 싶다는 생각에, '에릭'이 영원히 우리 가족과 함께할 수 있는 방법을 찾자는 생각에 'AI'를 활용하기로 했다.
우선 그 첫 단계로, '에릭'을 찍은 사진을 이용하기로 하였다.
첫 단계로서 나의 목표는, 가족 누구나 에릭이 보고 싶을 때 '사진과 영상'으로 에릭을 만나보게 하려는 것이다.
즉, 생전의 '에릭'을 찍은 사진을 우선 AI에게 학습을 시킨다.
이후 '에릭'이 보고 싶을 때 텍스트나 음성으로 AI에게 입력을 한다. "하와이 해변가에서 선글라스와 꽃 장식을 한 고양이('에릭'의 생전 모습 그대로)가 '아빠 사랑해'라고 쓰인 글자를 보여주며 행복한 표정을 하고 있는 모습을 보여줘."라는 식이다.
그러면 잠시뒤 '에릭'의 생전 모습 그대로 내가 원하는 내용대로 이미지 또는 영상을 AI가 생성하여 내게 보이는 것이다.
이를 위해 몇 가지 절차와 준비(개발), 전략을 구성하였다.
참고로 필자는 AI 전문 개발 역량과 NVIDIA H100 GPU를 다수 보유하고 있었기에 충분히 가능한 도전이자 실험이었다.
1. 우선 '에릭'을 찍은 사진 약 45장을 선별했다.
2. 학습 퀄리티 증가를 위해 자동화된 전처리 과정을 개발하여 이를 반영하였다.
이는 "객체"를 더 선명하고 분명하게 그리고 AI에게 지도 학습 효율을 높이고자 함이다.
그중 하나가 '원본 사진'(배경이 포함되어 있다.)에서 '객체'(고양이)만 자동 분리하여 스케일업 등 전처리를 하는 것이다.
<원본 사진에서 지정한 객체만 분리하는 AI 모델>
3. 전처리 작업이 끝난 45장의 사진들을 LoRA 방식으로 학습을 진행하였다.
학습은 디폴트 설정을 기준으로 하였고, A100 GPU 기준으로 약 2시간 정도 소요되었다.
<학습할 사진들을 업로드하고 학습을 위한 설정값 입력>
4. 학습이 진행되었고, 학습이 끝난 후 '허깅페이스'에 '에릭'을 위한 전용 '모델'이 등록되었다.
<자동 학습 툴을 이용하여 자동으로 모델 등록이 완료>
5. 이제 학습된 모델을 FLUX 모델과 연결하여 촤상의 퀄리티로 이미지를 생성할 준비를 하였다.
기본 FLUX 모델에 한글 프롬프트 입력이 가능하게 코딩하였고, 이제 학습된 결과를 확인할 수 있었다.
<'에릭' 모델을 클릭하고, 원하는 프롬프트(한글)를 입력>
놀라울 정도로 생전의 모습과 똑같았다.
아뿔싸! 생성 결과를 확인한 가족들의 눈물보가 다시 터져버렸다.
진정이 되고 나서, 이 결과에 가족 모두 감탄하며 너무 신기해하고 좋아하는 것을 보며 뿌듯하였다.
그리고 이러한 과정을 기록으로 공개함으로써 남겨 누군가에게 도움이 되기를 바란다.
혹여 자신의 반려묘나 반려견을 이렇게 만들고 싶다면 언제든 메시지 보내면 도움을 드리고자 한다.
'에릭 고'야.
이제 편히 쉬렴.