Demonstrasi DL-C & sebagian DL-D • Masyarakat AI
Open source ini adalah DL-B yang merupakan solusi gambar digital berbasis ChatGLM, Wav2lip, dan so-vits-svc. Basis kode ditulis pada pertengahan Maret 2023 dan belum dioptimalkan atau diperbarui sejak saat itu.
Saya sedang berkompetisi dalam proyek ini. Kompetisi akan memasuki tahap kompetisi provinsi pada akhir Juni. Tim proyek saat ini sedang melanjutkan ke optimalisasi dan peningkatan DL-C selanjutnya serta pengujian dan pengembangan DL-D. Tidak ada kode dan detail tentang DL-C dan DL-D yang akan dirilis hingga akhir kompetisi. Kode dan kerangka detail akan dikompilasi dan diperbarui setelah kompetisi. Lupa memaafkan.
Kode saat ini terlalu kaku. Saya seorang mahasiswa tahun kedua jurusan keuangan. Saya tidak memiliki keterampilan estetika atau teknis dalam penulisan kode (C+V aneh).
Setelah kompetisi, proyek ini akan diambil alih oleh AI Society dan kerangka kerja yang ramah pengguna akan diproduksi di masa depan, dengan paket malas proses penuh.
Platform yang digunakan untuk produksi DL-B disediakan di sini sebagai referensi (Anda dipersilakan untuk mengusulkan konfigurasi runnable yang lebih rendah sebagai pelengkap)
kartu grafis | CPU | Ingatan | harddisk |
---|---|---|---|
RTX 3060 12G | Intel i5-12400F | 16 GB | 30G |
Lingkungan pengujian didasarkan pada Python 3.9.13 64-bit
Gunakan pip untuk menginstal dependensi: pip install -r requirements.txt
Perlu dicatat bahwa Anda masih perlu mengunduh paket lingkungan Python 3.8 untuk menjalankan So-VITS (klik pada paket lingkungan), tapi jangan khawatir, saya sudah mengkonfigurasinya untuk Anda, Anda hanya perlu mengunduh dan mengekstraknya di folder DL-B dan simpan jalur file
DL-B
├───python3.8
├───Lib
├───libs
├───···
└───Tools
Selain itu, Anda juga perlu menginstal ffmpeg. Jika tidak ingin menginstalnya secara manual, Anda juga bisa mencoba menggunakan paket malas yang kami sediakan.
ChatGLM memiliki banyak metode penyesuaian, dan pengguna dapat memilih metode penyesuaian yang sesuai dengan situasi sebenarnya. Pejabat Universitas Tsinghua memberikan penjelasan rinci tentang penyempurnaan ChatGLM dengan P-tuning. Ada perpustakaan contoh penyesuaian yang lebih baik di Github, yang menggunakan Zhen Huan sebagai contoh penyesuaian. Pustaka ini berisi kode untuk penyempurnaan P-tuning , tetapi tidak menyertakan model ChatGLM yang telah dilatih sebelumnya.
Program ini secara otomatis akan mengunduh implementasi model dan parameter dari transformers
. Implementasi model selengkapnya dapat ditemukan di Hugging Face Hub. Jika lingkungan jaringan Anda buruk, pengunduhan parameter model mungkin memerlukan waktu lama atau bahkan gagal. Saat ini, Anda dapat mengunduh model ke lokal terlebih dahulu, lalu memuatnya dari lokal.
Untuk mengunduh model dari Hugging Face Hub, Anda perlu menginstal Git LFS terlebih dahulu lalu menjalankannya
git clone https://huggingface.co/THUDM/chatglm-6b
Jika Anda lambat mengunduh pos pemeriksaan dari Hugging Face Hub, Anda hanya dapat mengunduh implementasi modelnya.
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b
Kemudian unduh file parameter model secara manual dari sini dan ganti file yang diunduh ke direktori module/chatglm-6b
.
Penerapan model Opsional masih terus berubah. Jika Anda ingin memperbaiki implementasi model yang digunakan untuk memastikan kompatibilitas, Anda dapat menjalankannya
git checkout v0.1.0
Gunakan kumpulan data Anda sendiri
Berikut adalah perpustakaan yang berguna untuk mengumpulkan korpus pribadi
Ubah train_file
, validation_file
dan test_file
di train.sh
dan evaluate.sh
ke jalur kumpulan data format JSON Anda sendiri, dan ubah prompt_column
dan response_column
ke KEY yang sesuai dengan teks masukan dan teks keluaran dalam file JSON. Anda mungkin juga perlu menambah max_source_length
dan max_target_length
agar sesuai dengan panjang input dan output maksimum dalam kumpulan data Anda sendiri.
Kumpulan data percakapan
Jika Anda perlu menggunakan data percakapan multi-putaran untuk menyempurnakan model, Anda dapat memberikan riwayat obrolan. Misalnya, berikut ini adalah data pelatihan percakapan tiga putaran:
{ "prompt" : "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "response" : "用电脑能读数据流吗?水温多少" , "history" : []}
{ "prompt" : " 95 " , "response" : "上下水管温差怎么样啊?空气是不是都排干净了呢? " , "history" : [[ "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "用电脑能读数据流吗?水温多少" ]]}
{ "prompt" : "是的。上下水管都好的" , "response" : "那就要检查线路了,一般风扇继电器是由电脑控制吸合的,如果电路存在断路,或者电脑坏了的话会出现继电器不吸合的情况! " , "history" : [[ "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线" , "用电脑能读数据流吗?水温多少" ], [ " 95 " , "上下水管温差怎么样啊?空气是不是都排干净了呢? " ]]}
Selama pelatihan, Anda perlu menentukan --history_column
sebagai kunci riwayat obrolan dalam data ( history
dalam contoh ini), dan riwayat obrolan akan digabungkan secara otomatis. Harap dicatat bahwa konten yang melebihi panjang input max_source_length
akan terpotong.
Anda dapat merujuk pada petunjuk berikut:
bash train_chat.sh
Tentu saja, Anda juga dapat menggabungkan kumpulan dialog multi-putaran dan dialog satu putaran menjadi satu. Cukup tambahkan mode dialog berikut langsung di atas yang di atas.
{ "prompt" : "老刘,你知道那个作业要怎么从电脑上保存到手机上吗? " , "response" : "我也不知道啊" , "history" :[]}
So-VITS sudah menjadi model yang sangat populer dan matang, dan ada banyak video pengajaran di stasiun B, jadi saya tidak akan membahas detailnya di sini. Berikut adalah tutorial yang menurut saya sangat berkualitas dan intinya. Pustaka ini berisi kode untuk pelatihan dasar dan pelatihan pengelompokan So-VITS, tetapi tidak terlalu ramah pengguna, dan tidak ada perubahan yang dilakukan pada konten di DL-B setelah selesai pada bulan Maret. Apa yang diperlukan di sini Catatan bahwa perpustakaan ini tidak menyertakan alat untuk pengolahan data dan persiapan awal.
Ada beberapa file model yang perlu diselesaikan, checkpoint_best_legacy_500.pt, ditempatkan di bawah hubert
, dan dua model terlatih yang cocok G_0.pth dan D_0.pth ditempatkan di bawah folder .moduleSo-VITS
dan pre_trained_model
.
Ini adalah metode lama, dan banyak optimasi telah dilakukan dalam kerangka terbaru. Versi ini didasarkan pada Wav2Lip asli, dan pengguna dapat memilih bobot model pra-pelatihan yang berbeda. Model di sini adalah unduhan wajib dan ditempatkan di folder .modulewav2lip
.
Model | menggambarkan | Link |
---|---|---|
Wav2Bibir | Sinkronisasi bibir presisi tinggi | Link |
Wav2Bibir+GAN | Sinkronisasi bibir sedikit lebih buruk, tetapi kualitas visualnya lebih baik | Link |
Diskriminator Ahli | Link | |
Diskriminator Kualitas Visual | Link |
Perlu dicatat bahwa perpustakaan ini perlu mengumpulkan beberapa video, yang dapat direkam menggunakan ponsel, komputer, atau kamera. Format ini digunakan untuk mengumpulkan informasi wajah. Format yang disarankan adalah .mp4
dan resolusinya adalah 720p
atau 480p
biasanya 5-10 detik. Beberapa video dapat diambil. Simpan file video di folder source
.
Soal optimasi Wan2lip, sudah banyak orang besar di stasiun B yang melakukannya, jadi saya tidak akan menjelaskan secara detail (malas).
Perhatikan bahwa selain konten di atas, Anda juga perlu mengunduh model s3fd.pth yang perlu digunakan selama proses inferensi dan menempatkannya di folder .face_detectiondetectionsfd
Perpustakaan ini tidak berisi model apa pun! ! Tidak dapat digunakan setelah ditarik langsung! ! Hal ini diperlukan untuk melatih model
Kode sumber perlu diubah di tempat-tempat berikut:
Tempatkan semua model yang telah disempurnakan ke dalam folder yang sesuai di module
. Silakan salin semua file keluaran ke output
setelah pelatihan penyetelan P ke output
lokal yang sesuai. So-VITS/44k
digunakan untuk menyimpan model pelatihan So-VITS. Model wav2lip+GAN disimpan di bawah folder wav2lip
.
Pada baris 32 main_demo.py
ubah CHECKPOINT_PATH
ke model setelah penyesuaian pribadi
prefix_state_dict = torch . load ( os . path . join ( CHECKPOINT_PATH , "pytorch_model.bin" ))
Perhatikan bahwa Anda mungkin perlu mengubah pre_seq_len
ke nilai sebenarnya selama pelatihan Anda. Jika Anda memuat model secara lokal, Anda perlu mengubah THUDM/chatglm-6b
ke jalur model lokal (perhatikan bahwa ini bukan jalur pos pemeriksaan).
Metode penulisan default pada kode sumber adalah memuat Checkpoint baru (hanya berisi parameter PrefixEncoder)
Jika Anda perlu memuat Checkpoint lama (termasuk parameter ChatGLM-6B dan PrefixEncoder), atau melakukan penyesuaian parameter penuh, muat seluruh Checkpoint secara langsung:
model = AutoModel . from_pretrained ( CHECKPOINT_PATH , trust_remote_code = True )
Tambahkan jalur model dan nama speaker ke So-VITS_run.py
(tergantung pada pengaturan pelatihan Anda)
parser . add_argument ( '-m' , '--model_path' , type = str , default = "" , help = '模型路径' )
parser . add_argument ( '-s' , '--spk_list' , type = str , nargs = '+' , default = [ '' ], help = '合成目标说话人名称' )
Perlu mengunduh wav2lip_run.py
:
#VIDEO
face_dir = "./source/"
Lakukan perubahan. Video yang dimaksud di sini adalah video yang direkam sebelumnya. Anda dapat menulis rencana pemilihan video Anda sendiri.
Tidak heran, jalankan saja main_demo.py
langsung di VScode atau software lainnya. Selamat bersenang-senang semuanya.
Kode repositori ini bersifat open source berdasarkan perjanjian GNU GPLv3. Penggunaan bobot masing-masing model harus mengikuti perjanjian open source-nya.