DL-C および部分 DL-D デモ • AI 社会
このオープン ソースは DL-B で、ChatGLM、Wav2lip、so-vits-svc に基づくデジタル画像ソリューションです。コードベースは 2023 年 3 月中旬に書かれたもので、それ以来最適化も更新もされていません。
私は現在このプロジェクトに参加しており、6月下旬からは地方大会の段階に入ります。プロジェクトチームは現在、DL-Cの最適化と改善、DL-Dのテストと開発を進めています。 DL-C および DL-D に関するコードと詳細はコンテストが終了するまで公開されません。コードと詳細なフレームワークはコンテスト後にコンパイルおよび更新されます。許すのを忘れていました。
現在のコードは硬すぎます。私は金融を専攻する学部 2 年生です (C+V は変です)。
コンペ終了後、プロジェクトはAI 協会に引き継がれ、将来的にはフルプロセスの遅延パッケージを備えた使いやすいフレームワークが作成される予定です。
DL-B 制作に使用されるプラットフォームは参考としてここに提供されています (補足として、より低い実行可能な構成を提案することは歓迎されます)
グラフィックスカード | CPU | メモリ | ハードディスク |
---|---|---|---|
RTX306012G | インテル i5-12400F | 16ギガバイト | 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-tuningによるChatGLMの微調整については清華大学関係者が詳しく説明した。 Github には、より優れた微調整サンプル ライブラリがあり、微調整の例として Zhen Huan が使用されています。このライブラリには、 P チューニング微調整用のコードが含まれていますが、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.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 の内容に変更は加えられていません。 ここで必要なもの 注記。このライブラリにはデータ処理や事前準備のためのツールは含まれていません。
完了する必要がpre_trained_model
モデル ファイルが.moduleSo-VITS
かありますhubert
これは古い方法であり、最新のフレームワークで多くの最適化が行われています。このバージョンはオリジナルの Wav2Lip に基づいており、ユーザーはさまざまな事前トレーニング モデルの重みを選択できます。ここのモデルはダウンロードが必要で、 .modulewav2lip
フォルダーに配置されます。
モデル | 説明する | リンク |
---|---|---|
Wav2Lip | 高精度のリップシンク | リンク |
Wav2Lip+GAN | リップシンクはわずかに悪くなりますが、視覚的な品質は向上しています | リンク |
専門的な識別者 | リンク | |
視覚品質識別子 | リンク |
このライブラリは、携帯電話、コンピュータ、またはカメラを使用して記録できるビデオを収集する必要があることに注意してください。推奨される形式は.mp4
で、解像度は720p
または480p
です。通常は 5 ~ 10 秒です。複数のビデオをキャプチャできます。ビデオ ファイルをsource
フォルダーに保存します。
Wan2lip の最適化については、ステーション B の多くの偉人がすでに行っているので、詳細は説明しません (怠惰)。これがビデオです。
上記の内容に加えて、推論プロセス中に使用する必要があるモデル s3fd.pth をダウンロードし、それを.face_detectiondetectionsfd
フォルダーに配置する必要があることに注意してください。
このライブラリにはモデルが含まれていません。 !直接引っ張っては使用できません。 !モデルをトレーニングする必要がある
ソース コードの次の場所を変更する必要があります。
すべての微調整されたモデルをmodule
内の対応するフォルダーに配置します。 P チューニングトレーニング後にoutput
されたすべてのファイルを、対応するローカルoutput
にコピーしてください。 So-VITS/44k
So-VITS トレーニング モデルを保存するために使用されます。 wav2lip+GAN モデルはwav2lip
フォルダーの下に保存されます。
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/"
変更を加えます。ここで呼び出されるビデオは、独自のビデオ選択プランを作成できます。
当然のことですが、VScode または他のソフトウェアでmain_demo.py
直接実行するだけです。皆さんも楽しんでください。
このリポジトリのコードは、GNU GPLv3 契約に基づくオープン ソースです。各モデルの重みの使用は、そのオープンソース契約に従う必要があります。