Démonstration DL-C et partielle DL-D • AI Society
Cette open source est DL-B, qui est une solution d'image numérique basée sur ChatGLM, Wav2lip et so-vits-svc. La base de code a été écrite à la mi-mars 2023 et n’a pas été optimisée ni mise à jour depuis.
Je participe actuellement à ce projet. Le concours entrera dans la phase de concours provincial à la fin du mois de juin. L'équipe du projet progresse actuellement vers l'optimisation et l'amélioration ultérieures de DL-C ainsi que les tests et le développement de DL-D. Aucun code ni détail sur DL-C et DL-D ne sera publié avant la fin du concours. Le code et le cadre détaillé seront compilés et mis à jour après la fin du concours. J'ai oublié de pardonner.
Le code actuel est trop rigide. Je suis un étudiant de deuxième année spécialisé en finance. Je n'ai aucune compétence esthétique ou technique en rédaction de code (C+V bizarre).
Après le concours, le projet sera repris par l'AI Society et un cadre convivial sera produit à l'avenir, avec un package paresseux complet.
La plateforme utilisée pour la production DL-B est fournie ici à titre de référence (vous êtes invités à proposer des configurations exécutables inférieures en complément)
carte graphique | Processeur | Mémoire | disque dur |
---|---|---|---|
RTX3060 12G | Intel i5-12400F | 16 GB | 30G |
L'environnement de test est basé sur Python 3.9.13 64 bits
Utilisez pip pour installer les dépendances : pip install -r requirements.txt
A noter qu'il faut quand même télécharger un package d'environnement Python 3.8 pour exécuter So-VITS (cliquez sur le package d'environnement), mais ne vous inquiétez pas, je l'ai déjà configuré pour vous, il vous suffit de le télécharger et de le décompresser dans le dossier DL-B et conservez le chemin du fichier
DL-B
├───python3.8
├───Lib
├───libs
├───···
└───Tools
De plus, vous devez également installer ffmpeg. Si vous ne souhaitez pas l'installer manuellement, vous pouvez également essayer d'utiliser le package paresseux que nous fournissons.
ChatGLM dispose de nombreuses méthodes de réglage fin, et les utilisateurs peuvent choisir la méthode de réglage fin appropriée en fonction de leur situation réelle. Les responsables de l'Université Tsinghua ont donné une explication détaillée du réglage fin de ChatGLM par P-tuning. Il existe une meilleure bibliothèque d'exemples de réglage fin sur Github, qui utilise Zhen Huan comme exemple de réglage fin. Cette bibliothèque contient le code pour le réglage fin du P- tuning, mais n'inclut pas le modèle pré-entraîné de ChatGLM.
Le programme téléchargera automatiquement l'implémentation du modèle et les paramètres transformers
. La mise en œuvre complète du modèle peut être trouvée dans Hugging Face Hub. Si votre environnement réseau est médiocre, le téléchargement des paramètres du modèle peut prendre beaucoup de temps, voire échouer. À ce stade, vous pouvez d'abord télécharger le modèle sur le local, puis le charger depuis le local.
Pour télécharger le modèle depuis Hugging Face Hub, vous devez d'abord installer Git LFS, puis exécuter
git clone https://huggingface.co/THUDM/chatglm-6b
Si vous tardez à télécharger le point de contrôle depuis Hugging Face Hub, vous ne pouvez télécharger que l'implémentation du modèle.
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b
Ensuite, téléchargez manuellement le fichier de paramètres du modèle à partir d'ici et remplacez le fichier téléchargé dans le répertoire local module/chatglm-6b
.
La mise en œuvre du modèle facultatif est toujours en évolution. Si vous souhaitez corriger l'implémentation du modèle utilisé pour garantir la compatibilité, vous pouvez exécuter
git checkout v0.1.0
Utilisez votre propre ensemble de données
Voici une bibliothèque utile pour collecter des corpus personnels
Modifiez train_file
, validation_file
et test_file
dans train.sh
et evaluate.sh
vers votre propre chemin d'ensemble de données au format JSON, et remplacez prompt_column
et response_column
par la CLÉ correspondant au texte d'entrée et au texte de sortie dans le fichier JSON. Vous devrez peut-être également augmenter max_source_length
et max_target_length
pour correspondre aux longueurs maximales d'entrée et de sortie dans votre propre ensemble de données.
Ensemble de données de conversation
Si vous devez utiliser des données de conversation à plusieurs tours pour affiner le modèle, vous pouvez fournir l'historique des discussions. Par exemple, voici les données d'entraînement d'une conversation à trois tours :
{ "prompt" : "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "response" : "用电脑能读数据流吗?水温多少" , "history" : []}
{ "prompt" : " 95 " , "response" : "上下水管温差怎么样啊?空气是不是都排干净了呢? " , "history" : [[ "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "用电脑能读数据流吗?水温多少" ]]}
{ "prompt" : "是的。上下水管都好的" , "response" : "那就要检查线路了,一般风扇继电器是由电脑控制吸合的,如果电路存在断路,或者电脑坏了的话会出现继电器不吸合的情况! " , "history" : [[ "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "用电脑能读数据流吗?水温多少" ], [ " 95 " , "上下水管温差怎么样啊?空气是不是都排干净了呢? " ]]}
Pendant la formation, vous devez spécifier --history_column
comme clé de l'historique des discussions dans les données ( history
dans cet exemple), et l'historique des discussions sera automatiquement fusionné. Veuillez noter que le contenu dépassant la longueur d'entrée max_source_length
sera tronqué.
Vous pouvez vous référer aux instructions suivantes :
bash train_chat.sh
Bien sûr, vous pouvez également mélanger le corpus de dialogues à plusieurs tours et de dialogues à un seul tour. Ajoutez simplement le mode de dialogue suivant directement par-dessus ce qui précède.
{ "prompt" : "老刘,你知道那个作业要怎么从电脑上保存到手机上吗? " , "response" : "我也不知道啊" , "history" :[]}
So-VITS est déjà un modèle très populaire et mature, et il existe de nombreuses vidéos pédagogiques sur la station B, je n'entrerai donc pas dans les détails ici. Voici des tutoriels que je pense être de très haute qualité et essence. Cette bibliothèque contient le code pour la formation de base et la formation en cluster de So-VITS, mais elle n'est pas très conviviale et aucune modification n'a été apportée au contenu dans DL-B après son achèvement en mars. Ce qui est nécessaire ici Remarque. que cette bibliothèque ne comprend pas d'outils de traitement des données et de préparation préliminaire.
Certains fichiers de modèle doivent être complétés, checkpoint_best_legacy_500.pt, placés sous hubert
, et deux modèles pré-entraînés correspondants G_0.pth et D_0.pth placés sous les dossiers .moduleSo-VITS
et pre_trained_model
.
Il s'agit d'une méthode plus ancienne et de nombreuses optimisations ont été effectuées dans le dernier framework. Cette version est basée sur le Wav2Lip d'origine, et les utilisateurs peuvent choisir différents poids de modèle de pré-entraînement. Le modèle ici est un téléchargement obligatoire et est placé dans le dossier .modulewav2lip
.
Modèle | décrire | Lien |
---|---|---|
Wav2Lip | Synchronisation labiale de haute précision | Lien |
Wav2Lip+GAN | La synchronisation labiale est légèrement moins bonne, mais la qualité visuelle est meilleure | Lien |
Discriminateur expert | Lien | |
Discriminateur de qualité visuelle | Lien |
Il convient de noter que cette bibliothèque doit collecter certaines vidéos, qui peuvent être enregistrées à l'aide de téléphones mobiles, d'ordinateurs ou d'appareils photo. Elle est utilisée pour collecter des informations faciales. Le format recommandé est .mp4
et la résolution est 720p
ou 480p
. est généralement de 5 à 10 secondes. Plusieurs vidéos peuvent être capturées. Stockez les fichiers vidéo dans le dossier source
.
Concernant l'optimisation de Wan2lip, beaucoup de gros gars de la station B l'ont déjà fait, donc je n'entrerai pas dans les détails (paresseux). Voici une vidéo.
Notez qu'en plus du contenu ci-dessus, vous devez également télécharger un modèle s3fd.pth qui doit être utilisé pendant le processus d'inférence et le placer dans le dossier .face_detectiondetectionsfd
.
Cette bibliothèque ne contient aucun modèle ! ! Il ne peut pas être utilisé après avoir été tiré directement ! ! Il est nécessaire de former le modèle
Le code source doit être modifié aux endroits suivants :
Placez tous les modèles affinés dans les dossiers correspondants module
. Veuillez copier tous les fichiers générés vers output
après la formation P-Tuning vers la output
locale correspondante. So-VITS/44k
est utilisé pour stocker les modèles de formation So-VITS. Le modèle wav2lip+GAN est stocké dans le dossier wav2lip
.
À la ligne 32 de main_demo.py
remplacez CHECKPOINT_PATH
par le modèle après un réglage personnel
prefix_state_dict = torch . load ( os . path . join ( CHECKPOINT_PATH , "pytorch_model.bin" ))
Notez que vous devrez peut-être remplacer pre_seq_len
par la valeur réelle pendant votre entraînement. Si vous chargez le modèle localement, vous devez remplacer THUDM/chatglm-6b
par le chemin du modèle local (notez qu'il ne s'agit pas du chemin du point de contrôle).
La méthode d'écriture par défaut dans le code source consiste à charger un nouveau Checkpoint (contenant uniquement le paramètre PrefixEncoder)
Si vous devez charger l'ancien point de contrôle (y compris les paramètres ChatGLM-6B et PrefixEncoder) ou effectuer un réglage complet des paramètres, chargez directement l'intégralité du point de contrôle :
model = AutoModel . from_pretrained ( CHECKPOINT_PATH , trust_remote_code = True )
Ajoutez le chemin du modèle et le nom du haut-parleur à So-VITS_run.py
(en fonction de vos paramètres de formation)
parser . add_argument ( '-m' , '--model_path' , type = str , default = "" , help = '模型路径' )
parser . add_argument ( '-s' , '--spk_list' , type = str , nargs = '+' , default = [ '' ], help = '合成目标说话人名称' )
Besoin de télécharger wav2lip_run.py
:
#VIDEO
face_dir = "./source/"
Apportez des modifications. La vidéo appelée ici est la vidéo précédemment enregistrée. Vous pouvez rédiger votre propre plan de sélection vidéo.
Pas de surprise, exécutez simplement main_demo.py
directement dans VScode ou un autre logiciel. Amusez-vous tous.
Le code de ce référentiel est open source sous l'accord GNU GPLv3. L'utilisation des poids de chaque modèle doit suivre son accord open source.