Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Generative Adversarial Network (GAN)

Mạng đối sinh tổng quát (GAN) huấn luyện generator đối kháng với discriminator cho đến khi các mẫu của generator được xem là thật. Nội dung đề cập đến cách huấn luyện, các biến thể và ứng dụng.

Mạng đối kháng tạo sinh (GAN) là một model AI tạo sinh gồm hai mạng neural được huấn luyện đối đầu nhau: bộ sinh biến nhiễu ngẫu nhiên thành mẫu, còn bộ phân biệt cố gắng phân biệt các mẫu đó với dữ liệu huấn luyện thật. Sau khi huấn luyện, bộ sinh tạo hình ảnh, âm thanh hoặc bản ghi dạng bảng mới chỉ trong một lượt truyền xuôi. Ian Goodfellow và các cộng sự tại Université de Montréal giới thiệu GAN trong bài báo năm 2014 Mạng đối kháng tạo sinh; GAN dẫn đầu lĩnh vực tổng hợp hình ảnh cho đến khi model khuếch tán vượt qua vào năm 2021.

Cách huấn luyện GAN hoạt động#

Hai mạng tham gia một trò chơi minimax. Bộ phân biệt là bộ phân loại nhị phân, xuất ra xác suất đầu vào của nó là mẫu thật; bộ này được huấn luyện bằng hàm mất mát entropy chéo để chấm mẫu thật là 1 và mẫu được tạo là 0. Bộ sinh không bao giờ thấy dữ liệu thật và chỉ học từ gradient của bộ phân biệt. Tại điểm tối ưu lý thuyết của trò chơi, phân phối được tạo ra trùng khớp với phân phối dữ liệu và bộ phân biệt xuất ra 0.5 cho mọi đầu vào. Ở giai đoạn đầu huấn luyện, khi mẫu giả dễ bị phát hiện, mục tiêu ban đầu của bộ sinh gần như không tạo ra gradient, dẫn đến một dạng của vấn đề gradient biến mất; vì vậy, bài báo của Goodfellow đặt mục tiêu cho bộ sinh tối đa hóa xác suất bộ phân biệt gọi các mẫu của nó là thật. Đoạn code dưới đây sử dụng hàm mất mát không bão hòa này.

Một GAN một chiều trong PyTorch học phân phối Gaussian chỉ từ các mẫu:

import torch
from torch import nn

torch.manual_seed(0)

# Generator maps 8-D noise to a number; discriminator scores a number as real (high) or fake (low)
generator = nn.Sequential(nn.Linear(8, 32), nn.ReLU(), nn.Linear(32, 1))
discriminator = nn.Sequential(nn.Linear(1, 32), nn.LeakyReLU(0.2), nn.Linear(32, 1))
opt_g = torch.optim.Adam(generator.parameters(), lr=1e-3)
opt_d = torch.optim.Adam(discriminator.parameters(), lr=1e-3)
bce = nn.BCEWithLogitsLoss()
real_label, fake_label = torch.ones(64, 1), torch.zeros(64, 1)

for step in range(3000):
    real = 4.0 + 1.25 * torch.randn(64, 1)  # training data: samples from N(4, 1.25^2)
    fake = generator(torch.randn(64, 8))

    # Discriminator step: label real samples 1 and generated samples 0
    loss_d = bce(discriminator(real), real_label) + bce(discriminator(fake.detach()), fake_label)
    opt_d.zero_grad()
    loss_d.backward()
    opt_d.step()

    # Generator step: push the discriminator to label generated samples 1
    loss_g = bce(discriminator(fake), real_label)
    opt_g.zero_grad()
    loss_g.backward()
    opt_g.step()

samples = generator(torch.randn(10000, 8)).detach()
print(f"Generated mean {samples.mean():.2f}, std {samples.std():.2f} (data: 4.00, 1.25)")
print(f"Discriminator's average P(real) on generated samples: {torch.sigmoid(discriminator(samples)).mean():.2f}")

Sau 3.000 bước luân phiên, các mẫu được tạo có giá trị trung bình 3.95 và độ lệch chuẩn 1.20, so với 4.00 và 1.25 của dữ liệu; bộ phân biệt gán cho chúng xác suất trung bình 0.51 là thật, gần với xác suất tung đồng xu của điểm tối ưu lý thuyết.

