การประเมิน GAN

Deep Learning สำหรับภาพด้วย PyTorch

Michal Oleszak

Machine Learning Engineer

การสร้างภาพ

num_images_to_generate = 9
noise = torch.randn(num_images_to_generate, 16)

with torch.no_grad(): fake = gen(noise)
print(f"Generated shape: {fake.shape}")
Generated shape: torch.Size([9, 3, 96, 96])
for i in range(num_images_to_generate):

image_tensor = fake[i, :, :, :]
image_permuted = image_tensor.permute(1, 2, 0)
plt.imshow(image_permuted) plt.show()
  • สร้าง tensor สัญญาณรบกวนแบบสุ่ม
  • ส่ง noise เข้า generator
  • วนซ้ำตามจำนวนภาพ
  • สไลซ์ fake เพื่อเลือกภาพที่ i
  • จัดเรียงมิติของภาพใหม่
  • แสดงภาพ
Deep Learning สำหรับภาพด้วย PyTorch

ผลลัพธ์จาก GAN

ตัวอย่างภาพโปเกมอนที่สร้างโดย GAN

Deep Learning สำหรับภาพด้วย PyTorch

Fréchet Inception Distance

  • Inception: โมเดลจำแนกประเภทภาพ
  • Fréchet distance: ตัววัดระยะห่างระหว่างการกระจายความน่าจะเป็นสองแบบ
  • Fréchet Inception Distance:
    1. ใช้ Inception ดึง feature จากภาพจริงและภาพปลอม
    2. คำนวณค่าเฉลี่ยและ covariance ของ feature สำหรับภาพจริงและภาพปลอม
    3. คำนวณ Fréchet distance ระหว่างการกระจายแบบ normal ของภาพจริงและภาพปลอม
  • FID ต่ำ = ภาพปลอมใกล้เคียงข้อมูลฝึกและมีความหลากหลาย
  • FID < 10 = ดี
Deep Learning สำหรับภาพด้วย PyTorch

FID ใน PyTorch

from torchmetrics.image.fid import \
FrechetInceptionDistance


fid = FrechetInceptionDistance(feature=64)
fid.update( (fake * 255).to(torch.uint8), real=False)
fid.update( (real * 255).to(torch.uint8), real=True)
fid.compute()
tensor(7.5159)
  • นำเข้า FrechetInceptionDistance
  • สร้าง instance ของ metric FID
  • อัปเดต metric ด้วยภาพปลอม:
    • คูณด้วย 255
    • แปลงเป็น torch.uint8
  • อัปเดต metric ด้วยภาพจริงในลักษณะเดียวกัน
  • คำนวณค่า metric
Deep Learning สำหรับภาพด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning สำหรับภาพด้วย PyTorch

Preparing Video For Download...