Демонстрация DL-C и частичной DL-D • AI Society
Это открытый исходный код DL-B, который представляет собой решение для цифровых изображений, основанное на ChatGLM, Wav2lip и so-vits-svc. База кода была написана в середине марта 2023 года и с тех пор не оптимизировалась и не обновлялась.
В настоящее время я участвую в этом проекте. Конкурс перейдет на провинциальную стадию конкурса в конце июня. В настоящее время команда проекта занимается последующей оптимизацией и улучшением DL-C, а также тестированием и разработкой DL-D. Никакие коды и подробности о DL-C и DL-D не будут опубликованы до конца конкурса. Код и подробная структура будут скомпилированы и обновлены после конкурса. Забыл простить.
Текущий кодекс слишком жесткий. Я студент второго курса бакалавриата по специальности «финансы». У меня нет эстетических или технических навыков в написании кода (странно с C+V). Пожалуйста, не критикуйте меня.
После конкурса проект перейдет в управление AI Society , и в будущем будет создан удобный для пользователя фреймворк с полным пакетом ленивых процессов.
Платформа, используемая для производства DL-B, представлена здесь в качестве справки (в качестве дополнения вы можете предложить менее работоспособные конфигурации).
видеокарта | Процессор | Память | жесткий диск |
---|---|---|---|
РТХ 3060 12G | Интел i5-12400F | 16 Гб | 30Г |
Тестовая среда основана на 64-разрядной версии Python 3.9.13.
Используйте pip для установки зависимостей: pip install -r requirements.txt
Следует отметить, что вам все равно необходимо загрузить пакет среды Python 3.8 для запуска So-VITS (нажмите на пакет среды), но не волнуйтесь, я уже настроил его для вас, вам нужно только скачать и разархивировать его. в папке DL-B и сохраните путь к файлу
DL-B
├───python3.8
├───Lib
├───libs
├───···
└───Tools
Кроме того, вам также необходимо установить ffmpeg. Если вы не хотите устанавливать его вручную, вы также можете попробовать использовать предоставляемый нами пакет lazy.
ChatGLM имеет множество методов тонкой настройки, и пользователи могут выбрать подходящий метод тонкой настройки в соответствии с их реальной ситуацией. Представители Университета Цинхуа подробно объяснили тонкость настройки ChatGLM с помощью P-настройки. На Github есть лучшая библиотека примеров тонкой настройки, в которой в качестве примера тонкой настройки используется Чжэнь Хуан. Эта библиотека содержит код для тонкой настройки 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
.
Реализация опциональной модели все еще находится в стадии разработки. Если вы хотите исправить реализацию модели, используемую для обеспечения совместимости, вы можете выполнить
git checkout v0.1.0
Используйте свой собственный набор данных
Вот полезная библиотека для сбора личного корпуса
Измените train_file
, validation_file
и test_file
в train.sh
и evaluate.sh
на свой собственный путь к набору данных формата JSON, а также измените prompt_column
и response_column
на KEY, соответствующий входному тексту и выходному тексту в файле JSON. Вам также может потребоваться увеличить max_source_length
и max_target_length
, чтобы они соответствовали максимальной длине ввода и вывода в вашем собственном наборе данных.
Набор данных разговора
Если вам нужно использовать данные многоходового разговора для точной настройки модели, вы можете предоставить историю чата. Например, ниже приведены данные обучения трехходового разговора:
{ "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, но она не очень удобна для пользователя, и после ее завершения в марте в содержимое DL-B не вносилось никаких изменений. Что здесь необходимо Примечание. что в эту библиотеку не входят инструменты для обработки и предварительной подготовки данных.
Необходимо заполнить несколько файлов моделей: checkpoint_best_legacy_500.pt, помещенных в hubert
, и две соответствующие предварительно обученные модели G_0.pth и D_0.pth, помещенные в папки .moduleSo-VITS
и pre_trained_model
.
Это старый метод, и в последней версии было выполнено множество оптимизаций. Эта версия основана на исходном Wav2Lip, и пользователи могут выбирать различные веса модели перед обучением. Данная модель является обязательной для скачивания и находится в папке .modulewav2lip
.
Модель | описывать | Связь |
---|---|---|
Wav2Lip | Высокоточная синхронизация губ | Связь |
Wav2Lip+ГАН | Синхронизация губ немного хуже, но качество изображения лучше. | Связь |
Экспертный дискриминатор | Связь | |
Дискриминатор визуального качества | Связь |
Следует отметить, что эта библиотека должна собирать некоторые видео, которые можно записать с помощью мобильных телефонов, компьютеров или камер. Рекомендуемый формат — .mp4
, разрешение — 720p
или 480p
. обычно составляет 5–10 с. Можно записать несколько видеороликов. Сохраните видеофайлы в source
папке.
По поводу оптимизации Wan2lip, многие большие ребята на станции B это уже сделали, поэтому не буду вдаваться в подробности (ленивый. Вот видео).
Обратите внимание, что помимо вышеуказанного содержимого вам также необходимо загрузить модель s3fd.pth, которую необходимо использовать в процессе вывода, и поместить ее в папку .face_detectiondetectionsfd
.
Эта библиотека не содержит моделей! ! Его нельзя использовать после того, как его вытащили напрямую! ! Необходимо обучить модель
Исходный код необходимо изменить в следующих местах:
Все доработанные модели поместите в соответствующие папки module
. Пожалуйста, скопируйте все файлы, выводимые на output
после тренировки P-настройки , на соответствующий локальный output
. So-VITS/44k
используется для хранения обучающих моделей So-VITS. Модель wav2lip+GAN хранится в папке wav2lip
.
В строке 32 файла main_demo.py
измените 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/"
Внесите изменения Видео, названное здесь, является ранее записанным видео. Вы можете написать свой собственный план выбора видео.
Неудивительно, просто запустите main_demo.py
непосредственно в VScode или другом программном обеспечении. Всем веселья.
Код этого репозитория имеет открытый исходный код в соответствии с соглашением GNU GPLv3. Использование веса каждой модели должно соответствовать соглашению об открытом исходном коде.