Neural Style Transfer
Chuyển đổi phong cách bằng mạng nơ-ron vẽ lại nội dung ảnh theo phong cách của một ảnh khác bằng cách khớp thống kê đặc trưng CNN. Nội dung bao gồm phương pháp của Gatys, các model nhanh và ứng dụng.
Chuyển đổi phong cách bằng mạng nơ-ron (NST) là kỹ thuật thị giác máy tính, tái tạo nội dung của một hình ảnh—chẳng hạn ảnh chụp con phố—theo phong cách trực quan của hình ảnh khác, chẳng hạn tranh vẽ, bằng cách đối chiếu đặc trưng bên trong của một mạng nơ-ron tích chập (CNN) được tiền huấn luyện. Nội dung được thể hiện qua bản đồ đặc trưng của lớp sâu, ghi lại những gì xuất hiện ở đâu. Phong cách được thể hiện qua tương quan giữa các kênh đặc trưng, ghi lại kết cấu, màu sắc và nét cọ nhưng loại bỏ cách sắp xếp của chúng. Tháng 8 năm 2015, Leon Gatys, Alexander Ecker và Matthias Bethge thuộc Đại học Tübingen giới thiệu phương pháp này trong bài Một thuật toán nơ-ron cho phong cách nghệ thuật; ứng dụng Prisma đưa công nghệ này đến người dùng smartphone vào năm sau.
Cách hoạt động của phương pháp ban đầu#
Phương pháp của Gatys dùng VGG-19, một CNN được huấn luyện trên ImageNet, làm bộ trích xuất đặc trưng cố định; phương pháp này thay đổi pixel của ảnh đầu ra thay vì trọng số của mạng. Hai hàm mất mát điều khiển kết quả:
- Mất mát nội dung: Bình phương sai khác giữa bản đồ đặc trưng của ảnh đầu ra và ảnh nội dung tại một lớp sâu, conv4_2, giúp giữ cho các vật thể và bố cục dễ nhận ra.
- Mất mát phong cách: Bình phương sai khác giữa các ma trận Gram tại năm lớp từ conv1_1 đến conv5_1. Với một lớp có C kênh, ma trận Gram là bảng C x C, trong đó phần tử (i, j) đo mức độ hai kênh i và j cùng phản hồi, cộng trên mọi vị trí trong ảnh.
Tổng có trọng số của hai hàm mất mát được giảm thiểu bằng thuật toán tối ưu hóa L-BFGS; lan truyền ngược truyền gradient qua mạng đã đóng băng đến các pixel:
Vì ma trận Gram cộng dồn trên các vị trí nên gần như không thay đổi khi bố cục ảnh thay đổi. Hoán đổi các góc phần tư của ảnh cho thấy điều này với ResNet-18 của torchvision, một CNN ImageNet nhỏ hơn VGG-19, trong PyTorch:
import torch
from skimage import data
from torchvision.models import ResNet18_Weights, resnet18
weights = ResNet18_Weights.DEFAULT
cnn = resnet18(weights=weights).eval()
early_layers = torch.nn.Sequential(cnn.conv1, cnn.bn1, cnn.relu, cnn.maxpool, cnn.layer1)
preprocess = weights.transforms()
photo = torch.tensor(data.astronaut()).permute(2, 0, 1) # 3 x 512 x 512
rearranged = torch.roll(photo, shifts=(256, 256), dims=(1, 2)) # same pixels, quadrants swapped
def content_and_style(image):
"""Return an early CNN layer's feature map (content) and its Gram matrix (style)."""
with torch.no_grad():
features = early_layers(preprocess(image)[None])[0].flatten(1) # channels x positions
return features, features @ features.T / features.shape[1]
(content_a, style_a), (content_b, style_b) = content_and_style(photo), content_and_style(rearranged)
print(f"Content change: {(content_a - content_b).norm() / content_a.norm():.0%}")
print(f"Style change: {(style_a - style_b).norm() / style_a.norm():.0%}")Hoán đổi các góc phần tư làm bản đồ đặc trưng thay đổi 96%, nhưng ma trận Gram chỉ thay đổi 7%; phần chênh lệch 7% còn lại đến từ các đường nối mới và thao tác cắt giữa, vốn giữ lại những phần ảnh khác nhau. Vì vậy, mất mát phong cách sao chép nét cọ và bảng màu của bức tranh mà không sao chép vị trí của các vật thể trong tranh.
Chuyển đổi phong cách nhanh và tùy ý#
Tối ưu hóa từng ảnh cần hàng trăm vòng lặp, nên các nghiên cứu sau chuyển quá trình tối ưu hóa vào giai đoạn huấn luyện. Năm 2016, Justin Johnson, Alexandre Alahi và Li Fei-Fei thuộc Stanford huấn luyện một mạng truyền thẳng cho từng phong cách bằng cùng các hàm mất mát, tạo kết quả nhanh hơn khoảng ba bậc độ lớn và áp dụng cùng các mất mát cảm nhận cho siêu phân giải. Dmitry Ulyanov và các cộng sự nhận thấy thay batch normalization bằng instance normalization trong các mạng đó giúp cải thiện chất lượng cách điệu. Adaptive instance normalization (AdaIN, 2017) của Xun Huang và Serge Belongie xử lý được mọi phong cách mà không cần huấn luyện lại: phương pháp này điều chỉnh trung bình và độ lệch chuẩn của từng kênh đặc trưng nội dung để khớp với ảnh phong cách, rồi giải mã; quá trình này chạy trong thời gian thực.
Chuyển đổi phong cách cho model thị giác vững chắc#
Robert Geirhos và các cộng sự dùng AdaIN để cho thấy CNN huấn luyện trên ImageNet dựa vào kết cấu nhiều hơn hình dạng: ResNet-50 gán nhãn ảnh mèo có kết cấu da voi là voi, một dạng học lối tắt. Họ tạo Stylized-ImageNet bằng cách áp dụng phong cách ngẫu nhiên từ bộ sưu tập Painter by Numbers gồm 79.434 bức tranh cho mọi ảnh ImageNet; ResNet-50 được huấn luyện trên dataset này chuyển sang dựa vào hình dạng. Dùng mạng dựa trên hình dạng đó làm backbone cho model phát hiện đối tượng Faster R-CNN giúp tăng mAP50 trên Pascal VOC 2007 từ 70.7 lên 75.1 và trên MS COCO từ 52.3 lên 55.2.
Ý tưởng tương tự có thể dùng làm tăng cường dữ liệu cho dataset phát hiện, vì chuyển đổi phong cách giữ nguyên vị trí của mọi vật thể. Bản sao được cách điệu của ảnh đã gán nhãn có thể tái sử dụng bounding box gốc; do đó, trong dataset phát hiện Ultralytics YOLO26, chỉ cần sao chép tệp nhãn gốc và đổi tên theo tên ảnh mới.
Chuyển đổi phong cách bằng mạng nơ-ron và các thuật ngữ liên quan#
- Mạng đối sinh tạo (GAN): CycleGAN học ánh xạ giữa toàn bộ bộ sưu tập hình ảnh, chẳng hạn ảnh chụp và tranh Monet, thay vì đối chiếu thống kê của một ảnh phong cách.
- Học chuyển giao: Tinh chỉnh trọng số được tiền huấn luyện cho tác vụ mới. NST không bao giờ cập nhật trọng số mạng mà chỉ dùng mạng để đo các hàm mất mát.
- Model khuếch tán: Tạo lại hình ảnh theo prompt văn bản hoặc ảnh tham chiếu để thay đổi phong cách; quá trình này có thể làm biến đổi cả hình dạng và chi tiết.










