DL-C 및 부분 DL-D 시연 • AI Society
이번 오픈소스는 ChatGLM, Wav2lip, so-vits-svc를 기반으로 한 디지털 이미지 솔루션인 DL-B입니다. 코드 베이스는 2023년 3월 중순에 작성되었으며 그 이후로 최적화되거나 업데이트되지 않았습니다.
저는 현재 이 프로젝트에 참여하고 있습니다. 대회는 6월 말에 지방 대회 단계에 들어갈 예정입니다. 프로젝트 팀은 현재 DL-C의 후속 최적화 및 개선과 DL-D의 테스트 및 개발을 진행하고 있습니다. DL-C 및 DL-D에 대한 코드 및 세부 정보는 대회가 종료되기 전에 공개되지 않습니다. 코드 및 세부 프레임워크는 대회가 끝난 후 컴파일 및 업데이트됩니다. 용서하는 것을 잊었습니다.
현재 코드가 너무 엄격합니다. 저는 금융을 전공하는 학부 2학년생입니다. 코드 작성에 미적, 기술적 능력이 없습니다(C+V 이상합니다).
대회가 끝난 후 해당 프로젝트는 AI 학회 가 인수하게 되며, 향후 전체 프로세스 게으른 패키지를 갖춘 사용자 친화적인 프레임워크가 제작될 예정입니다.
DL-B 제작에 사용되는 플랫폼은 여기에 참조용으로 제공됩니다. (보충 사항으로 더 낮은 실행 가능 구성을 제안해도 좋습니다.)
그래픽 카드 | CPU | 메모리 | 하드디스크 |
---|---|---|---|
RTX 3060 12G | 인텔 i5-12400F | 16GB | 30G |
테스트 환경은 Python 3.9.13 64비트를 기반으로 합니다.
pip를 사용하여 종속성 설치: pip install -r requirements.txt
So-VITS를 실행하려면 Python 3.8 환경 패키지를 다운로드해야 하지만(환경 패키지 클릭) 걱정하지 마십시오. 이미 구성해 두었으므로 다운로드하고 압축을 풀기만 하면 됩니다. DL-B 폴더에 저장하고 파일 경로를 유지하세요.
DL-B
├───python3.8
├───Lib
├───libs
├───···
└───Tools
또한 ffmpeg도 설치해야 합니다. 수동으로 설치하고 싶지 않다면 우리가 제공하는 지연 패키지를 사용해 볼 수도 있습니다.
ChatGLM에는 다양한 미세 조정 방법이 있으며 사용자는 실제 상황에 따라 적절한 미세 조정 방법을 선택할 수 있습니다. 칭화대학교 관계자가 P-튜닝을 통한 ChatGLM 미세조정에 대해 자세히 설명했습니다. Github에는 미세 조정의 예로 Zhen Huan을 사용하는 더 나은 미세 조정 예제 라이브러리가 있습니다. 이 라이브러리에는 P-tuning 미세 조정을 위한 코드가 포함되어 있지만 사전 훈련된 ChatGLM 모델은 포함되어 있지 않습니다.
프로그램은 transformers
에서 모델 구현 및 매개변수를 자동으로 다운로드합니다. 전체 모델 구현은 Hugging Face Hub에서 찾을 수 있습니다. 네트워크 환경이 열악한 경우 모델 매개변수 다운로드에 오랜 시간이 걸리거나 실패할 수도 있습니다. 이때 먼저 모델을 로컬로 다운로드한 후 로컬에서 로드할 수 있습니다.
Hugging Face Hub에서 모델을 다운로드하려면 먼저 Git LFS를 설치한 후 실행해야 합니다.
git clone https://huggingface.co/THUDM/chatglm-6b
Hugging Face Hub에서 체크포인트 다운로드 속도가 느린 경우 모델 구현만 다운로드할 수 있습니다.
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b
그런 다음 여기에서 모델 매개변수 파일을 수동으로 다운로드하고 다운로드한 파일을 로컬 module/chatglm-6b
디렉터리로 바꿉니다.
Optional 모델의 구현은 여전히 유동적입니다. 호환성을 보장하는 데 사용되는 모델 구현을 수정하려면 다음을 실행할 수 있습니다.
git checkout v0.1.0
자체 데이터 세트 사용
개인 말뭉치 수집에 유용한 라이브러리는 다음과 같습니다.
train.sh
및 evaluate.sh
의 train_file
, validation_file
, test_file
자신의 JSON 형식 데이터 세트 경로로 수정하고, prompt_column
및 response_column
JSON 파일의 입력 텍스트 및 출력 텍스트에 해당하는 KEY로 변경합니다. 또한 자체 데이터 세트의 최대 입력 및 출력 길이와 일치하도록 max_source_length
및 max_target_length
늘려야 할 수도 있습니다.
대화 데이터세트
모델을 미세 조정하기 위해 다단계 대화 데이터를 사용해야 하는 경우 채팅 기록을 제공할 수 있습니다. 예를 들어 다음은 3단계 대화의 학습 데이터입니다.
{ "prompt" : "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "response" : "用电脑能读数据流吗?水温多少" , "history" : []}
{ "prompt" : " 95 " , "response" : "上下水管温差怎么样啊?空气是不是都排干净了呢? " , "history" : [[ "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "用电脑能读数据流吗?水温多少" ]]}
{ "prompt" : "是的。上下水管都好的" , "response" : "那就要检查线路了,一般风扇继电器是由电脑控制吸合的,如果电路存在断路,或者电脑坏了的话会出现继电器不吸合的情况! " , "history" : [[ "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "用电脑能读数据流吗?水温多少" ], [ " 95 " , "上下水管温差怎么样啊?空气是不是都排干净了呢? " ]]}
학습 중에 --history_column
데이터의 채팅 기록 키(이 예에서는 history
)로 지정해야 하며 채팅 기록이 자동으로 연결됩니다. 입력 길이 max_source_length
초과하는 콘텐츠는 잘립니다.
다음 지침을 참조할 수 있습니다.
bash train_chat.sh
물론, 다중 라운드 대화와 단일 라운드 대화의 코퍼스를 함께 혼합할 수도 있습니다. 위의 대화 모드 바로 위에 다음 대화 모드를 추가하면 됩니다.
{ "prompt" : "老刘,你知道那个作业要怎么从电脑上保存到手机上吗? " , "response" : "我也不知道啊" , "history" :[]}
So-VITS는 이미 매우 인기 있고 성숙한 모델이고, 스테이션 B에는 많은 교육 영상이 있으므로 여기서는 자세히 설명하지 않겠습니다. 다음은 품질과 본질이 매우 높다고 생각되는 튜토리얼입니다. 이 라이브러리에는 So-VITS의 기본 훈련 및 클러스터링 훈련을 위한 코드가 포함되어 있지만 사용자 친화적이지 않으며 3월에 완료된 이후 DL-B의 내용에 변경 사항이 없습니다. 이 라이브러리에는 데이터 처리 및 예비 준비를 위한 도구가 포함되어 있지 않습니다.
완료해야 하는 몇 가지 모델 파일인 checkpoint_best_legacy_500.pt가 hubert
아래에 있고 두 개의 일치하는 사전 훈련된 모델 G_0.pth 및 D_0.pth가 .moduleSo-VITS
및 pre_trained_model
폴더 아래에 있습니다.
이는 오래된 방법이며 최신 프레임워크에서 많은 최적화가 수행되었습니다. 이 버전은 원래 Wav2Lip을 기반으로 하며 사용자는 다양한 사전 훈련 모델 가중치를 선택할 수 있습니다. 여기의 모델은 필수 다운로드이며 .modulewav2lip
폴더에 있습니다.
모델 | 설명하다 | 링크 |
---|---|---|
Wav2Lip | 고정밀 립싱크 | 링크 |
Wav2Lip+GAN | 립싱크는 좀 아쉽지만 시각적 퀄리티는 더 좋아요 | 링크 |
전문가 판별자 | 링크 | |
시각적 품질 판별자 | 링크 |
이 라이브러리는 휴대폰, 컴퓨터 또는 카메라를 사용하여 녹화할 수 있는 일부 비디오를 수집해야 하며 얼굴 정보를 수집하는 데 사용됩니다. 권장 형식은 .mp4
이고 해상도는 720p
또는 480p
입니다. 일반적으로 5~10초입니다. 여러 개의 동영상을 캡처할 수 있습니다. 비디오 파일을 source
폴더에 저장하십시오.
Wan2lip의 최적화에 대해서는 이미 B 스테이션의 많은 빅맨들이 완료했기 때문에 자세한 내용은 다루지 않겠습니다(게으름).
위의 콘텐츠 외에도 추론 프로세스 중에 사용해야 하는 모델 s3fd.pth도 다운로드하여 .face_detectiondetectionsfd
폴더에 배치해야 합니다.
이 라이브러리에는 모델이 포함되어 있지 않습니다! ! 직접 당긴 후에는 사용할 수 없습니다! ! 모델을 훈련시키는 것이 필요하다
소스 코드는 다음 위치에서 변경되어야 합니다.
미세 조정된 모든 모델을 module
의 해당 폴더에 배치합니다. P-tuning 학습 후 output
되는 모든 파일을 해당 로컬 output
에 복사하십시오. So-VITS/44k
는 So-VITS 훈련 모델을 저장하는 데 사용됩니다. wav2lip+GAN 모델은 wav2lip
폴더에 저장됩니다.
main_demo.py
32번째 줄에서 개인 미세 조정 후 CHECKPOINT_PATH
모델로 변경합니다.
prefix_state_dict = torch . load ( os . path . join ( CHECKPOINT_PATH , "pytorch_model.bin" ))
훈련 중에 pre_seq_len
실제 값으로 변경해야 할 수도 있습니다. 모델을 로컬로 로드하는 경우 THUDM/chatglm-6b
로컬 모델 경로로 변경해야 합니다(체크포인트 경로가 아님).
소스 코드의 기본 작성 방법은 새 체크포인트(PrefixEncoder 매개변수만 포함)를 로드하는 것입니다.
이전 체크포인트(ChatGLM-6B 및 PrefixEncoder 매개변수 포함)를 로드해야 하거나 전체 매개변수 미세 조정을 수행해야 하는 경우 전체 체크포인트를 직접 로드하세요.
model = AutoModel . from_pretrained ( CHECKPOINT_PATH , trust_remote_code = True )
So-VITS_run.py
에 모델 경로와 화자 이름을 추가합니다(훈련 설정에 따라 다름).
parser . add_argument ( '-m' , '--model_path' , type = str , default = "" , help = '模型路径' )
parser . add_argument ( '-s' , '--spk_list' , type = str , nargs = '+' , default = [ '' ], help = '合成目标说话人名称' )
wav2lip_run.py
다운로드해야 합니다.
#VIDEO
face_dir = "./source/"
변경하세요. 여기서 호출되는 영상은 이전에 녹화된 영상입니다. 영상 선택 계획을 직접 작성할 수 있습니다.
당연히 VScode나 다른 소프트웨어에서 main_demo.py
직접 실행하세요. 모두들 즐거운 시간 보내세요.
이 저장소의 코드는 GNU GPLv3 계약에 따른 오픈 소스입니다. 각 모델의 가중치 사용은 오픈 소스 계약을 따라야 합니다.