عرض DL-C وDL-D الجزئي • مجتمع الذكاء الاصطناعي
هذا المصدر المفتوح هو DL-B، وهو عبارة عن حل للصور الرقمية يعتمد على ChatGLM وWav2lip وso-vits-svc. تمت كتابة قاعدة التعليمات البرمجية في منتصف مارس 2023 ولم يتم تحسينها أو تحديثها منذ ذلك الحين.
أنا أتنافس حاليًا في هذا المشروع. وستدخل المنافسة مرحلة المنافسة الإقليمية في أواخر يونيو. ويتقدم فريق المشروع حاليًا نحو تحسين DL-C وتحسينه واختبار DL-D. لن يتم إصدار أي رموز وتفاصيل حول DL-C وDL-D حتى نهاية المسابقة. سيتم تجميع الكود والإطار التفصيلي وتحديثهما بعد المنافسة. نسيت أن تسامح.
الكود الحالي صارم للغاية. أنا طالب جامعي في السنة الثانية متخصص في التمويل، وليس لدي أي مهارات جمالية أو تقنية في كتابة الأكواد (C+V غريب).
بعد المنافسة، ستتولى جمعية الذكاء الاصطناعي المشروع وسيتم إنتاج إطار عمل سهل الاستخدام في المستقبل، مع حزمة كسولة كاملة العملية.
يتم توفير النظام الأساسي المستخدم لإنتاج DL-B هنا كمرجع (نرحب باقتراح تكوينات أقل قابلة للتشغيل كملحق)
بطاقة الرسومات | وحدة المعالجة المركزية | ذاكرة | القرص الصلب |
---|---|---|---|
آر تي إكس 3060 12 جيجا | إنتل i5-12400F | 16 جيجابايت | 30 جرام |
تعتمد بيئة الاختبار على Python 3.9.13 64 بت
استخدم النقطة لتثبيت التبعيات: pip install -r requirements.txt
تجدر الإشارة إلى أنك لا تزال بحاجة إلى تنزيل حزمة بيئة Python 3.8 لتشغيل So-VITS (انقر فوق حزمة البيئة)، لكن لا تقلق، لقد قمت بتكوينها لك بالفعل، ما عليك سوى تنزيلها وفك ضغطها في مجلد DL-B واحتفظ بمسار الملف
DL-B
├───python3.8
├───Lib
├───libs
├───···
└───Tools
بالإضافة إلى ذلك، تحتاج أيضًا إلى تثبيت ffmpeg. إذا كنت لا ترغب في تثبيته يدويًا، فيمكنك أيضًا تجربة استخدام الحزمة البطيئة التي نقدمها.
لدى ChatGLM العديد من طرق الضبط الدقيق، ويمكن للمستخدمين اختيار طريقة الضبط الدقيق المناسبة وفقًا لحالتهم الفعلية. قدم مسؤولو جامعة تسينغهوا شرحًا تفصيليًا للضبط الدقيق لـ ChatGLM بواسطة P-tuning. توجد مكتبة أمثلة أفضل للضبط الدقيق على Github، والتي تستخدم Zhen Huan كمثال للضبط الدقيق. تحتوي هذه المكتبة على كود P-tuning Fine-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+GAN | مزامنة الشفاه أسوأ قليلاً، لكن الجودة البصرية أفضل | وصلة |
التمييز الخبير | وصلة | |
تمييز الجودة البصرية | وصلة |
تجدر الإشارة إلى أن هذه المكتبة تحتاج إلى جمع بعض مقاطع الفيديو، والتي يمكن تسجيلها باستخدام الهواتف المحمولة أو أجهزة الكمبيوتر أو الكاميرات، ويتم استخدامها لجمع معلومات الوجه. التنسيق الموصى به هو .mp4
والدقة هي 720p
أو 480p
عادة ما تكون من 5 إلى 10 ثوانٍ ويمكن التقاط مقاطع فيديو متعددة. قم بتخزين ملفات الفيديو في المجلد source
.
فيما يتعلق بتحسين Wan2lip، فقد قام العديد من اللاعبين الكبار في المحطة B بذلك بالفعل، لذلك لن أخوض في التفاصيل (كسول، إليك مقطع فيديو).
لاحظ أنه بالإضافة إلى المحتوى أعلاه، تحتاج أيضًا إلى تنزيل نموذج s3fd.pth الذي يجب استخدامه أثناء عملية الاستدلال ووضعه في المجلد .face_detectiondetectionsfd
هذه المكتبة لا تحتوي على أية نماذج! ! لا يمكن استخدامه بعد سحبه مباشرة! ! من الضروري تدريب النموذج
يجب تغيير كود المصدر في الأماكن التالية:
ضع جميع النماذج التي تم ضبطها بدقة في المجلدات المقابلة في module
. يرجى نسخ جميع الملفات الناتجة إلى output
بعد تدريب P-tuning على 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. يجب أن يتبع استخدام الوزن لكل نموذج اتفاقية المصدر المفتوح الخاصة به.