Stable Diffusion - Model Training
ตัวอย่างจะเน้นการฝึกภาพบุคคล
เตรียมภาพเพื่อฝึกโมเดล
สมมุติว่าต้องการฝึกหน้าคน เช่นนาย A ให้เตรียมภาพไว้อย่างน้อย 10-20 รูป ก็เพียงพอโดย
- เน้นภาพคม ๆ คุณภาพสูง noise ไม่เยอะ
- พื้นหลังและสภาพแสงหลาย ๆ แบบ
- หลากหลายมุมไม่ใช่หน้าตรงอย่างเดียว เงยหน้า ก้มหน้า หันข้าง ได้หมด
ภาพยิ่งเยอะยิ่งใช้เวลาฝึกนาน
หลังจากนั้นให้ resize ให้มีขนาด 512*512 โดยใช้โปรแกรมที่ถนัด หรือใช้
https://www.birme.net/?target_width=512&target_height=512
โดย resize ให้บุคคลอยู่ตรงกลางภาพหลังจากนั้นจึงจับใส่ folder ให้เรียบร้อยเช่น
D:\AI\Model\ชื่อ folder
สร้าง caption
เปิด Stable Diffusion แล้วไปที่ Train > Preprocess images
Source directory ให้ใส่ path folder ภาพ เช่น
D:\AI\Model\ชื่อ folder
Destination directory ให้ใส่ path folder ภาพที่ทำการสร้าง caption แล้ว เช่น
D:\AI\Model\ชื่อ folder\processed
ติ๊กถูกที่ Use BLIP for caption หลังจากนั้นกด Preprocess
โปรแกรมจะทำการสร้าง caption พร้อมกับ copy รูปไปไว้ใน Destination directory
แก้ไข caption
จบขั้นตอนการเตรียมภาพ
Model Training
https://www.reddit.com/r/StableDiffusion/comments/10cgxrx/wellresearched_comparison_of_training_techniques/
ใช้ Google Colab
สำหรับคนที่ต้องการใช้ googleGoogle colabColab ให้อ่านตรงนี้
ย้ายไฟล์เข้า Google Drive
Copy ไฟล์จาก folder processed ที่ทำไว้ ไปใน Google Drive ของเราเช่น
My Drive/AI/ชื่อบุคคลที่จะทำ/processed
การใช้งานบน Colab จะกินพื้นที่ Goggle Drive ของเรา ไม่แน่ใจว่าเท่าไร น่าจะ 8-9 GB
เนื่องจากเราใช้ Coab แบบฟรี Colab จะทำงานได้ประมาณ 10-12 ชม หลังจากนั้นต้องปล่อยพัก 12 ชม+ ถึงจะกลับมาใช้งานได้อีก
เปิดใช้งาน Colab
ให้เปิดไฟล์ Colab ตัวอย่างที่เขาทำกันไว้
หลังจากนั้นให้ copy Colab โดยกดที่ Copy to Drive โดยไฟล์จะถูก copy ไปไว้ใน Colab Notebook ใน Google Drive ของเรา
เปิดไฟล์ Colab ของเราเอง (ครั้งแรก browser จะเด้งไปที่ tab ใหม่ให้เลย) แล้วจะเห็นเมนูหลักตัวใหญ่ ๆ 5 ขั้นตอน
กดปุ่ม play เพื่อเชื่อม Google Drive ของเราไว้ดึงไฟล์ รูปภาพที่จะใช้ทำโมเดลจาก folder processed
เมื่อเชื่อมต่อเรียบร้อยแล้วจะเห็น folder Google Drive เราทั้งหมด และจะเห็น MyDrive/AI ที่เราทำไว้
กดปุ่ม play Install/Update AUTOMATIC1111 repo (รอจนเสร็จ)
กดปุ่ม play Requirements (รอจนเสร็จ)
Model Download/Load
- เปิดมาครั้งแรกจะยังไม่มีโมเดล โดยในตัวอย่างนี้จะใช้โมเดลปัจจุบันคือ SD 1.5
- ดูที่ MODEL_LINK และใส่ url ของโมเดล 1.5 ลงไป จะได้ตามรูปด้านล่างหลังจากนั้น กดปุ่ม play และรอโหลดโมเดลจนเสร็จ
https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt
โมเดลที่โหลดมาแล้วจะถูกเปลี่ยนชื่อเป็น model.ckpt [e1141589a6] ซึ่งจะไม่เหมือนกับที่เราโหลดไปใช้งานบน PC
Start Stable-Diffusion
- กดปุ่ม play แล้วรอสักครู่ จะมี URL มาให้กดเปิดใช้งานเหมือนตอนใช้บน PC
- วิธีใช้งานให้ทำตามขั้นตอนปกติเหมือนบน PC ได้เลย
เมื่อต้องการใช้งาน Colab ในภายหลังให้ไปที่ Colab Notebook ของเรา และทำตามขั้นตอนเดิมทุกอย่าง ยกเว้นการ Download Model ที่ทำทีเดียว
ฝึก Model ผ่านใช้ Automatic 1111 ในเครื่องในเครื่องของเราเอง
ไกด์ยังไมได้เขียน
ดูไกด์จาก
Create embedding
number of vectors per token
2-3 = ต่ำกว่า 10 รูป
5-6 = 10-30 รูป
8-10 = 40-60 รูป
10-12 = 60-100 รูป
เน้นเฉพาะค่าที่จำเป็นต้องใช้งาน และต้องตั้งก่อนฝึก
Train
ถ้ามีEmbedding: 30ให้เลือกจาก รูป
Batchembedding size 7
Gradient 5
Batch size x Gradient (x กันแล้วห้ามเกินจำนวนภาพที่มาทำ และ ห้าม Gradient มากกว่า Batch size)
7*5 = 35
ที่เราสร้างไว้ก่อนหน้านี้
Embedding Learning rate: คือค่าที่กำหนดว่า AI เรียนรู้ภาพที่เราใส่ไปเร็วแค่ไหนยิ่งเร็วมากก็ยิ่งคุณภาพแย่ ยิ่งช้ามากก็จะเรียนเยอะเกินไปจนโมเดลนั้นพังสามารถตั้งได้ 2 แบบคือ
progressive
0.004
แบบขั้นบันไดให้ตั้งไว้ที่ 0.05:10,10, 0.02:20,20, 0.01:60, 0.005:200, 0.002:500, 0.001:3000, 0.0005
ตัวอย่างจะแนะนำให้ใช้ Embedding Learning rate แบบขั้นบันไดซึ่งหมายถึงให้ AI เรียนรู้โครตสร้างของภาพเร็ว ๆ ในช่วงแรกๆ และมาเน้นรายละเอียดเจาะลึกในช่วงหลัง ๆ
Batch size: ตั้งให้สูงที่สุดเท่าที่ GPU จะรับไหว หาก Train แล้วไม่ไหวขึ้น CUDA Core Error ค่อยปรับลดลงมา
Gradient: accumulation step: เปรียบเสมือนตัวคูณของ Batch size และห้ามมีค่ามากกว่า Batch size
สมมุติว่าภาพที่นำมาฝึกมีทั้งหมด 20 รูป ก็ควรตั้ง Batch size*Gradient ไว้ที่ 20*1 หรือ 10*2 แล้วแต่ว่า GPU จะไหวแค่ไหน ถ้าไม่ไหวก็ปรับ Batch size ลงไปเรื่อย ๆ แต่เมื่อคูณแล้วห้ามเกินจำนวนรูปทั้งหมด ดังนั้น เราจะใช้ 7*3 ไม่ได้เพราะเกินจาก 20 รูป ให้ใช้ 6*3 แทน
Dataset directory: คือที่ตั้งของภาพใน folder process ที่ทำไว้แล้วเช่น
D:\AI\ชื่อบุคคล\processed
สำหรับ Google Colab
ให้ดูตรงเมนู Files ด้านซ้าย gdrive > MyDrive แล้วกดไปยัง folder processed จะเห็นจุด 3 ตัวด้านหลังเป็นเมนู กด copy path ก็จะได้ path มาใส่ เช่น
/content/gdrive/MyDrive/AI/ชื่อบุคคล/processed




