{DD} Usefull stuff&scripts I use to make Loras
세부 정보
파일 다운로드
모델 설명
안녕하세요, 친구들!
그리드 LoRA를 어떻게 훈련시켜야 하는지에 대한 질문이 많이 들어와서, 제 작업 흐름에 대한 간단한 가이드를 만들어보려 합니다. 먼저 말씀드릴 건, @Bartuba와 함께 여러분들이 LoRA(실제로는 그리드 외의 어떤 LoRA든 포함)를 만들고자 하는 분들께 엄청난 도움이 될 앱을 개발 중이라는 점입니다. MVP를 공개하고 더 큰 튜토리얼을 준비할 수 있는 시점이 되면 바로 여기 링크를 게시할게요. 그 시점까지 기다려주세요.
개요
그리드 LoRA를 훈련시키려면 다음 작업을 해야 합니다:
- 개념에 대해 일관성 있고 충분한 다양성을 갖춘 데이터셋 수집;
- 데이터셋의 이미지 준비;
- 데이터셋 태깅;
- 모델 훈련;
- 결과 확인 후 필요시 전체 과정 반복.
데이터 수집
우선 여러분의 개념을 대표하는 영상 클립들을 모아야 합니다. 제가 권장하는 것은 최소 1280x720 해상도의 고품질 클립을 찾는 것입니다. danbooru에서 가져온 GIF는 괜찮습니다. 대부분 고품질이지만, 위험은 있습니다. 왜냐하면 GIF는 대부분 색상이 적기 때문이에요. 이건 훈련에 좋지 않습니다.
어떻게 하면 될까요?
그리드 LoRA를 만든다고 가정하면, 여러 클립이 필요합니다. 실제로는 그 클립들에서 프레임을 추출해야 하죠. 방법은 다양합니다. 다음은 몇 가지 예입니다:
클립을 한 프레임씩 정지시켜서 직접 원하는 프레임을 고릅니다. 예를 들어 KMPlayer를 사용하면 됩니다. 다음 프레임을 보려면 "F"를, 저장하려면 "Ctrl + A"를 누르면 됩니다. 길고 지루한 작업이지만, 이미지 품질과 다양성이 확보된다는 보장이 되죠.
클립 전체를 프레임으로 분할한 뒤 마음에 드는 프레임만 고릅니다. 예를 들어 이 사이트에서 가능합니다. GIF나 WEBM 파일을 여기에 넣고 프레임으로 나누고, 모두 ZIP으로 내려받을 수 있어요.
또는 ffmpeg를 다운로드하세요 (윈도우 설치 가이드는 여기 참조). 모든 클립을 같은 폴더에 모은 뒤, "Windows + R"을 눌러 "cmd"를 입력하고, 명령 프롬프트에서 자신의 폴더 경로로
cd {폴더 경로}를 입력한 후 아래 스크립트를 실행하세요:
for %i in (*.webm) do ffmpeg -ss 0.5 -i "%i" -fps_mode vfr -frame_pts true -vframes 9 "%iout-%02d.png"
여기서 이해해야 할 설명은 다음과 같습니다:
(*.webm)은 파일 확장자;-ss 0.5는 스크립트가 프레임을 추출할 시점(초 단위);-vframes 9는 각 클립에서 추출할 프레임 수.
대부분의 경우 준수한 결과를 얻을 수 있습니다.
*앞으로 UI가 그 부분을 도와줄 예정입니다.
어떤 프레임을 가져와야 할까요?
이게 첫 번째 어려운 부분입니다. 예를 들어 웃는 얼굴을 가진 그리드 LoRA를 만들고 싶다고 해봅시다. 아래 사항들을 꼭 확인하세요:
데이터셋에 들어갈 프레임은 작습니다. 객체나 개념이 명확하게 보이나요? 최소 30% 이상의 프레임을 차지하나요?
클립들 사이에 시각적으로 일관성이 있나요? 예를 들어 웃는 얼굴이 거의 같은 각도에서 찍혔나요? 너무 다양하면 훈련에 혼란이 생길 수 있습니다.
웃는 행동의 동적인 변화가 프레임 간 차이로 분명히 드러나나요? 만약 다양한 변화가 너무 적다면, 4개 또는 9개의 동일한 이미지가 나올 수 있습니다.
정사각형으로 자르더라도 개념의 중심적인 디테일을 놓치지 않나요?
이미지의 중요한 부분에 로고가 있지는 않나요?
위 질문들 중 하나에 '아니오'라고 답했다면, 그 클립을 다시 생각해 보세요. 일부는 포토샵으로 수정할 수 있지만 시간이 오래 걸립니다.
데이터 준비
이제 원시 이미지로 구성된 데이터셋이 준비되었습니다. 다음 작업을 해야 합니다:
- 잘못된 부분(예: 로고 등) 제거;
- 순서 정렬;
- 정사각형으로 자르기;
- 512x512(또는 256x256)로 리사이징;
- 그리드로 합치기;
- 그리드 리사이징.
정리 및 자르기
저는 포토샵을 사용합니다. 지루한 작업이지만 별다른 설명은 없습니다 ㅎㅎ.
하나의 팁만 드리자면, 한 클립의 프레임을 한 번에 모아서 함께 자르세요. 그 후 "레이어를 파일로 내보내기" 기능을 활용하면 시간을 절약할 수 있어요.
모든 그리드에서 프레임 순서는 동일하게 유지해야 합니다. 예를 들어 "웃는 얼굴"이라면 모든 클립에서 프레임마다 점점 더 넓어져야 해요. 반대라면 순서를 뒤집어야 하죠. 그렇지 않으면 결과가 어질러질 수 있어요.
*수동 작업을 회피하고 싶다면, 과적합을 유도하는 방법이 있습니다. 과적합은 결과가 데이터셋의 한 이미지에만 의존하게 만들지만, 이는 결국 결과 품질을 저하할 수 있어요.
*앞으로 UI가 그 부분을 도와줄 예정입니다.
리사이징
모든 이들이 알고 있지만, Birme는 아주 좋은 도구입니다.
합치기
여기서도 방법이 다양합니다. 몇 가지 추천해 드릴게요:
포토샵을 이용해 수동으로 합치기. 2x2 프레임은 1024x1024, 3x3 프레임은 1536x1536의 비어있는 캔버스를 만들고 이미지를 하나씩 배치하세요. 그런 다음 한 클립의 프레임 레이어를 합쳐서 별도의 파일로 내보내세요.
또는 첨부 파일의 @Bartuba가 만든 파이썬 스크립트 사용:
- 모든 준비된 프레임이 있는 폴더로 이동 (이름은 문자로 구성되고, 해상도는 512x512여야 함);
- cmd 실행;
python 0sq.py png 3x3입력 (0sq는 스크립트 이름, png는 이미지 확장자, 3x3는 그리드 유형).
2x2 그리드는 512x512로, 3x3 그리드는 768x768로 리사이징하세요.
이거까지 완료하면 됩니다, 친구들 :)
이 가이드를 통해 제가 쓰는 도구들을 공유하고, 그리드 모델을 훈련시키고자 하는 분들께 조금이라도 도움이 되었으면 합니다. 다음 단계는 아직 결정되지 않았기 때문에, 지금 상태로 유지하겠습니다. UI가 완성되면 다시 돌아올게요.
좋은 하루 되세요 :)
태깅
준비 중입니다
훈련
준비 중입니다
결과 확인 및 분석
준비 중입니다
아무 질문도 자유롭게 이 댓글이나 내 디스코드 채널에서 남겨주세요.
또한 저는 AI 예술로 게임도 제작하고 있습니다. 향후에는 무료로 제공될 예정이지만, 개발 과정에 참여하거나 조기 액세스를 원하신다면 패트론으로 지원해 주세요.
또한 제 '젖은 머리' LoRA가 여기서 금지되었는데, 이유는 모르겠네요. 친구들은 제 패트론에서 다운로드해 무료로 마지막 버전을 받아보실 수 있어요.