Các biến thể GAN chính#

  • DCGAN: Thiết kế năm 2015 của Alec Radford, Luke Metz và Soumith Chintala giúp bộ sinh và bộ phân biệt tích chập huấn luyện ổn định, thay các lớp pooling bằng tích chập có stride và bổ sung batch normalization.
  • GAN có điều kiện và pix2pix: Cung cấp nhãn lớp hoặc hình ảnh đầu vào cho cả hai mạng giúp bộ sinh tạo ra đầu ra theo yêu cầu. pix2pix (2017) của Phillip Isola và các cộng sự học cách chuyển đổi giữa các cặp dữ liệu, chẳng hạn từ bản đồ nhãn sang ảnh đường phố và từ đường viền sang ảnh sản phẩm.
  • CycleGAN: Học cách chuyển đổi giữa hai tập hợp hình ảnh không có ví dụ ghép cặp, chẳng hạn ngựa thành ngựa vằn hoặc phong cảnh mùa hè thành mùa đông, bằng cách yêu cầu hình ảnh sau chuyển đổi có thể được ánh xạ ngược về hình ảnh ban đầu.
  • GAN Wasserstein (WGAN): Năm 2017, Martin Arjovsky và các cộng sự thay bộ phân loại bằng một critic ước tính khoảng cách Wasserstein giữa dữ liệu thật và dữ liệu được tạo; cách này duy trì gradient hữu ích ngay cả khi hai phân phối hầu như không chồng lấp.
  • StyleGAN: StyleGAN (2018) và StyleGAN2 (2019) của NVIDIA đưa một vector style đã học vào mọi lớp của bộ sinh. StyleGAN2 đạt Fréchet Inception Distance (FID) 2.84 trên khuôn mặt kích thước 1024 x 1024 trong tập dữ liệu FFHQ.

Ứng dụng#

  • Siêu phân giải: SRGAN (2017), ESRGAN (2018) và Real-ESRGAN (2021) bổ sung hàm mất mát đối kháng vào các mạng phóng to ảnh, giúp khôi phục kết cấu sắc nét ở những nơi mà chỉ dùng hàm mất mát theo pixel sẽ tạo ra hình ảnh mờ.
  • Tăng cường ảnh y tế: Maayan Frid-Adar và các cộng sự huấn luyện GAN trên ảnh CT của 182 tổn thương gan rồi bổ sung các tổn thương tổng hợp vào tập huấn luyện; độ nhạy của bộ phân loại tăng từ 78.6% lên 85.7% và độ đặc hiệu tăng từ 88.4% lên 92.4%.
  • Deepfake: Trong nghiên cứu năm 2022 của Sophie Nightingale và Hany Farid, người tham gia xác định khuôn mặt StyleGAN2 là thật hay tổng hợp với độ chính xác 48%, thấp hơn một chút so với đoán ngẫu nhiên, đồng thời đánh giá khuôn mặt tổng hợp đáng tin hơn.

Hình ảnh do GAN tạo ra được dùng làm dữ liệu tổng hợp khi thiếu ví dụ thật, như một lớp tăng cường dữ liệu bổ sung cho các phép biến đổi hình học như lật và xoay. Những hình ảnh này được đưa vào tập huấn luyện YOLO26 giống như mọi hình ảnh khác: phần train trong YAML tập dữ liệu phát hiện của Ultralytics chấp nhận danh sách thư mục, vì vậy hình ảnh tổng hợp có thể nằm trong thư mục riêng bên cạnh hình ảnh thật và được thêm hoặc xóa chỉ bằng cách chỉnh sửa một dòng.

GAN so với model khuếch tán và VAE#

Model khuếch tán vượt GAN về chất lượng hình ảnh sau khi Prafulla Dhariwal và Alex Nichol của OpenAI báo cáo năm 2021 rằng một model khuếch tán đạt FID tốt hơn BigGAN-deep trên ImageNet, khi đó là GAN mạnh nhất. Huấn luyện khuếch tán là một bài toán hồi quy ổn định, không có đối kháng, và bao quát đầy đủ hơn sự đa dạng của dữ liệu. Huấn luyện GAN có thể dao động mà không hội tụ hoặc rơi vào tình trạng sụp đổ mode, trong đó bộ sinh chỉ chọn một vài đầu ra đánh lừa được bộ phân biệt và ngừng tạo các đầu ra còn lại. Bộ mã hóa tự động biến phân cũng huấn luyện ổn định, nhưng tạo ra các mẫu mờ hơn. Ưu điểm lâu dài của GAN là tốc độ, vì lấy mẫu chỉ cần một lượt truyền xuôi: GigaGAN, từ Adobe Research, Carnegie Mellon University và POSTECH, tạo kết quả từ văn bản sang hình ảnh ở độ phân giải 512 pixel trong 0.13 giây vào năm 2023. Hàm mất mát đối kháng cũng được duy trì trong các hệ thống khuếch tán. Bộ mã hóa tự động của Stable Diffusion được huấn luyện bằng bộ phân biệt dựa trên patch; SDXL Turbo của Stability AI dùng chưng cất khuếch tán đối kháng, một dạng chưng cất tri thức có bộ phân biệt trong hàm mất mát, để tạo hình ảnh chỉ trong một bước.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning