1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Khoa học máy tính: Nghiên cứu triển khai ứng dụng với mô hình học sâu cho bài toán chuyển đổi phong cách ảnh

103 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu triển khai ứng dụng với mô hình học sâu cho bài toán chuyển đổi phong cách ảnh
Tác giả Lê Doan Phúc Minh, Nguyễn Duy Đạt
Người hướng dẫn TS. Nguyễn Vinh Tiệp
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Khoa học Máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 103
Dung lượng 90,67 MB

Cấu trúc

  • 2.2.1 Neural Style Transfer (25)
  • 2.2.2 Style Transfer với 2 mô hình họ Transformer (28)
  • 2.2.3. GANS . Ha (33)
  • 2.3 Bài toán Text-to-Image ..............Ặ .Ặ Q Q Q Qua 26 (38)
    • 2.3.1 Denoising Diffusion Probabilistic Models (38)
    • 2.3.2 Stable Diffusion... 2... 0... 0.0020... HQ HQ 00000. 32 (44)
  • 3.1 Tongquan... 2... ee 36 (0)
  • 3.2 Quantization đối với NST, Transformer va Diffusion (49)
    • 3.2.1 Dynamic Quantization ...................ẶẶ Ặ ẶẶẶ 38 (50)
    • 3.2.2 Floatl6 Quantization ... 2... 2... ee 38 3.2.3. Int8 Quantization... 2... ee 38 (0)
  • 3.3 GANCompression .......... 2.00.00. ee ee 39 (51)
  • 3.4 Model Prunning đối với NST... 0.0.0.0. ee 40 (52)
    • 3.4.1 Téngquan... 2... ee 40 (0)
    • 3.4.2 Các phương phaptiamangno-ron (0)
    • 3.4.3 Một số thuật toán tỉamạngnơ-ron .................... 4I 3.4.4. Finetuning trong quá trìnhtỉa (53)
  • 4.1 Phương thức đánh giá...............ẶẶ Ặ Q Q Q Q Q Q S . 43 (55)
    • 4.1.1 Đánh giá dựa trên chất lượng ảnh (55)
    • 4.1.2 Đánh giá dựa trên yêu cầu tài nguyên phần cứng và thời gian thực hiện. 44 (0)
    • 4.1.3 Đánh giá dựa trên số lượng bầu chọn của người ding (0)
    • 4.2.1 Kế hoạch triển khai ứng dụng (59)
    • 4.2.2 Xây dựng ứng dụng dành cho nền tang máy tính cánhân (60)
    • 4.2.3 Xây dung ứng dụng dành cho nén tảng thiết bị diđộng (0)
    • 4.2.4 Dir liệu thực nghiệm (dành cho mô hình chuyển đổi phong cách ảnh có đầu vào làảnh) ............ ee 55 (0)
  • 4.3 Kétquathucnghiém ...................ẶẶQ ee 56 (0)
    • 4.3.1 Neural Style Transfer... 2... 2... ee 56 (68)
    • 4.3.2 Các mô hình thuộc ho Transformer (75)

Nội dung

58 Kết quả thực hiện với 2 backbone MobileNetV2 trái và InceptionV3 phải cho mô hình Arbitrary Style Transfr...- 58 Kết quả chuyển đổi phong cách anh của mô hình Arbitrary Style Transfer

Neural Style Transfer

Neural Style Transfer (NST) là một kỹ thuật tối ưu hóa được sử dụng để kết hợp một hình ảnh nội dung, một hình ảnh tham chiếu phong cách (như một tác phẩm nghệ thuật của một họa sĩ nổi tiếng) biến đổi để trông giống như hình ảnh nội dung, nhưng lại được "vẽ" theo phong cách của hình ảnh phong cách NST là một kỹ thuật thú vị, thể hiện khả năng và biểu diễn bên trong của các mạng nơ-ron Nguyên tắc của chuyển đổi phong cách là xác định hai hàm khoảng cách, một mô ta cách khác nhau giữa nội dung của hai hình ảnh, Leonrent, và một mô tả sự khác biệt giữa hai hình ảnh về phong cách của chúng, Letyle- Nhiệm vụ là cô gắng biến đổi hình ảnh đầu vào để giảm thiểu khoảng cách nội dung với hình ảnh nội dung và khoảng cách phong cách

2.2 Bài toán Image-to-Image với hình ảnh phong cách Biến đổi được thực hiện bằng quá trình lan truyền ngược, tạo ra một hình ảnh phù hợp với nội dung của hình ảnh nội dung và phong cách của hình ảnh phong cách.

Hình 2.1: Sơ đồ hoạt động của NST.[24] Để xác định được cả biểu diễn nội dung và phong cách của hình ảnh, cần xem xét một số lớp trung gian trong mô hình Các lớp trung gian biểu diễn cho feature maps trở nên ngày càng có thứ bậc cao khi đi sâu Trong khoá luận của chúng tôi, mạng VGG16, VGG19, ResNet50,

MobileNetV2, InceptionV3 và EfficientNetV2 sé được sử dụng Các mang này được tiền huấn luyện cho việc phân loại hình ảnh Các lớp trung gian là cần thiết để xác định biểu diễn nội dung và phong cách từ hình ảnh bất kì Đối với một hình ảnh đầu vào, các biểu diễn mục tiêu được tương ứng hoá về phong cách và nội dung tại những lớp trung gian này Những đầu ra trung gian này trong mạng phân loại hình ảnh tiền huấn luyện cho phép xác định các biểu diễn phong cách và nội dung Ở mức cao, hiện tượng này có thể giải thích bằng việc rằng để một mạng thực hiện phân loại hình ảnh (nhiệm vụ mà mạng của chúng tôi đã được huấn luyện để thực hiện), nó phải hiểu hình ảnh Điều này liên quan đến việc lấy hình ảnh nguyên bản như là điểm đầu vào và xây dựng một biểu diễn bên trong thông qua các biến đổi chuyển đổi các điểm ảnh hình ảnh nguyên bản thành một hiểu biết phức tạp về các đặc trưng có trong hình ảnh Điều này cũng là lý do tại sao mạng nơ-ron tích chập có thể tổng quát hóa tốt, bởi chúng có thể bắt được những đặc điểm

2.2 Bài toán Image-to-Image không biến đổi và xác định trong các lớp không phụ thuộc vào nhiễu nền và những yếu tố nhiễu ngoại cảnh Do đó, ở đâu đó giữa nơi mà hình ảnh nguyên bản được đưa vào và nhãn phân loại được đầu ra, mô hình đóng vai trò như một bộ trích xuất đặc điểm phức tạp Chính vì điều này, bằng cách truy cập các lớp trung gian, nội dung và phong cách của các hình ảnh đầu vào có thể được mô tả.

Một trong những điểm yêu của NST đó chính là mô hình phải được huấn luyện và cập nhật thông tin họa tiết cho ảnh content Phương pháp này có điểm yếu là chậm và không tạo ra cơ hội cho mạng học phong cách ảnh được chuyển đổi. Để khắc phục van dé này, Johnson et al[11] sử dụng một mạng nơ-ron tích chập thứ hai có tên là mạng chuyển đổi phong cách (Style Transfer Network) được thiết kế theo kiến trúc Encoder/Decoder và học cách chuyển đổi từ cảnh content sang ảnh đã được xử lý style Mục tiêu huấn luyện của mạng này là sử dụng một hàm loss tính tổng Content loss va Style loss, đầu vào anh đã được chuyển đổi phong cách thông qua mang Style Transfer Network Quá trình huấn luyện sẽ làm giảm số loss bằng cách sử dung các hình ảnh nhiếp ảnh làm ảnh content. Điều này cho phép mạng xử lý nội dung ảnh style xử lý ảnh nhanh hơn đáng kể, tuy nhiên điều này đòi hỏi mạng xử lý nội dung anh Style phải được huấn luyện cho từng anh Style Chính vì vậy, việc huấn luyện mạng này cho từng ảnh style trở lên lãng phí bởi khá nhiều ảnh style đều có thể có chung một số họa tiết, Palette màu và ngữ cảnh chuyển đổi Đồng thời, nó cũng dẫn đến một van dé khác là phương pháp này khá tù túng trong việc chuyển đổi phong cách ảnh bởi nó chỉ có thể hoạt động hiệu quả với các ảnh style đã được huấn luyện Một cách để cải thiện mạng này là bằng cách véc-tơ hóa các ảnh style và tạo ra các đặc trưng mô tả cho từng ảnh style [5] Tuy vậy, nó vẫn chưa khắc phục được vấn đề hiện hữu của phương pháp trên.

Arbitrary Style Transfer [7] là phương pháp thực hiện chuyển đổi phong cách nghệ thuật nhanh chóng có thể hoạt động trên bất kỳ phong cách nghệ thuật nào Phương pháp này sử dụng một mạng có tên là mạng dự đoán style (Style Prediction Network) để cho ra một véc-tơ nhúng chứa thông tin của ảnh style Điều này cho phép mô hình không bị hạn chế số lượng ảnh style có thể thực hiện bằng cách dự đoán thông tin style của ảnh tại thời điểm vận hành thực tế Mô hình này sử dụng mạng InceptionV3 đã được huấn luyện sẵn cho mạng dự đoán style, sau đó tính toán trung bình các Activation channel của lớp Mixed-6e và trả về một vec-tơ có số chiều

768 Cuối cùng, chúng tôi lắp thêm 2 lớp Full-Connected để dự đoán ra một vec-tơ thông tin của ảnh style với lớp đầu tiên chỉ có 100 đơn vị nhằm mục đích làm mô hình gọn nhẹ hơn so với 3000 đơn vị trong bài viết [5] Sau đó dữ liệu vec-tơ này sẽ được đưa vào mạng chuyển đổi phong cách ảnh đã đề cập ở trên và thực hiện công việc chuyển đổi này.

2.2 Bài toán Image-to-Image sivletransfiar stylized image content network T Tie, 5) image c

5 style loss content loss= t style image s style prediction network P

Hình 2.2: Kiến tric mô hình Arbitrary Style Transfer[7]

So với Neural Style Transfer truyền thông, Arbitrary Style Transfer gần như khắc phục hoàn toàn một van dé cố hữu của mô hình Neural Style Transfer đó là phải liên tục cập nhật thông tin style trong quá trình phong cách ảnh và không có cách nào để ghi nhớ thông tin đó Điều này giúp cho việc chuyển đổi phong cách ảnh tiết kiệm được rất nhiều thời gian mà vẫn đảm bảo được chi phí vận hành thấp.

Style Transfer với 2 mô hình họ Transformer

Style Transformer (StyTr2) Ý tưởng sẽ mượn transformer giống bên NLP, các mang neural sẽ ghi lại các sự phụ thuộc dài han (long-term dependencies) bằng cơ chế self-attention Một yếu tô quan trong là việc phải giữ được nội dung của ảnh gốc, nên ta sẽ xét khái niệm PE (positional encoding), mã hóa cả vị trí để đầu ra vẫn có chất nội dung ảnh gốc Có 2 kiểu PE là functional PE và parametric PE.

Functional PE sử dụng các hàm được định nghĩa trước, thường là dùng hàm sin, cos do có tính tuần hoàn Vì khi ta phóng to hay thu nhỏ thì việc nhớ được nội dung gốc rất quan trọng, điều này 1 dạng xử lí giống bất biến tỉ lệ (scale invariant) Ví dụ hàm lượng giác sử dung cho PE:

PE (pos,2i+1) = COS (nam) pos

2.2 Bài toán Image-to-Image

CLEC) gg a on ee TH Transformer Encoder

(a) Transformer decoder layer (b) StyTr2 Network

Hình 2.3: Pipeline của Style Transformer.[3]

Parametric PE sử dụng các tham số học nội dung ảnh thông qua việc training Ở bước thứ nhất, với input là 2 ảnh “Content” và “style image” Xử lí tương tự nhau, chặt ảnh thành các patch (Patch ảnh là ảnh mà | số vùng được định nghĩa để có thể kéo căng ra (stretchable) mà không bi võ hạt Hiểu như là các miếng vá.) Tiếp theo, phép chiếu tuyến tinh (linear projection) được sử dụng để lấy các chuỗi patch (ý tưởng dang sequences như bên NLP) Hai chuỗi patch là

‘content sequence’ và “style sequence’ được xử lí song song Bước thứ 3, phép cộng ‘content se- quence’ và CAPE được thực hiện và truyền thang vào transformer encoder Nhưng đối với style sequence thì truyền thẳng vào transformer encoder trực tiếp Day là 2 sự khác biệt xử lí đối với

“content sequence’ và ‘style sequence’ trong mô hình trên Sử dụng | transfomer decoder dạng đa lớp để style hóa ‘content sequence’ theo mẫu ‘style sequence’ Dùng upsampling decoder để lấy ảnh output.[3]

Hình 2.4: Content-Aware Positional Encoding (CAPE).[3]

2.2 Bài toán Image-to-Image

Công thức tinh ‘attention score’ của patch thứ i và patch thứ j:

Aij = ((6¡+ Fi) Wy)’ ((£j + Fi) We)

= Wi ET EW + Wy 6! PW, (2.2)

Wg, Wk là các ma trận tham số cho việc tinh Query va Key Hang tử cuối P? P; có thể được tính như sau: qi] d

P (xĂ,yĂ)” PD (x;.yj) = ằ [cos (we (x; —xi)) + COS (we (yj —yi))] (2.3)

Strips Window Attention Transformer (S2WAT)

S2WAT là phương pháp dựa trên Transformer, cau trúc nay sé capture lai các đặc trưng được trích xuất local và global, kế thừa sự hiệu quả của attention dựa trên window SpW (Strip Win- dow) kết hợp đầu ra từ nhiều windows với đa dạng shapes Sự đa dạng này sẽ nâng cao sự phục thuộc ngắn dài, đồng thời việc tích hợp chúng thuận lợi thông qua kĩ thuật "Attn Merge" Có 3 loại window chính từ kĩ thuật 1a horizontal strip-like, vertical strip-like va square Các tính toán attention được kì vọng từ strip windows nhấn mạnh mô hình hoá phụ thuộc dai hạn cho việc trích xuất đặc trưng non-local, trong khi square window tập trung vào mô hình hoá phụ thuộc ngắn hạn cho việc ghi lại đặc trưng local "Attn Merge" kết hợp các đầu ra attention từ các windows đa dạng bằng việc tinh spatial correlations giữa chúng và đầu vào Những tính toán này phục vụ cho việc merge các weights lại Không giống phép summation và concatenation, "Attn Merge" xác định động ý nghĩa của window attentions khác nhau, do đó dễ mở rộng hiệu quả chuyển đổi.[27]

_ nxW Hxn 2 pw eee Strips Window Attention ai LN (SpW Attention)

(a) Strips Window Attention Transformer Encoder N == Strips Window Attention Block

| Mirrored VGG Ì 1 ig z NT Xị O, VHIN i — NI dIN

(c) Net Architecture of S2WAT (d) Decoder (e) Transformer Decoder Layer

2.2 Bài toán Image-to-Image

| |The patch that is computing A patch taken into attention A patch

Hình 2.6: Receptive field của Strips Window Attention.[27]

Encoder sinh ra feature f, va ƒ; tương ứng từ anh content J, va anh style ù; với module chuyển đổi Những đặc trưng được style hoá được decoder tạo anh style hoá [,5.

Giả sử các features đầu vào có shape là C x H x W và n là strip width Giai đoạn 1 bao gồm

3 window attentions khác biệt: horizontal strip-like với kích thước window là n x W, vertical strip-like với kích thước window là H x n và square với kích thước M x M (đặt M = 2n) Một strip like window attention đơn giản là ghi nhớ thông tin local dọc theo các trục trong khi chiếm nhiều sự phụ thuộc dài hạn dọc theo trục khác Tính toán square window attention bao gồm bias

Q,K,V€ Rd là các ma trận query, key và value; d là chiều của query/key, M? là số

+B)V (2.4) patches trong window, W — MSAy,m là multi-head self-attention dùng window với shape là

MxM Sau giai đoạn trên, một fusion module có tên là "Attn Merge" hợp nhất các kết quả đầu vào.

Strip-like window attention đơn giản hay square window attention có thể thu thập thông tin từ các mục tiêu han chế trong ảnh Trong khi đó, thông tin được hợp nhất sẽ mở rộng vùng tiếp nối tới đa hướng.

2.2 Bài toán Image-to-Image

O Inputs of SpW A 1 Outputs of W.A (nx W) h

O Outputs ofW.A.(Hxn) © Outputs ofW.A (2n x 2n) |

Hinh 2.7: Workflow cua Attn Merge.[27]

"Attn Merge" gồm 3 bước chính: tensor tracking, tinh toán similarity giữa tensor dau tiên và phan còn lại trong mỗi vị tri spatial, thứ ba là cộng trong số dựa trên similarity.

(2.5) x,a,b,c € R”TM là tensor đầu vào và z là dau ra Stack là phép lựa tensor trong một chiều mới, Unsqueeze/Squeeze tương ứng là phép cộng/trừ một chiều của tensor Cau trúc của SpW Atten- tion block phản ánh transformer block chuẩn ngoại trừ phần MSA với module SqW Attention. Module này thành công do có 2 layers MLP lấy đặc trưng GLUE như hàm kích hoạt phi tuyến ở giữa Trước mỗi module SqW-MSA và MLP, lớp LayerNorm được áp dụng và kết nối residual được áp dụng ngay sau mỗi module Việc tính toán SpW Attention block có thể được mở rộng như sau: fw = W= MSA,xw (LN (s”!)), eh = W—MSAg xn (LN ())

Bh xay = W—MSAan xa, (LN ())

2.2 Bài toán Image-to-Image of là phép "Attn Merge", z',2!,2! là các output của mạng MLP, Attn Merge va W-MSA cho mỗi block 1.

GANS Ha

Pix2Pix là mô hình cGAN (conditional GAN) được giới thiệu tại CVPR-2017 với chủ dé chuyển dich ảnh với mạng đối kháng có điều kiện Điều kiện của cGAN là mô hình phải có ảnh đầu vào, điều kiện có thể là nhãn của ảnh cần được tạo sinh hoặc là một bức ảnh Đầu ra có thể được kiểm soát dựa trên điều kiện đầu vào, khác với GAN ở chỗ là khởi tạo véc-tơ đầu vào ngẫu nhiên và hoàn toàn không kiểm soát được đầu ra là gì.

Kiến trúc Pix2Pix bao gồm Generator va Discriminator Tương tự GAN, Generator có tác dụng tạo ảnh giả để đánh lừa Discriminator và Discriminator có nhiệm vụ phân biệt ảnh thật và ảnh giả.

Hình 2.8: Kiến trúc chung của Generator trong Pix2Pix.[10] Đầu vào của Generator là bức ảnh nguồn như trong hình Sau đó, ảnh được truyền vào kiến trúc mạng tích chập để trích xuất đặc trưng qua quá trình down sampling Tại quá trình này, kích thước của ảnh được truyền sẽ giảm dần thông qua phép tích chập 2 chiều Sau khi biến đổi thành embedding, ảnh sẽ được gia tăng kích thước bằng up sampling thông qua các layers như Transposed Convolution, Dilation Convolution, Upsampling 2D Kết quả trả ra là hình ảnh giả.

2.2 Bài toán Image-to-Image

Hình 2.9: Kiến trúc U-Net của Generator trong Pix2Pix.[10] Đầu vào là một cặp ảnh x, y như trên hình, x là ảnh đầu vào, y là ảnh target được sinh ra từ Generator hoặc lấy từ tập huấn luyện Hai ảnh x, y phải cùng kích thước và sẽ được concatenate với nhau trước khi truyền vào mạng Discriminator Cặp ảnh sẽ có nhãn là thật khi y từ tập huấn luyện và giả khi y sinh ra từ Generator Loss của Pix2Pix là hàm đánh giá dạng binary cross entropy.

Locan(G,D) = ‘x yllog D(x, y)] + Excllog(1-D@&G2))] og 7y ` `"——— : log-probability that D predict {x,y}} is real log-probability D predicts G(x,z) is fake

Quá trình huấn luyện này là đồng thời cả Generator va Discriminator Discriminator phan loại ảnh thật và giả nên loss phải càng nhỏ càng tốt Ta cần tìm maxp.Z2gax(G,D) Generator cần sinh ảnh giống ảnh thật nhất nên xác suất D(x,G(x,z)) càng gan 1 càng tốt, do đó ta cần tìm minp ⁄2ứAx(G, D) Kết hợp cả hai ràng buộc trờn, bài toỏn cần tối ưu cú cụng thức là: ming maxp L.can(G, D) (2.8)

Khi bỏ x trong công thức loss của GAN giống như không truyền vào Discriminator một cặp x, y mà chỉ truyền vô y thì ta có một công thức không điều kiện sau:

Loan(G,D) = Ey [logD(y)] + Ex,[log(1 —D(G(x,z))| aes vee (2.9) log-probability that D predict yis real log-probability D predicts G(x,z) is fake

Kết hợp ham loss với chuẩn norm bậc 1 và 2 làm vai trò phân biệt của Discriminator không đổi mà giúp Generator tạo ảnh giống nhất với Ground Truth có thể.

2.2 Bài toán Image-to-Image

Ham loss mới với A nhỏ là hệ số theo chuẩn bậc 1: ming maxp.⁄2œAx(GŒ,D) + Ä.Z1,(G) (2.11)

PatchGAN là kiến trúc được áp dụng có Discriminator dựa trên các vùng receptive field sẽ mapping từng pixel ở output với input (các patch) PatchGAN có kích thước 70x70 là mỗi output sẽ map tới một patch kích thước 70x70 Sau đó mô hình sẽ phân loại patch ảnh đó là thật hay giả Về bản chất mỗi patch sẽ là một xác suất được dự đoán là thật hoặc giả Xác suất của toàn bộ bức ảnh là trung bình cộng xác suất của toàn bộ các patches Phương pháp này không cần phải dùng các layers fully connected và flatten.

Hình 2.10: Minh hoạ chia patch trên một ảnh.[2]

Nếu ta gọi Winput là kích thước của tích chập đầu vào, F là kích thước bộ lọc, S là Stride, P là padding thì tích chập đầu ra sẽ được tính như sau: Biến đổi tương đương có thể suy luận được việc tính tích chập đầu vào dựa trên đầu ra như sau:

Pix2Pix nổi bật hơn cGAN ở việc cải thiện chất lượng đầu ra bằng kết hợp ham loss giữa

“Adversarial loss” và chuẩn bậc 2.

2.2 Bài toán Image-to-Image

CycleGAN ra mắt năm 2017 bởi nhóm tác giả Jun-Yan Zhu, Taesung Park, Phillip Isola,

Alexei A Efros Mô hình tim ra cách tổng quát dé mapping anh đầu vào va ảnh đầu ra ma không cần cặp nguồn và đích như các mô hình GAN khác như Pix2Pix CycleGAN thuộc lớp bài toán “unsupervised uni-model image-to-image translation” Ở một số tác vụ, dif liệu huấn luyện theo cặp không có sẵn và chi phí làm dữ liệu đắt CycleGAN là cách tiếp cận học chuyển đổi ảnh từ miền X đến miền mục tiêu Y mà không có các mẫu theo cặp trước đó Mục tiêu là học được mapping G sao cho từ X -> Yvà cố gắng thực hiện ngược lại mapping F từ Y -> X với

“Cycle consistency loss” Mô hình hữu ích khi được huấn luyện trên những hình ảnh khan hiếm khó ghép cặp.

Hình 2.11: Dữ liệu huấn luyện theo cặp (bên trái) và không theo cặp (bên phai).[28]

Các mô hình GAN bình thường có đầu vào ghép theo cặp nên khó có hiệu suất cao khi tổng quát hoá CycleGAN giúp chuyển đổi ảnh không ghép cặp hỗ trợ chuyển đổi các đặc điểm chung từ tập nguồn sang tập đích mà không cần liên quan theo cặp.

2.2 Bài toán Image-to-Image

Er oe loss cycle-consistency | }, + loss š sà (b) (c)

Về cơ bản, kiến trúc CycleGAN giống như GAN có hai phần chính là Generator và Discrim- inator Generator sẽ gắng tạo ra hình ảnh chân thực nhất còn Discriminator sẽ phân biệt hình ảnh thật và giả để cải thiện Generator Điểm mới của CycleGAN là sử Generator đối ngẫu để chuyển đổi từ X sang Y và ngược lại Y sang X Kiến trúc này tạo một không gian latent mà không cần xác định trước hình ảnh ghép cặp Ham “Cycle consistency loss” giúp giữ phân phối đầu ra của quá trình tao sinh đối ngẫu không quá khác xa so với đầu vào Hàm loss đánh giá cuối cùng bao gồm “Cycle consistency loss” và “Adversarial loss” Hai hàm tạo sinh bao gồm

G ở bên trái và F ở bên phải hoặc ngược lại: xk> G(x) F X

Ham “Cycle consistency loss” cố gang ràng buộc với hai công thức trên để tao đầu ra chân thực nhất có thể Quá trình học lặp lại cả hai hướng từ x và y Điều này tương ứng với giảm thiểu sự khác biệt giữa F(G(x))-x va G(F(y))-y trên L1 như sau:

“e(6#) = Ra (x) [IF (G0) =*|[LI# Ey „6y HGF O)) = yÍ] (2.15)

Ham “Adversarial loss” cô gắng hỗ trợ Generator tạo hình ảnh giả thực tế hơn và tăng khả năng phân biệt thật giả của Discriminator Hai hàm loss trong CycleGAN tương ứng là:

Loan (G,Dy,X,Y) = Ey cpu (y) HOS Dx (Y)] + Ex~paaia (x) log 1 — Dx(G(3))])

-LGAN (F,Dy,X,Y) = Lem Paata (x) [log Dy (x)] + Ey Pata (y) [log (1 — Dy(F(y))]

Hàm mục tiêu day đủ là tổng “Cycle consistency loss” và “Adversarial loss”:

Z(G,F,Dx,Dy) = Loan (G,Dy,X,Y)>+.⁄GAxn(F,Dy,X,Y) +ALeyc (GF) (2.17)

Việc huấn luyện đưa về đi tối ưu hoá phương trình sau: Œ”,F” = argminmmaxg r ⁄ (G, F,Dx,Dy) (2.18)

Bài toán Text-to-Image Ặ Ặ Q Q Q Qua 26

Denoising Diffusion Probabilistic Models

Rất nhiều kiến trúc của Diffusion khác nhau nhưng nổi bật là kiến trúc Denoising Diffusion Probabilistic Models (DDPM) Mô hình này có thể tự điều chỉnh qua các steps nhỏ và dần tạo ra một mẫu tốt Ý tưởng của mô hình Diffusion rất đơn giản, với một ảnh đầu vào, thêm nhiễu

Gaussian thông qua chuỗi các T steps Quá trình thêm nhiễu gọi là “Forward process” , và quá trình này không liên quan giống như “Forward pass” trong mạng nơ-ron Mang nơ-ron được sử dụng để khôi phục lại dữ liệu gốc bằng việc nghịch đảo quá trình thêm nhiễu Dữ liệu mới được tạo ra bằng cách mô hình hóa “Reverse process” Quá trình này cũng được gọi là việc lấy mau của mô hình tạo sinh.

Các mô hình Diffusion có thể được xem như mô hình “latent variable” “Latent” là không gian đặc trưng liên tục bị ẩn Biểu diễn này giống mô hình VAEs (Variational Autoencoders) Ở quá trình “Forward diffusion”, mô hình dùng chuỗi Markov cho T steps Chuỗi Markov ở đây có nghĩa là ở mỗi step bất kì chỉ phụ thuộc vào step ngay trước đó Điều này không bị ràng buộc khi dùng một loại cụ thể mạng nơ-ron Một điểm dữ liệu xọ cho trước được lay mẫu từ phân phối dit liệu thực q(x)(xo ~ q(x)), q(x) được định nghĩa là quá trình “Forward diffusion” bởi việc thêm nhiễu Cụ thể là ở mỗi step của chuỗi Markov, nhiễu Gaussian được thêm với phương sai f, đến x,_¡ , sinh ra biến latent mới x, với phân phối q(xlx;_ ¡) Công thức quá trình ‘Forward diffusion’ như sau:

11a ma trận đơn vị và , là độ lệch chuẩn g(x,|x,_¡) là một phân phối chuẩn, được biểu diễn bởi hai đại lượng trung bình uw và phương sai > Trong đó, u, = 1 — ,x;—¡ và 3;=,I > luôn luôn là ma trận đường chéo của phương sai (f,) Về mặt toán học, việc biến đổi dữ liệu đầu vào xọ đến xr theo một cách dễ tiếp cận hơn khi được hiểu như công thức xác suất hậu nghiệm:

2.3 Bài toán Text-to-Image

Kí hiệu “:” trong trạng thái q(x1:r) được hiểu là áp dụng q lặp lại từ timestep 1 đến T Trong trường hợp timestep t = 500 < T, chúng ta áp dụng 500 lần để lấy mẫu x7 Khi t quá lớn thì các đặc trưng có thể phân biệt được từ mẫu dữ liệu sẽ bị mất đi nên phương pháp “Reparameterization trick” được dé xuất Nếu œ = I— B, và O&% = [Tio 0 với €, ,&-2,8-1 ~ VY (0,1).

Bởi vì tất cả các timestep có cùng nhiễu Gaussian, kí hiệu £ sử dung chung cho toàn bộ timesteps Việc sinh mẫu xr có thé dùng phân phối sau: x, ~ đ(X, | Xo) = V (x3 v,Xo,(1— ð,)) (2.22)

Biến latent x, có thể được lấy mau ở bat kì timestep Mục tiêu của việc tính này là giúp việc tính hàm loss L, dé dàng hơn ở bước sau Tham số phương sai , có thể được cố định như một hằng số hoặc được chọn như một lịch trình qua T timesteps Thực tế, lịch trình phương sai có thể là dạng tuyến tinh, bậc hai, cosine, Tác giả của DDPM ban đầu khởi tạo một lịch trình tuyến tính gia tăng từ Bj~4 đến Br=0.02.

Hình 2.13: Quá trình forward diffusion.[1]

Khi T — ©, biến latent x, gần như là phân phối Gaussian đẳng hướng Do vậy nếu quan lí được việc học phân phối nghịch đảo q(x;|x;_¡), có thể lay mẫu xt từ phân phối chuẩn N(0, I). Thực hiện quá trình “Reverse diffusion” sẽ tạo ra được điểm dữ liệu từ phân phối dữ liệu gốc. Quá trình “Reverse diffusion” được xấp xỉ bởi một mạng nơ-ron Thực tế, q(,_ ¡ |x;) là không biết, việc ước lượng thống kê q(xlx;_¡) rất khó, yêu cầu nhiều tính toán liên quan đến phân phối dữ liệu Thay vì đó, xấp xỉ q(,_ ¡lx;) với một mô hình tham số hoá pg (mạng nơ-ron) Vì q(x;|x;_1) là Gaussian với , đủ nhỏ nên pạ là Gaussian với tham số hoá trung bình và phương sai.

Po (Xr—1 | Xr) = VM (X15 Hạ (X10) , Oo (X15) (2.23)

2.3 Bài toán Text-to-Image

Nếu áp dụng công thức nghịch đảo cho tất cả các timesteps pa(zxg:r) hay gọi là quỹ đạo, ta có thể đi từ x; đến phân phối dữ liệu:

Bằng cách điều chỉnh thêm mô hình ở timestep t, mô hình sẽ học cách dự đoán các tham số Gaussian (bao gồm trung bình tạ(x;,t) và ma trận hiệp phương sai >ạ(x,,t) đối với mỗi timestep. Huấn luyện mô hình diffusion có một điểm giống VAEs (Variational autoencoders) ở việc kết hợp q và p Huấn luyện mô hình là đi tối ưu hàm âm log-likelihood của dữ liệu huấn luyện Sau nhiều bước tính toán, việc tối ưu đưa về xét bất phương trình “evidence lower bound” (ELBO) như sau: log p(x) = (xo) [log po (Xo | XI)]—

Dx (q(Xr | Xo) ||P (Xr)) — ii ằ “q(x; |xo) [Dx (q (Xa | Xr, X0) bo (Xr-1 | x;))] (2.24)

Eq(x1 | xo)[logpaŒxi | xo)] là thành phan tái dựng lại giống ELBO của VAE Ðg¿(qŒ7 | xo)

|| p(xr)) biểu diễn cách x, tiến đến chuẩn Gaussian, toàn bộ thành phần này không phải là các tham số có thể huấn luyện nên sẽ bị phất lờ khi diễn ra quá trình huấn luyện toàn bộ M2 T1 liên quan đến L,, đánh giá sự khác nhau giữa các denoising steps pg(x;—1 | x;) và các steps được xp xỉ qŒ_1 | x1, xo).

Thông qua ELBO, việc cực đại hoa likelihood có được là học từ các bước denoising L; Từ nhiễu để tạo ra ảnh nếu coi xo như ảnh tham chiếu Ta có thể lay mau x; ở cấp độ nhiễu thứ t với điều kiện xo khi đặt a, = 1 — , và & = [ẽ_o Gs.

2.3 Bài toán Text-to-Image

Nếu áp dụng ELBO, nhìn dưới góc độ reparameterization trick , xọ có thể biểu diễn khi £ ~>.F(0.1) như sau: xy = z (w- VI-Ge) (2.26)

Kết hợp 2 phương trình trên, mục tiêu cần tính là fi, chi phụ thuộc vào x; có thể biểu diễn lại như sau khi xét trên mỗi timestep.

Từ đó, một mạng nơ-ron £ạ(x;,t) được sử dung để xấp xi £:

Ham loss (thành phan denoising trong ELBO) có thể viết như sau:

20, (1— ỉ,) ||ỉa || Điều này cho thấy hiệu quả của việc thay vì dự đoán trung bình của phân phối, mô hình sẽ

(2.29) dự đoán nhiễu € ở mỗi timestep t Ho et.al vào năm 2020 đã có một vài phép đơn giản hoá thành phan loss thực tế khi bỏ đi thành phan trọng số Phiên bản này cho thấy vượt trội hơn toàn bộ mục tiêu:

13 = Base |[£ se (vãxo+ VT ae) |] 2.30) 2

Các tác giả cho rằng tối ưu mục tiêu trên sẽ đơn giản hơn đi tối ưu mục tiêu ELBO ban dau. Kiến trúc mạng sử dụng cho quá trình “Reverse diffusion” là U-Net Kiến trúc U-Net có tính đối xứng với input va ouput cùng kích thước không gian bằng cách sử dung “skip connections” giữa encoder va decoder blocks tương ứng chiều đặc trưng Ảnh đầu vào giảm kích thước và sau đó tăng kích thước lại bằng kích thước ban đầu Trong mỗi residual block của U-Net, Positional

Embedding theo hàm sin được thêm vào ở mỗi timestep t.

Khia cạnh chủ yếu của việc tạo sinh ảnh là điều kiện hoá xử lí lấy mẫu cho việc điều khiển các mẫu được tao ra Van dé này liên quan đến “guided diffusion” Về mặt toán học, chỉ dẫn liên quan đến việc điều kiện hoá phân phối dữ liệu tiền nhiệm p(x) với điều kiện y Nhãn lớp hay embedding của ảnh hoặc văn bản sẽ có kết quả là p(xly) Công thức điều kiện hoá thông tin y ở mỗi diffusion step có thể viết như sau:

2.3 Bài toán Text-to-Image input image tile output

{-{-] a => conv 3x3, ReLU copy and crop

` Sy 1024 435 & 4 up-conv 2x2 hờn => conv 1x1

Po (Xo:T | y) = pe (X7) | | Po (%-1 | Xr.) (2.31) t=1 Điều kiện hoá ở mỗi timestep là sự chứng minh cho các mau tốt từ một “text prompt” Nhìn chung, các mô hình “guided diffusion” hướng đến việc học V logpạ (x | y) Nếu áp dụng định lý Bayes, ta có thể viết là:

= Vx, log po (Xr) + Vx, log (pe (y | x)

Gradient của V;, chỉ tinh theo x, nên p(y) được loại bỏ Việc biến đổi phương trình trên

Vx, log po (X, | y) = Vx, log (Poe ro) U15) Po ) X x

(2.32) còn áp dụng log(ab) = log(a) + log(b) Nếu thêm dai lượng điều hướng s “guidance scalar’, ta có công thức sau:

V log po (x: | y) = Vlog po (x) + s- Vlog (pe (y | Xr) (2.33)

Stable Diffusion 2 0 0.0020 HQ HQ 00000 32

Giới thiệu về Stable Diffusion và kỹ thuật chuyển đổi Text-to-Image

“Latent diffusion models” dựa trên ý tưởng đơn giản là thay vì áp dụng trực tiếp xử lí diffusion với input có số chiều cao, ta sẽ chiếu input vào không gian latent nhỏ hơn và áp dụng diffusion Rombach dé xuất dùng mang encoder để mã hoá input vào biểu diễn latent z; = g(x). Giảm số lượng tính toán của các mô hình diffusion bằng cách xử lí input với không gian chiều thấp hơn Sau đó, mô hình diffusion chuẩn (U-Net) được áp dụng để tạo dữ liệu mới, dữ liệu này được upsampling bởi mang decoder Nếu loss cho mô hình diffusion điển hình có dạng như này:

Nếu giả sử có encoder E và biểu diễn latent z, loss cho mô hình latent diffusion là:

Stable Diffusion ban đầu tao ra một biểu diễn vector của một hình ảnh được mô tả trong đoạn văn bản gợi ý Sau đó, biểu diễn này được mở rộng để tạo ra một hình ảnh có độ phân giải cao Việc Stable Diffusion sử dụng biểu diễn hình ảnh thay vì tạo trực tiếp các hình ảnh có độ

2.3 Bài toán Text-to-Image phân giải cao giúp hiệu quả về chỉ phí tính toán Việc thực hiện hầu hết các tính toán trên biểu diễn, dưới dạng compact, giảm đáng kể chỉ phí tính toán trong khi vẫn duy trì chất lượng hình ảnh cao Biểu diễn hình ảnh bắt đầu từ một nhiễu ngẫu nhiên và được làm tinh tế qua nhiều bước thời gian để đạt được biểu diễn hình ảnh cho văn bản của bạn Số timesteps là một siêu tham số được xác định trước thường được đặt là 50.

Quá trình tạo ra hình ảnh của Stable Diffusion gồm ba bước chính: Text Representation Generation là bước đầu tiên Stable Diffusion chuyển đổi một đoạn văn bản thành một biểu diễn vector văn bản để hướng dẫn quá trình tạo ra hình ảnh Text Encoder là mô hình CLIP được huấn luyện trước dé sinh ra text embedding có chứa thông tin liên quan tới đặc trưng ảnh Image Representation Refining là bước thứ hai xử lí bắt đầu từ nhiễu ngẫu nhiên, Stable Diffusion lọc biểu diễn hình ảnh từng ít một, với sự hướng dẫn của biểu diễn văn bản tương ứng Stable

Diffusion lặp lại quá trình lọc qua nhiều timesteps bao gồm forward và denoising với mang Unet Image Upscaling là bước cuối cùng mở rộng biểu diễn hình ảnh để tạo ra một hình ảnh có độ phân giải cao. f3 @ Generated Image

Random noise T3 rs ©) Prompt Selector at timestep 0 —- -Š

1 a cute and adorable bunny, with h huge clear eyes, holding a bunch of Text : thao Image & Upscale flowers, in the style of cute pixar ——* Representation ——— Representation - TS: character Generator Guidance for Refiner

@ Representation spiderman in space @ calm winter night, Thomas

Hình 2.17: Quá trình xử lí của mô hình Stable Diffusion Text-to-Image.[ 12]

Inpainting là kỹ thuật thay thế hoặc chỉnh sửa các vùng cụ thể của hình ảnh Tính chất này giúp khôi phục hình ảnh như loại bỏ các khiếm khuyết và hiện vật hoặc thậm chí thay thế một vùng hình ảnh bằng một cái gì đó hoàn toàn mới Inpainting dựa vào mask để xác định vùng nào của hình ảnh cần điền vào; vùng inpainting được biểu thi bang pixel trắng và vùng cần giữ được biểu thị bằng pixel đen Các pixel màu trắng được thiết kế với prompt.

2.3 Bài toán Text-to-Image

Hình 2.18: Mô tả cách tạo ảnh của Stable Diffusion Inpainting.

Bản chất Stable Diffusion Inpainting là mô hình latent diffusion được finetuning trên các ảnh 512x512 được inpainting Điều này giúp cho việc sinh ảnh nhanh và chất lượng cao khi inference Trong pipeline xử lí của mô hình, ảnh được tạo dựa trên việc truyền ảnh gốc, ảnh mask và câu prompt.

Giới thiệu phiên bản 2 và biến thể XL

Stable Diffusion Text-to-Image V2 là mô hình tạo sinh được phát triển bởi Stability AI ra mắt vào tháng 11 năm 2022 Phiên bản V2 tốt hơn VI ở chỗ kết hợp các đặc trưng và kha năng để tạo ra các hình ảnh có độ phân giải cao bằng việc dùng prompts và mô tả Nếu ở phiên bản

V1 text encoder là CLIP thì V2 text encoder là OpenCLIP Mô hình OpenCLIP giúp quá trình tạo sinh ảnh bằng việc dùng mô tả ngôn ngữ tự nhiên, mô hình mới có thể sinh ra hình ảnh với độ phân giải 512x512 hoặc 768x768 pixels được huấn luyện trên bộ dữ liệu LAION-5B.

Phiên bản V2 của Diffusion có khả năng thực hiện nhiều text prompts phức tap và dài hơn mà không làm mất sự mach lạc hoặc trung thực Các tính năng trên có được nhờ cơ chế attention và lượng từ vựng lớn của OpenCLIP Stable Diffusion V2 còn có một đặc tinh mới là ‘negative prompt’ cho phép người dùng chỉ định cụ thể những thứ không muốn có trong hình ảnh đầu ra.

So với VI, V2 có khả năng tạo ra hình ảnh chất lượng cao với việc kiểm soát được nội dung và phong cách bởi latent diffusion framework và OpenCLIP text encoder Mô hình có khả năng tận dung các mô hình được huấn luyen trước mà không cần data augmentation hoặc fine-tuning.

Diffusion VI không hỗ trợ ‘negative prompts’, do đó người dùng không thể đưa ra bất kì mô tả nào về những gì mong muốn loại trừ chỉ tiết trong ảnh được tạo ra Các nhà nghiên cứu cho rằng VI thích hợp cho những người muốn tạo ra ảnh liên quan đến hình ảnh con người và

2.3 Bài toán Text-to-Image văn hoá đại chúng, trong khi đó V2 thích hợp tạo hình ảnh có tính kiến trúc, nội thất hoặc cảnh quan khác.

Stable Diffusion XL (SDXL) là mô hình tạo văn bản thành hình ảnh mạnh mẽ, tương tự các mô hình Stable Diffusion trước đó theo một số thay đổi như UNet lớn hơn gấp 3 lần và SDXL kết hợp text encoder thứ hai (OpenCLIP ViT-bigG/14) với text encoder gốc để tăng đáng kể số lượng tham số Kích thước ảnh được điều chỉnh với crop để bảo vệ dữ liệu huấn luyện không bị loại bỏ và kiểm soát hơn đối với cách cắt xén hình ảnh được tạo Mô hình hai giai đoạn tạo ra hình ảnh làm đầu vào cho mô hình tinh chỉnh để bổ sung thêm các chỉ tiết chất lượng cao. Bằng cách điều chỉnh tọa độ crop, SDXL tự động xác định không crop - tọa độ (0, 0) - thường tương quan với các đối tượng được căn giữa và khuôn mặt hoàn chỉnh Bởi việc dùng 2 encoders, SDXL có thể truyền vào mỗi câu prompt tương ứng với mỗi encoder, điều này có thể giúp cải thiện chất lượng ảnh đầu ra SDXL là model khá lớn, việc tối ưu bộ nhớ là điều rất quan trọng, mô hình khi được gọi có thể dùng offload CPU để tránh tràn bộ nhớ.

MỘT SỐ PHƯƠNG PHÁP TOI UU HÓA

3.1 Tổng quan we r ƒ Compressed Model | Lite Model ———.|

_ |Android + ue Compressed Model —— He Bons = P3 ios a —— | per |

Hình 3.1: Framework dé xuất triển khai ứng dung của chúng tôi trong bài toán chuyển đổi phong cách ảnh.

Trong khóa luận này, chúng tôi tập trung vào giải quyết bài toán chuyển đổi ảnh sang phong cách nghệ thuật dựa trên 2 hướng chính là Image-to-Image và Text-to-Image tập trung vào tối ưu chi phí và khả năng tính toán Phạm vi được định nghĩa rõ ràng hơn trong Image-to-Image

Quantization đối với NST, Transformer va Diffusion

Dynamic Quantization ẶẶ Ặ ẶẶẶ 38

Lượng tử hóa mang có nghĩa là chuyển đổi nó để sử dung biểu diễn số nguyên có độ chính xác thấp hơn cho các trọng số và/hoặc kích hoạt Điều này giúp tiết kiệm kích thước mô hình và cho phép sử dụng các phép toán thông lượng cao hơn trên CPU hoặc GPU của bạn Khi chuyển đổi từ giá trị dấu phẩy động sang giá trị số nguyên, về cơ bản bạn đang nhân giá trị dau phẩy động với một hệ số tỷ lệ nào đó và làm tròn kết quả thành số nguyên Các cách tiếp cận lượng tử hóa khác nhau khác nhau ở cách chúng tiếp cận việc xác định hệ số tỷ lệ đó. Ý tưởng chính của lượng tử hóa dynamic là xác định hệ số tỷ lệ cho các lần kích hoạt một cách linh hoạt dựa trên phạm vi dif liệu được quan sát trong thời gian chạy Điều nay đảm bảo rằng hệ số tỷ lệ được “điều chỉnh” để giữ lại càng nhiều tín hiệu càng tốt về mỗi tập dữ liệu được quan sát Mặt khác, các tham số mô hình được biết đến trong quá trình chuyển đổi mô hình và chúng được chuyển đổi trước thời hạn và được lưu trữ ở dạng INTS Số học trong mô hình lượng tử hóa được thực hiện bằng cách sử dụng các lệnh INT8 được vector hóa Việc tích lũy thường được thực hiện với INT16 hoặc INT32 để tránh tràn Giá trị có độ chính xác cao hơn này được thu nhỏ lại thành INT§ nếu lớp tiếp theo được lượng tử hóa hoặc chuyển đổi thành FP32 cho đầu ra Lượng tử hóa dynamic tương đối không có tham số điều chỉnh, điều này rất phù hợp để thêm vào quy trình sản xuất như một phần tiêu chuẩn trong quá trình chuyển đổi mô hình gốc sang triển khai nén.

Việc thực hiện lượng tử hóa để chuyển từ float32 sang float16 khá đơn giản vì cả hai loại dữ liệu đều tuân theo cùng một sơ đô biểu diễn CPU Intel đã hỗ trợ float16 làm loại lưu trữ, nhưng việc tính toán được thực hiện sau khi chuyển đối sang float32 Hỗ trợ đầy đủ sẽ xuất hiện ở dòng CPU Cooper Lake và Sapphire Rapids Giá trị của epsilon trong LayerNorm thường rất nhỏ (~ 1e-12), nhưng giá trị biểu thị nhỏ nhất trong float16 là ~ 6e-5, điều này có thể gây ra sự cô NaN Điều tương tự cũng áp dụng cho các giá trị lớn.

Việc thực hiện lượng tử hóa để chuyển từ float32 sang int8 khó khăn hơn Chi có 256 giá tri có thể được biểu thị trong int8, trong khi float32 có thể biểu thị một phạm vi giá trị rat rộng Ý tưởng là tìm ra cách tốt nhất để chiếu phạm vi [a, b] của các giá trị float32 vào không gian int8.

Floatl6 Quantization 2 2 ee 38 3.2.3 Int8 Quantization 2 ee 38

Sơ đồ lượng tử hóa affine: x = Sx (xg —Z) xạ = round(x/S+Z) (3.1) xạ = clip(round(x/S + Z),round(a/S + Z),round(b/S+Z)) x, là giá trị int8 được lượng tử hóa gắn với x, S và Z là các tham số lượng tử hóa, S là thang đo và là số dương float32, Z được gọi là điểm 0, nó là giá trị int8 tương ứng với giá trị 0 trong vùng float32 Điều này rất quan trọng để có thể biểu thị chính xác giá trị 0 vì nó được sử dụng ở mọi nơi trong các mô hình học máy.

GAN Compression là phương pháp nén mô hình GANs có điều kiện, ý tưởng chính của phương pháp là làm giảm các tính toán của mô hình GAN truyền thống được sử dụng phổ biến như Pix2Pix, CycleGAN và GauGAN từ 9 đến 21 lần phép tính trong khi vẫn đảm bảo được độ trung thực về mặt hình ảnh Hai thách thức lớn nhất của các mô hình tạo sinh khi nén là không ổn định khi huấn luyện và đặc biệt là huấn luyện với bộ dữ liệu không theo cặp, mạng generators cũng khác cách CNN nhận diện, rất khó khăn trong việc dùng lại các thiết kế CNN. Để giải quyết vấn đề này, các nhà nghiên cứu cô gắng chuyển đổi tri thức từ các biểu diễn trung gian của Teacher Generator đến các layers tương ứng đến Student Generator được nén.

Decouple ez Training and Search = gì

Pre-trained Teacher Generator G’ ị Evolution

Hình 3.2: Framework GAN Compression. Ở bước thứ nhất, với mang teacher generator G’ được huấn luyện, tiến hành chat lọc mạng student generator G chứa tất cả số lượng các kênh có thể thông qua cơ chế weight sharing Việc chọn số lượng các kênh diễn ra ở từng training step Bước 2, một lượng sub-generators được trích xuất và được đánh giá hiệu suất, không có sự huấn luyện lại khi trích xuất Bước cuối

GANCompression 2.00.00 ee ee 39

Sơ đồ lượng tử hóa affine: x = Sx (xg —Z) xạ = round(x/S+Z) (3.1) xạ = clip(round(x/S + Z),round(a/S + Z),round(b/S+Z)) x, là giá trị int8 được lượng tử hóa gắn với x, S và Z là các tham số lượng tử hóa, S là thang đo và là số dương float32, Z được gọi là điểm 0, nó là giá trị int8 tương ứng với giá trị 0 trong vùng float32 Điều này rất quan trọng để có thể biểu thị chính xác giá trị 0 vì nó được sử dụng ở mọi nơi trong các mô hình học máy.

GAN Compression là phương pháp nén mô hình GANs có điều kiện, ý tưởng chính của phương pháp là làm giảm các tính toán của mô hình GAN truyền thống được sử dụng phổ biến như Pix2Pix, CycleGAN và GauGAN từ 9 đến 21 lần phép tính trong khi vẫn đảm bảo được độ trung thực về mặt hình ảnh Hai thách thức lớn nhất của các mô hình tạo sinh khi nén là không ổn định khi huấn luyện và đặc biệt là huấn luyện với bộ dữ liệu không theo cặp, mạng generators cũng khác cách CNN nhận diện, rất khó khăn trong việc dùng lại các thiết kế CNN. Để giải quyết vấn đề này, các nhà nghiên cứu cô gắng chuyển đổi tri thức từ các biểu diễn trung gian của Teacher Generator đến các layers tương ứng đến Student Generator được nén.

Decouple ez Training and Search = gì

Pre-trained Teacher Generator G’ ị Evolution

Hình 3.2: Framework GAN Compression. Ở bước thứ nhất, với mang teacher generator G’ được huấn luyện, tiến hành chat lọc mạng student generator G chứa tất cả số lượng các kênh có thể thông qua cơ chế weight sharing Việc chọn số lượng các kênh diễn ra ở từng training step Bước 2, một lượng sub-generators được trích xuất và được đánh giá hiệu suất, không có sự huấn luyện lại khi trích xuất Bước cuối

3.4 Model Prumning đối với NST cùng, sub-generator tốt nhất được chọn với mục tiêu tỉ lệ nén hay hiệu suất nén tối ưu bằng phương pháp brute-force hoặc evolutionary search.

Model Prunning đối với NST 0.0.0.0 ee 40

Một số thuật toán tỉamạngnơ-ron 4I 3.4.4 Finetuning trong quá trìnhtỉa

Trong khoảng thời gian gần đây, việc phát triển thuật toán tỉa mạng nơ-ron đã thu được sự chú ý đến từ cộng đồng nghiên cứu Rat nhiêu thuật toán cắt tia mạng nơ-ron đã ra đời nhằm dat được tỉ lệ nén lớn hơn mà vẫn đảm bảo được Accuracy gốc của mô hình Một số phương pháp có thể được kể đến như sau: ằ Phương phỏp tỉa ngẫu nhiờn

* Phương pháp loại bỏ biến thé (Variational dropout)[16] ¢ Su dụng hàm phạt như hàm Lọ hoặc hàm Hoyer[26] ô Tớnh xấp xỉ biến bậc 2 bằng phương phỏp WoodFisher[23] ô Phương phỏp giới thiệu lại trọng số mụ hỡnh bằng cỏch Gian lận xổ số (Rigging the

* Phương pháp tỉa tăng dan tỉ lệ (Gradual Magnitude Pruning)[8]

3.4.4 Finetuning trong quá trình tỉa

Sau khi thực hiện công việc tia mạng nơ-ron, mô hình bao giờ cũng sẽ có một Accuracy Loss nhất định so với mô hình ban đầu Để hạn chế vấn đề này, chúng ta thường sẽ huấn luyện lại một mô hình sau khi tỉa nhằm khôi phục lại một phần Accuracy đã bị thất thoát Từ đó, chúng ta

3.4 Model Prunning đối với NST có một quy trình tia hoàn chỉnh sẽ là Pruning - Training - Lap lại (đây còn được gọi là Iterative

Pruning) Nếu mô hình bị tỉa quá nhiều trong một đợt tỉa, Accuracy Loss của mô hình tăng lên, dẫn đến mạng bị hư hỏng nặng nề và khó có thể khôi phuc.[18] © Pruning © Pruning+Finetuing @ Iterative Pruning and Finetuing

Pruning Ratio (Parameters Pruned Away)

Hình 3.4: So sánh Accuracy Loss giữa mô hình chi Pruning, Pruning có Finetuning va Iterative

Pruning có Einetuning với các tỉ lệ tỉa nhất định (Nguồn: hanlab.mit.edu)

THỰC NGHIỆM VÀ TRIỂN KHAI

Phương thức đánh giá .ẶẶ Ặ Q Q Q Q Q Q S 43

Đánh giá dựa trên chất lượng ảnh

Content Loss và Style Loss

Tương tự như hàm mất trong hồi quy tuyến tính, content loss đo lường sự khác biệt về đặc điểm nội dung giữa hình ảnh tổng hợp và hình anh content thông qua hàm mat bình phương. Hai đầu vào của hàm mất bình phương đều là đầu ra của content layer được tính toán bởi hàm trích xuất đặc trưng.

Style loss, tương tự như content loss, cũng sử dụng hàm mắt bình phương để đo sự khác biệt về kiểu giữa hình ảnh tổng hợp và hình ảnh style Để biểu thị đầu ra kiểu của bat kỳ lớp kiểu nào, trước tiên chúng ta sử dụng hàm trích xuất đặc trưng để tính toán đầu ra của style layer.

Gram Matrix [4.1] sử dụng tích vô hướng, và style loss tính dựa trên loss bình phương của Gram

Matrix của ảnh style và ảnh đầu ra Cuối cùng ta sẽ xét loss tổng của content loss và style loss tương ứng với các hệ số a, B [4.2] Loss này càng tối ưu về 0 thể hiện kết quả đầu ra càng tốt, tức là nội dung giống ảnh content và được style hoá theo ảnh style.

GramMatrix(A) = A xAT (4.1) Lrotat = OLcontent + BL style (4.2)

Khoảng cách Frechet Inception (hay FID) là phương pháp đánh giá tiêu biểu cho bài toán chuyển đổi ảnh FID được đánh giá dựa trên các đặc trưng cấp cao đến từ kiến trúc InceptionV3 được huấn luyện trên tập ImageNet Giá trị FID thể hiện sự tương đồng giữa hai phân bó, ảnh thật và ảnh được tạo ra Giá trị càng thấp thể hiện chất lượng của ảnh tạo ra càng tốt và càng giống ảnh thật, đồng nghĩa khi hai phân bố hoàn toàn giống nhau thì có giá trị FID = 0 Đầu tiên, các tập ảnh thật và giả được lần lượt được truyền vào kiến trúc IncpetionV3 để tính toán ra một vector đặc trưng với 2048 chiều Gọi (ur, Zp) là giá trị trung bình và hiệp phương sai của tập anh thật và (tr, >r) với tập ảnh được tạo ra FID sẽ so sánh sự sai khác của giá tri trung bình và hiệp phương sai giữa hai phân bố Công thức của FID được viết trong Biểu thức 4.3, với

Tr (Trace) là tổng các phần tử trên đường chéo chính của ma trận vuông trong đại số tuyến tính. d(R,F) = || Ur — Me ||? + Tr(#e + Erg — 2/SeXr) (4.3)

CLIP Score Điểm CLIP là số liệu đánh giá mối tương quan giữa chú thích được tạo cho hình ảnh và nội dung thực tế của hình ảnh Nó được cho rằng là có mồi tương quan cao với sự xem xét của con người Với E là embeddings, I là Image, C là caption, score được xác định là:

CLIP Score nằm trong khoảng từ 0 đến 100, càng gần 100 thì thể hiện ảnh được sinh ra có tính giống với câu text đầu vào.

4.1.2 Đánh giá dựa trên yêu cầu tài nguyên phan cứng và thời gian thực hiện Để thực hiện đánh giá lưu lượng sử dụng tài nguyên phần cứng máy tính của một mô hình, chúng tôi sẽ đánh giá dựa trên các tiêu chí sau: ằ Thời gian để cho mụ hỡnh đú thực hiện việc chuyển đổi phong cỏch ảnh

* Lưu lượng RAM tối đa cần thiết để cho mô hình đó vận hành ¢ Kích thước dung lượng lưu trữ mô hình

* Một số tiêu chí khác như khả năng vận hành mô hình trên GPU và trên điện thoại

Nhằm mục đích thống kê kết quả thực nghiệm, chúng tôi sử dụng 2 máy tính Máy tính thứ nhất là laptop MacBook Pro 14 inch (2021) và máy tính thứ hai là một chiếc máy tính để bàn.

Lý do chúng tôi sử dụng 2 thiết bị khác nhau là nhằm mục đích thử nghiệm mô hình trên 2 kiến trúc CPU khác nhau là x86 (cụ thể hơn là x86-64!) và ARM? do kết quả thực thi có thể khác nhau với cách các kiến trúc CPU này xử lý tính toán Để cho dễ gợi nhớ, chúng tôi sẽ gọi máy tính thứ nhất là máy 1 hoặc Mac và máy tính thứ hai là máy 2.

Sau đây là cấu hình của máy tính thứ nhất để thử nghiệm model trên kiến trúc ARM:

* CPU/GPU: Apple M1 Pro (10 lõi CPU và 16 lõi GPU) ¢ RAM: 16GB Unified Memory

* Bộ nhớ: 1TB SSD ằ Hệ điều hành: macOS Sonoma 14.0 Sau đây là cau hình của máy tính thứ hai để thử nghiệm model trên kiến trúc x86:

* RAM: 32GB DDR4 3200MHz ¢ Bộ nhớ: Kingston SNV2S 500GB ¢ GPU: Nvidia GeForce GTX 1660 Super 6GB ằ Hệ điều hành: Windows 11 Pro version 23H2 hoặc Linux Mint 21.2 Victoria

Cả 2 thiết bi này sé sử dung Python 3.9.18 cùng với Tensorflow 2.15.0 va PyTorch 2.1.2 làm môi trường để thử nghiệm mô hình chuyển đổi phong cách ảnh Riêng nền tang Linux sẽ sử dụng Tensorflow 2.13.1 do card đồ họa chúng tôi đang sử dụng gặp phải một số van dé với phiên bản 2.15.0 dẫn đến không thể sử dụng được GPU cho phiên bản này. Đối với máy tính thứ hai, chúng tôi ưu tiên sử dụng Windows trong quá trình thực nghiệm với mục đích nhằm mô phỏng trải nghiệm của người dùng cuối khi sử dụng các mô hình chuyển đổi phong cách ảnh trên nền tảng phổ biến nhất hiện nay và được rất nhiều người tiêu dùng ưa chuộng Chúng tôi đồng thời cũng sẽ sử dụng Linux để thử nghiệm các mô hình trong trường

!Đây là phiên bản mở rộng 64-bit của kiến trúc x86 của Intel, được phát triển bởi AMD và đang có mặt trong các CPU x86 hiện nay.

?Kiến trúc CPU được phát triển bởi chính công ty cùng tên, xuất hiện trên gần như tất cả các điện thoại thông minh đang có mặt trên thị trường hiện nay cùng với một số máy tính Windows và tất cả các máy tính Mac từ cuối năm 2020 trở đi Trong một số tài liệu, kiến trúc này được gọi là AArch64 do hiện nay tất cả các máy tính có CPU sử dụng kiến trúc này đều đã hỗ trợ 64-bit.

4.1 Phương thức đánh giá hợp Windows không vận hành được chúng Lý giải cho điều này, Linux là một trong những nên tảng được nhiều nhà Khoa học Máy tính chọn làm môi trường phục vụ các công việc liên quan đến tính toán và trí tuệ nhân tạo nhờ có khả năng hỗ trợ tốt các thư viện có tận dụng được Low-level I/O (macOS cũng hỗ trợ điều này) Điều này dẫn đến cách thư viện dùng cho các mô hình trí tuệ nhân tạo hiện nay đều sẽ hỗ trợ đầy đủ trên Linux trước khi phát hành trên Windows. Chính vì thế chúng tôi tin rằng nếu Windows vận hành được các mô hình chuyển đổi phong cách ảnh đã được dé cập thi Linux cũng có thể làm được điều tương tự hay thậm chí tốt hơn. Đối với một số mô hình được chọn, chúng tôi đồng thời cũng sẽ thử nghiệm các mô hình của chúng tôi trên máy tính thứ 3 với cấu hình sau đây:

* CPU: Intel Core i7-6500U (2 16i/4 luồng) ¢ RAM: 8GB DDR3L 1600MHz ¢ Bộ nhớ: Western Digital Blue 3D NAND SSD 250GB ¢ GPU: Intel HD Graphics 520 va Nvidia GeForce 930M 4GB ằ Hệ điều hành: Windows 10 Home version 22H2 hoặc Linux Mint 21.2 Victoria

Câu hình máy tính này sé đại diện do dai da số người tiêu dùng hiện nay khi van còn rất nhiều người vẫn còn sử dụng máy tính với cấu hình từ khoảng 3-7 năm về trước Dung lượng bộ nhớ RAM của thiết bị cũng là một con số khá là phổ biến trên khá nhiều máy tính phổ thông trong vài năm trở lại đây Một điều cần lưu ý ở thiết bị này là nó được trang bị card đồ họa rời Nvidia GeForce 930M, một loại phần cứng mà thường không được thấy trên các máy tính ở phân khúc tầm trung - thấp Card đồ họa này đóng vai trò rất quan trọng trong việc tăng tốc tính toán, cho phép các mô hình được vận hành nhanh hơn và hiệu quả hơn Đồng thời, việc card đồ họa này được trang bị 4GB cũng rất quan trọng với chúng tôi bởi đây chính là mức dung lượng VRAM thường thấy trên các card đồ họa như GTX 1050Ti, GTX 1650, RTX 3050 và RTX 3050Ti (phiên ban Mobile) Chúng điều là những chiếc card đồ họa xuất hiện trên rất nhiều trên các laptop Gaming và một số laptop Multimedia ở phân khúc cao cấp và cận cao cấp Đối với nên tang Windows, máy sẽ chỉ được cài đặt Windows 10 thay vì Windows 11 do CPU của thiết bị không nằm trong danh sách các CPU hỗ trợ chính thức cho Windows 11[15] Chúng tôi sẽ chỉ đo thời gian vận hành mô hình trên thiết bị này với mục đích thử nghiệm khả năng các mô hình có thể vận hành trên các máy tính cũ, việc đo lưu lượng RAM trên thiết bị này là hoàn toàn không cần thiết bởi điều này đã được thực hiện trên máy 2 trên cùng nền tảng đó Đồng thời,

Tại thời điểm bài viết được phát hành, RTX 3050 cũng có thêm biến thể dành cho máy tính để bàn với 8GB

VRAM (hoặc 6GB với phiên ban sau này) thay vì 4GB như trên Laptop RTX 3050Ti hiện tại không có mặt dành cho máy tính để bàn.

4.2 Kế hoạch triển khai và xây dựng ứng dụng việc thực nghiệm các mô hình trên thiết bị này sẽ được dé cập ở một phần riêng thay vì dé cập cùng với 2 thiết bị kể trên Máy tính sẽ được cắm sạc trong suốt quá trình thực nghiệm.

4.1.3 Đánh giá dựa trên số lượng bau chon của người dùng

Trong khoá luận này, nhóm chúng tôi sẽ tạo một biểu mẫu Google Form và lấy khảo sát của

50 người Từng hình ảnh tương ứng với kĩ thuật trước và sau khi nén sẽ được gửi tới người đánh giá, điểm số bình chọn từ 1 đến 5 theo mức độ yêu thích Tiêu chí ở đây yêu cầu người bình chọn là nếu trong trường hợp NST, Transformer và GANs thì người dùng căn cứ vào ảnh kết quả có nội dung của ảnh gốc hay không, tiếp đến là phong cách của ảnh kết quả có một ít chỉ tiết từ ảnh phong cách không Đối với Stable Diffusion Text-to-Image, người dùng sẽ đánh giá hình ảnh có những tính chất giống với câu text khoảng trên 70% thì ưu tiên đánh giá cao nhất. Với Stable Diffusion Inpainting thì người dùng chỉ cần xem object bị thay thế vào phần mask có giống với câu prompt đưa ra hay không.

4.2 Kế hoạch triển khai và xây dựng ứng dụng

4.2.1 Kế hoạch triển khai ứng dung

Kế hoạch triển khai ứng dụng

Với mục đích của dé tài là tối ưu mô hình chuyển đổi phong cách ảnh và cho phép chúng vận hành với ít tài nguyên cần thiết hơn so với mô hình ban đầu, việc triển khai ứng dụng là một việc hoàn toàn cần thiết để có thể cho thấy được mức độ hiệu quả của các phương pháp nén mô hình khi được áp dụng vào các mô hình chuyển đổi phong cách ảnh Trong bài viết này, chúng tôi sẽ xây dựng ứng dụng và thử nghiệm các mô hình chuyển đổi phong cách ảnh trên máy tính cá nhân và trên nền tảng thiết bị di động đối với một số mô hình nhất định nhằm mục đích cho thấy tiềm năng vận hành của mô hình trên nền tảng đó.

Sau đây là mục đích triển khai mô hình chuyển đổi phong cách ảnh:

* Đối với mô hình Neural Style Transfer, chúng tôi sẽ triển khai Neural Style Transfer truyền thống trên máy tính cá nhân và mô hình Arbitrary Style Transfer sẽ chỉ được triển khai trên thiết bị di động Mục đích của việc làm này là để có thể cho thấy được tiềm năng của mô hình Arbitrary Style Transfer trên thiết bị di động nhờ khả năng tiêu tốn tài nguyên thấp sau khi đã được nén. ¢ Mô hình Transformer được chúng tôi triển khai trên Client kết hợp cả phiên bản chưa tối ưu và tối ưu với lượng tử hoá Dynamic Việc triển khai này nhằm mục đích khai phá tiềm năng của nhóm mô hình mới và là xu hướng hiện nay Bên cạnh đó, nhóm chúng tôi còn quan tâm tối ưu chi phí tài nguyên tính toán.

4.2 Kế hoạch triển khai và xây dựng ứng dụng ¢ GAN&s đặc thù với bài toán một anh sinh | ảnh, lớp mô hình tao sinh được coi là khá khó huấn luyện và triển khai Trong thực nghiệm này, chúng tôi cố gắng triển khai với phương pháp nén chắt lọc tri thức và sử dụng kèm bộ dữ liệu giày và ngựa Mô hình này được phát triển ở mức Client kèm phương pháp nén trên. ô Đối với mụ hỡnh Stable Diffusion Text-to-Image, chỳng tụi sẽ triển khai mụ hỡnh này trờn

Client và đồng thời triển khai nó trên Mobile đối với một số phương pháp nén nhằm cho thấy được khả năng vận hành của mô hình này trên thiết bị di động Mô hình Inpainting của Stable Diffusion sẽ chỉ được phát triển trên nền tảng máy tính cá nhân ở thời điểm hiện tại với dạng lượng tử hóa Float16 và dạng nguyên bản.

Xây dựng ứng dụng dành cho nền tang máy tính cánhân

Để cố gắng phát huy khả năng triển khai các mô hình chuyển đổi phong cách ảnh nghệ thuật trên máy tính cá nhân, chúng tôi đã phát triển một ứng dụng minh họa, cho phép người dùng trải nghiệm chuyển đổi phong cách ảnh thông qua thiết bị máy tính cá nhân Trong bài viết này, chúng tôi sẽ trình bày quá trình phát triển ứng dụng tích hợp mô hình học sâu Tiếp theo, đưa ra mô tả về ứng dụng chuyển đổi phong cách ảnh, mang tên Style Transfer - Transformer (bao gồm STyTr2 và S2WAT), Style Transfer - GANs (bao gồm CycleGAN và Pix2Pix) va Stable Diffusion Inpainting, tiếp theo là nhân mạnh các chức năng chính của nó Trong quá trình này, chúng tôi đã sử dụng ba mô hình quan trọng, đó là Transformer, GANs và Stable Diffusion

Inpainting, sau đó tích hợp chúng vào nền tang máy tính cá nhân với mong muốn mang lại trải nghiệm tốt nhất cho người dùng và tiết kiệm chi phí tính toán. Ứng dụng Style Transfer - Transformer

Hình 4.1: Giao diện ứng dụng chuyển đổi phong cách ảnh sử dụng Transformers

4.2 Kế hoạch triển khai và xây dựng ứng dụng Đối với mô hình Style Transformer (StyTr2), chúng tôi sử dụng 4 thành phần con cấu thành nên mô hình lớn là VGG, decoder, embedding va Transformer Các thí nghiệm này đều được thiết lập tính toán với CPU và chuẩn hoá kích thước ảnh content và style đầu vào là 512x512 Vì thời gian và tài nguyên có hạn nên chúng tôi sử dụng bộ trọng số được train trước đó với bộ dữ liệu COCO 2014, với mục đích là xây dựng ứng dụng triển khai máy tính cá nhân để inference ảnh bắt kì Mô hình S2WAT với module S2WAT đóng vai trò là Transformer Encoder sử dụng số heads lần lượt là 3, 6, 12 nhận kích thước ảnh đầu vào là 224x224 Ngoài ra mô hình còn sử dụng khối decoder, Module chuyển đổi ảnh Việc thực hiện tối ưu mô hình với 2 mô hình transformer trên sử dụng phương pháp Dynamic Quantization với kiểu dif liệu lượng tử là qint8 và tập hợp các layers được lượng tử bao gồm Linear, LSTM, GRU và EmbeddingBag Một giới hạn lớn nhất của lượng tử hoá hậu training ngoài việc kích thước mô hình lớn, cấu hình khó thì van đề về phần cứng tương thích cũng đáng quan tâm Ứng dung được phát triển trên Streamlit với đầu vào là 2 ảnh content và style, đầu ra là ảnh được chuyển đổi phong cách QEngine khi sử dụng triển khai là QNNPack tương thích với mobile CPU.

4 Eager Mode FX Graph Mode Quantization Mode Hardware Kernel Library " ae

Quantization Quantization Support server CPU fbgemm/onednn

Supported All Supported mobile CPU qnnpack/xnnpack

Te RT | Not rt this it server GPU ensoFET (early s Ni a Supported Static Quantization prototype) requires a graph

Hình 4.2: Bang thư viện va Quantization Mode tương thích với từng loại Backend/Phan cứng.

4.2 Kế hoạch triển khai và xây dựng ứng dụng Ứng dụng Style Transfer - GANs

Hình 4.3: Giao diện ứng dụng chuyển đổi phong cách ảnh sử dụng GAN

Phạm vi chúng tôi thực hiện là hai mô hình Pix2Pix và CycleGAN Việc inference trên ứng dụng được thực hiện với CPU và Nvidia-GPU Do giới hạn về thời gian và tài nguyên tính toán, nhóm có sử dụng pretrained từ hai bộ dữ liệu là horse2zebra và edges2shoes để thực nghiệm chuyển đổi phong cách Có hai tuỳ chỉnh cho mỗi mô hình là full và compressed Phương pháp nén ở đây đó là Knowledge Distillation Hai bộ trọng số được train với hai tuỳ chỉnh được lưu dưới dang pkl (pickle file) Ung dụng được xây dựng trên nên tảng Streamlit với đầu vào là ảnh content bat kì, sau đó sé inference ra ảnh phong cách. Ứng dụng Stable Diffusion Inpainting

Ung dung Stable Diffusion Inpainting được xây dựng trên nền tang Streamlit với đầu vào là ảnh ngẫu nhiên được tải lên từ người dùng Ứng dụng được phát triển với 3 chức năng lấy mask của object muốn thay trong ảnh đầu vào, bao gồm Prompt masking, Image file masking va Rectangle masking Prompt masking có tinh năng cho người dùng nhập yêu cau prompt muốn lấy mask phần nào trên ảnh, điều này sẽ được thực hiện với mô hình CLIP được huấn luyện trước đó Image file masking thì cho phép người dùng tương tác chọn vùng trực tiếp trên ảnh đầu vào để lấy masking Rectangle masking là chức năng crop lấy vùng muốn masking, chức năng này cũng bị hạn chế bởi hình dạng thu được có dạng chữ nhật trong khi đó các object bình thường là hình dạng đa dạng bắt kì Phần Preview mask sẽ cho người sử dụng thấy được phần mask sẽ được thay thế có hình dạng như thế nào.

4.2 Kế hoạch triển khai và xây dựng ứng dụng

Upload your input image here

Drag and drop file here

Transforming prompt (Up to 77 characters)

Hình 4.4: Giao diện ứng dung chuyển đổi phong cách ảnh sử dung Stable Diffusion Inpainting

Number of steps là nút chọn diffusion steps cho việc thêm noise và dự đoán noise của thuật toán Diffusion, thường chúng tôi sẽ thiết lập là 50 do tính ổn định và nhiều bài báo dé cập là tốt nhất Phần transforming prompt là phần mà người dùng muốn thay thế object mới vào mask đã lấy ở trên, câu prompt bị giới hạn bởi 77 từ do số chiều quy định của Stable Diffusion Tiếp đến là FP16 mode là sử dụng Float16 Quantization để tăng tốc độ inference của model hoặc CPU offload để dùng CPU tính toán.

4.2.3 Xây dựng ứng dụng dành cho nền tảng thiết bị di động Để cho thấy khả năng vận hành các mô hình chuyển đổi phong cách ảnh nghệ thuật trên nên tảng thiết bị di động, chúng tôi tiền hành thực hiện phát triển một ứng dụng minh họa cho phép người dùng có thể chuyển đổi phong cách ảnh bằng thiết bị di động Đầu tiên chúng tôi sẽ trình bày quy trình phát triển ứng dụng có tích hợp mô hình học sâu Trong phần tiếp theo, chúng tôi giới thiệu một ứng dụng chuyển đổi phong cách ảnh có tên là Image Transformer, đồng thời mô tả các chức năng chính của ứng dụng Trong bài viết này, chúng tôi sẽ sử dụng hai mô hình Neural Style Transfer và Stable Diffusion và đưa chúng lên nền tảng thiết bị di động.

Phương pháp triển khai ứng dụng Để triển khai mô hình cho nền tảng này, các mô hình chuyển đổi phong cách ảnh được chọn sẽ được xử lý như sau:

4.2 Kế hoạch triển khai và xây dựng ứng dụng

* Đối với mô hình Stable Diffusion, chúng tôi trích xuất ba mô hình con là mô hình giải mã ký tự (Text Encoder), mô hình Diffusion và mô hình giải mã hình ảnh (Image Decoder).

Tiếp theo chúng tôi áp dụng phương pháp nén được chọn lên các mô hình, sau đó xuất

2 mô hình Text Encoder va Diffusion sang định dạng TFLite? Đối với Image Decoder chúng tôi chuyển sang định dang ORT? vì một số lý do liên quan đến kiến trúc mô hình không tương thích với TFLite trên nền tảng Mobile Phan Tokenizer của mô hình Stable Diffusion sẽ được tái lập trình cho môi trường thiết bị di động dựa trên mã nguồn của Tensorflow cùng với một file ngữ pháp sẽ được đính kèm trong chương trình nhằm phục vụ cho mô hình vận hành. ằ Đối với mụ hỡnh Neural Style Transfer, chỳng tụi tỏch ra thành 2 mụ hỡnh, một mụ hỡnh nhằm phục vụ trích xuất dif liệu ảnh style (Style Predictor) và một mô hình dùng để chuyển đổi phong cách ảnh (Style Transfer) Cả hai mô hình sẽ được áp dụng phường pháp nén và sau đó xuất ra định dạng TELite để đưa vào thiết bị di động.

Sau khi xử lý xong mô hình chuyển đổi phong cách ảnh, chúng tôi đưa các mô hình đã được xử lý vào trong một ứng dụng di động Chúng tôi chon Flutter làm framework chính để thiết kế và phát triển ứng dụng đi động nhờ khả năng cung cấp một hệ sinh thái phát triển ứng dụng đa nên tảng bằng một mã nguồn duy nhất cùng với cộng đồng đông đảo và hỗ trợ vận hành mô hình học sâu bằng thư viện được cung cấp Điều này giúp chúng tôi giảm được chỉ phí phát triển phần mềm, cho phép chúng tôi phát hành ứng dụng ở hai nền tảng iOS và Android, đồng thời tạo điều kiện mở rộng ra các nền tảng khác trong tương lai như Windows và macOS Ứng dụng cung cấp cho bạn 2 lựa chọn:

* Lựa chọn thứ nhất cho phép chuyển đổi phong cách từ một tam ảnh content và chuyển đổi phong cách ảnh dựa trên ảnh style được cung cấp sẵn trong ứng dụng hoặc do người dùng cung cấp Cả ảnh content và style đều có thể được cung cấp từ thư viện hoặc từ đường dẫn trên mạng Internet (Cần có mạng Internet để thực hiện) Ngoài ra ảnh content cũng có thể được cung cấp từ máy ảnh của thiết bị di động.

* Lua chọn thứ hai cho phép người dùng nhập một câu văn nhằm mục đích mô tả ảnh mình muốn được mô hình tạo ra với số bước để tạo sinh (Càng nhiều bước hơn sẽ cho ra bức ảnh có chất lượng tốt hơn, nhưng đồng thời cũng làm tăng thời gian xử lý ảnh) Khác với lựa chọn thứ nhất, lựa chọn này yêu cầu cấu hình thiết bị di động khá cao do tính chất mô hình Stable Diffusion.

4Tén đầy đủ là TensorflowLite Thông tin chỉ tiết ở tensorflow.org/lite ŠTên đầy đủ là ONNX Runtime Thông tin chỉ tiết ở onnxruntime.ai

4.2 Kế hoạch triển khai và xây dựng ứng dụng Được xây dựng dựa trên nền tang của một ứng dụng xử lý ảnh, ngoài các chức năng cần thiết như tải ảnh lên từ thư viện ảnh, máy ảnh hay đường dẫn Internet, chúng tôi đã tích hợp thêm các tính năng nhằm chuyển đổi phong cách ảnh theo lựa chọn của người dùng và hiện kết quả thực hiện trên màn hình, đồng thời cho phép người dùng lưu ảnh đã chuyển đổi phong cách khi thấy ảnh ưng ý Chính vì vậy ứng dụng cần yêu cầu quyền truy cập vào thư viện ảnh và quyền truy cập máy ảnh hoặc Internet nếu được yêu cầu.

Giới thiệu ứng dụng Image Transformer

Image Transformer là một ứng dụng tạo sinh hình ảnh nghệ thuật từ những bức ảnh của người dùng hay từ câu văn được người dùng cung cấp Ứng dụng được tạo ra với mục đích cho thấy được tiềm năng của các mô hình chuyển đổi ảnh hiện đại khi áp dụng phương pháp tối ưu mô hình, cho phép các mô hình hoạt động với ít tài nguyên cần thiết hơn mà vẫn giữ lại được những khả năng mà mô hình von có.

Kétquathucnghiém ẶẶQ ee 56

Neural Style Transfer 2 2 ee 56

Với NST, chúng tôi chọn va thử nghiệm các mang backbone cho mô hình này Trong bài viết này, các mang backbone chúng tôi sẽ thử nghiệm bao gồm: VGG16, VGG19, ResNet50,

InceptionV3, MobileNetV2 và EfficientNetV2. Để có thể đạt được kết quả chuyển đổi phong cách tốt nhất, tất cả các mô hình đều lựa chọn các layers tích chập ’conv’ để phục vụ cho chuyển đổi phong cách ảnh, riêng mô hình InceptionV3 thì sẽ được cấu hình với ’mixed’.[13]

In nV | ceptonV3 style_layers = ['mixed3', 'mixed5', 'mixed7'] content_layers = ['conv5_block3_3_conv'] style_layers = ['convi_conv',

VGG, ‘conv4_block1_1_conv', ResNet, "conv4_block2_1_conv',

Hình 4.9: Các lớp tích chập trung gian cần chon để chuyển đổi phong cách.[24]

Sau đây là kết quả thử nghiệm với các backbone được chọn trong bài viết này:

Mang Backbone | Content + Style Loss | Thời gian | RAM

VGG16 146,512.8 58.3 giây | 1.7 GB VGG19 151,997.0 68.3 giây | 1.7 GB ResNet50 95,210.2 46.8 giây | 1.5 GB

Bang 4.1: Bảng kết quả thực nghiệm các phương pháp Neural Style Transfer trên máy 2 (có sử dung GPU trên Linux)

Kết quả hiệu năng của các backbone trong NST cho thấy, MobileNetV2 và InceptionV3 có lưu lượng RAM ít nhất, trong khi cả ba mô hình VGG16, VGG19 và EfficientNetV2 sử dụng nhiều RAM nhất Dù vậy, chênh lệch mức tiêu thụ RAM tối đa giữa các mô hình là 0.3 GB, một khoảng cách tương đối nhỏ đối với các máy tính cá nhân hiện nay (Xét trong trường hợp máy có GPU) Xét về mặt thời gian xử lý chuyển đổi phong cách ảnh, MobileNetV2 cho ra ít thời gian xử lý nhất, theo sau đó là InceptionV3 trong khi VGG19 và EfficientNetV2 là 2 mô hình có thời gian xử lý lâu nhất Tuy vậy, để xem xét kỹ hơn thì chúng ta sẽ phải xem kết quả định tính.

4.3 Kết quả thực nghiệm Kết quả định tính

Hình 4.10: Kết quả thực hiện với các mô hình NST. Ở các kết quả mô hình sinh ra trên, có thể thấy VGG16 và VGG19 cho kết quả ấn tượng nhất, tuy nhiên vẫn chưa được chân thật so với ảnh gốc và ảnh phong cách vẫn có phần bị võ. ResNet50 thì lại ngả ảnh sang màu vàng, nguyên nhân có thể là do đặc trưng màu vàng nổi trong ảnh phong cách Vangogh làm ảnh nội dung bị màu hoá Bên cạnh đó InceptionV3 và

MobileNetV2 thi ảnh bị nhiễu do có thể việc cấu hình các lớp trích xuất đặc trưng ở style layers chưa được chuẩn do khá mang tính chủ quan EfficientNetV2 thì gần như ảnh phong cách khó hoà hợp với ảnh nội dung.

Hình 4.11: Kết quả thực hiện với 2 backbone MobileNetV2 (trái) và InceptionV3 (phải) cho mô hình Arbitrary Style Transfer.

Kết quả từ hai mô hình được cấu hình bởi Google đặt trong TensorFlow Hub này được tối ưu sẵn cho việc fast inference cho kết quả khá ấn tượng Tuy nhiên hai mô hình này vẫn cho kết quả về độ phân giải không được tốt Những màu nóng ở hình nội dung với hai mô hình đã bị biến đổi do sự pha trộn của màu nóng từ ảnh phong cách.

Thử nghiệm trên nền tảng thiết bị di động (dành cho Arbitrary Style Transfer) Để thử nghiệm các mô hình và phương pháp nén trên thiết bi di động, chúng tôi sử dụng điện thoại Samsung Galaxy A31 làm thiết bi để vận hành các mô hình Arbitrary Style Transfer Cau hình thiết bi này bao gồm CPU Mediatek Helio P65 với 6GB RAM và 128GB bộ nhớ trong. Trong bài viết này, thiết bị thử nghiệm sẽ sử dụng Android 12 để vận hành mô hình này (Đây cũng là phiên bản Android cuối cùng hỗ trợ chính thức dành cho thiết bị này) Tat cả các mô hình sẽ sử dung Framework TensorflowLite để có thể được thực hiện trên thiết bị di động.

MobileNetV2 và InceptionV3 sẽ là backbone được thử nghiệm cho mô hình này Chúng tôi đồng thời cũng thử nghiệm với 4 phương pháp triển khai bao gồm triển khai nguyên gốc,

Float16 Quantization, Dynamic Quantization và Int8 Quantization để đánh giá sự đánh đổi giữa hiệu năng mô hình và yêu cầu tài nguyên cho mô hình đó.

Sau đây là kết quả thực nghiệm mô hình trên thiết bị di động:

Backbone | Phươngpháp | pay | Kichthước | Thự siạn

Không có 430.2 MB 42.0 MB 11.4 giây

Int8 378.6 MB 10.9 MB 6.8 giây Dynamic 390.8 MB 10.7 MB 7.1 giây Không có 266.9 MB 9.7MB 4.6 giây MobileNetV2 Floatl6 253.3 MB 4.6 MB 4.4 giây

Int8 225.8 MB 3 MB 2.5 giây Dynamic 252.1 MB 2.8 MB 3.0 giây

Bảng 4.2: Bảng thống kê hiệu năng giữa các Backbone của mô hình Arbitrary Style Transfer với các phương pháp nén trên thiết bi Samsung Galaxy A31

Có thể thấy, do tính chất nhỏ gọn của mô hình MobileNetV2, mô hình này xử lý nhanh hơn gấp 2 - 3 lần mô hình InceptionV3 ở tất cả mọi phương pháp Quantization Phương pháp Quantization về Int8 cho ra tốc độ xử lý nhanh nhất trong khi mô hình triển khai bản xử lý chậm nhất Mô hình InceptionV3 cho ra kích thước lưu trữ mô hình nặng nhất trong khi MobileNetV3 đặc biệt hơn khi mô hình với backbone này kể cả khi không Quantize cũng nhẹ hơn so với

InceptionV3 đã được Quantize về Int8 Ngoài ra, chênh lệch kích thước lưu trữ giữa 2 phương pháp triển khai Quantization là Int8 và Dynamic là rất nhỏ với Dynamic Quantization có phan nhinh hơn với dung lượng ít hơn đôi chút, Float16 Quantization cho ra kích thước mô hình nhỏ hơn gấp đôi so với mô hình nguyên bản và lớn hơn gần một nửa cho đến gan gấp đôi so với Int8 Quantization Sự khác biệt về lượng RAM tiêu thụ giữa 2 model nếu xét cùng phương pháp nén là đáng kể khi mức chênh lệch này lên đến gần 200 MB.

Tuy vậy, trong khi sự khác biệt giữa 2 phương pháp Quantization là không Quantize va

Quantize về Float16 là rat ít, mức chênh lệch phương pháp Dynamic Quantization và Int8 Quan- tization có phần lớn hơn với khoảng cách lớn nhất lên đến 30 MB cho mô hình MobileNetV2. Khoảng cách về mức tiêu thụ RAM giữa phương pháp Dynamic Quantization và Float16 Quan- tization đối với mô hình InceptionV3 có thể nói hoàn toàn nhận thấy được trong khi đối với MobileNetV2, khoảng cách là cực kỳ nhỏ Dù vậy, nếu xét trong trường hợp hệ điều hành An- droid và các tác vụ nền chỉ sử dụng 35-50% dung lượng RAM của thiết bị, tất cả các mô hình cùng với các phương pháp nén kể trên đều sẽ chạy tốt trên các thiết bị điện thoại Android chỉ có 2GB RAM Đặc biệt hơn, nếu sử dụng backbone Mobile với phương pháp triển khai là Quantize về Int§ thì mô hình hoàn toàn có khả năng vận hành trên các thiết bị chỉ có IGB RAM.

Hình 4.12: Kết quả chuyển đổi phong cách ảnh của mô hình Arbitrary Style Transfer sử dụng

Backbone InceptionV3 với các phương pháp Quantization.

Hình 4.13: Bang khảo sát voting ảnh kết qua từ Backbone InceptionV3.

Hình 4.14: Kết quả chuyển đổi phong cách ảnh của mô hình Arbitrary Style Transfer sử dụng backbone MobileNetV2 với các phương pháp Quantization.

Hình 4.15: Bảng khảo sát voting ảnh kết quả từ Backbone MobileNetV2.

Xét các kết quả định tính, tổng quan tất cả các ảnh được tạo ra bởi mạng MobileNetV2 có chỉ tiết khá sắc nét, bắt chước khá sâu phần nét bầu trời khuya của ảnh style Mọi chỉ tiết đặc sắc của ảnh style đều được phân bổ xung quanh vùng mặt của người mẫu Nếu lấy phương pháp không Quantize là tiêu chuẩn thì phương pháp Quantize Float16 chỉ có một chút sự khác biệt về mau sắc và chi tiết có phần mềm hơn, trong khi 2 phương pháp Quantize Dynamic và Int8 chi tiết có phần bị nhiễu màu và gai góc hơn cùng với màu sắc không được tươi như việc không Quantize Phương pháp Quantize Int§ có độ chi tiết yêu hơn đôi chút so với phương pháp Quantize Dynamic Dù vậy, tổng quan backbone MobileNetV2 cho ra các bức ảnh vẫn có phần hơi nhiễu sạn và nhấn mạnh rất nhiều vào hai màu vàng cam và xanh nước biển Cũng có thể thấy, với backbone này thì phần đông người dùng chọn việc không nén mô hình đẹp hơn trong khi Int8 bị đánh giá thấp nhất.

Khi so sánh với InceptionV3, mặc dù backbone cho ra kết quả có chi tiết style không nổi bật như MobileNetV2 (đặc biệt là các chỉ tiết ngôi sao bay của ảnh style), chi tiết ảnh đầu ra có phần mượt mà uyển chuyển hơn cùng với màu sắc bức ảnh và các nét góc cạnh mềm mại và không bị quá gắt như MobileNetV2 Phân bổ chỉ tiết của ảnh style cũng đã được phân bổ đều ra tất cả các vùng ảnh Sự khác biệt giữa 2 phương pháp Quantization là Int8 và Dynamic là không đáng kể xét về mặt chỉ tiết, điều này cũng tương tự với 2 phương pháp Float16 và không Quantize Chi tiết ảnh của 2 phương pháp Float16 và không Quantize có phần nổi trội hơn so

4.3 Kết quả thực nghiệm với 2 phương pháp còn lại mặc dù là không nhiều Phần đông người dùng ưa thích ảnh khi được Quantize về Float16 trong khi mô hình không nén có phan bị đánh giá tệ hơn đôi chút dù điểm trung bình không kém Float16 Mô hình InceptionV3 với phương pháp Dynamic Quantization có lẽ là lựa chọn cân bằng nhất giữa sử dụng bộ nhớ RAM và mức độ nghệ thuật thẩm mỹ theo quan điểm của chúng tôi trong khi mô hình MobileNetV2 với phương pháp Int8 Quantization sẽ là lựa chọn tối ưu nhất cho các điện thoại câu hình thấp.

Sau đây là một số ảnh Style khác chúng tôi đã thử nghiệm ngoài ảnh đã được chọn ở trên với

2 backbone InceptionV3 và MobileNetV2 được Quantize về Float16 hay Int8, 2 phương pháp chúng tôi cho rằng là những lựa chọn tối ưu nhất để triển khai mô hình.

Hình 4.16: Kết quả thực nghiệm với 7 Style khác cho Arbitrary Style Transfer với một số backbone và phương pháp nén mô hình được chọn

Các mô hình thuộc ho Transformer

Chúng tôi sử dụng cả 2 máy đã được đề cập ở mục 4.1.2 nhằm mục đích thu thập kết quả hiệu năng xử lý của 2 mô hình khi được xử lý trên 2 kiến trúc CPU khác nhau Đối với máy 2, do một số vấn đề liên quan đến Windows, chúng tôi sẽ thử nghiệm thêm trên Linux và đồng thời thử nghiệm trên GPU của thiết bị này.

Môhình | PhươngPháp | mui sian | RAM triền khai

Quantized - CPU | 12.7 giây | 1.2 GB S2WAT CPU 53.3 giây 11.5 GB

Bang 4.3: Bảng kết quả thực nghiệm các phương pháp thuộc ho Transformer trên máy 1 (Mac)

Mô hình Phương pháp Windows Linux triển khai Thời gian | RAM | Thời gian | RAM

CPU 20.7 gidy | 23GB | 12.0giây | 23GB StyTr2 GPU 15giây | 0.9GB 14giây | 04GB

Quantized - CPU | 'Không hoàn thành 14.7 giây 2GB

CPU 259.7 giây | 10.3 GB | 194.0 giây | 11.7 GB

S2WAT GPU ?Không hoàn thành | “Không hoàn thành

Quantized - CPU | lKhông hoàn thành | 275.0 giây | 11.1 GB

Bảng 4.4: Bảng kết quả thực nghiệm các phương pháp thuộc họ Transformer trên máy 2

1: Windows không thể chạy mô hình đã được Quantize do PyTorch trên nên ting Windows không hỗ trợ thư viện QNNPack

?: Máy 2 không thể chạy được S2WAT ở chế độ sử dụng GPU do GPU không có đủ VRAM Đầu tiên, ta có thấy là số lượng Parameters đã giảm đi khoảng 1/3 số lượng Parameters với mô hình StyTr2 và giảm hơn gấp 16 lần với mô hình S2WAT Điều này đã trực tiếp ảnh hưởng đến hiệu năng của các mô hình họ Transformer Cụ thể trong điều kiện vận hành trên CPU, mô hình StyTr2 sau khi quantize có lưu lượng RAM hiện hành có phần ít hơn so với mô hình gốc khoảng 300 MB trên Linux và 100 MB trên Mac Con số này càng lớn hơn cho mô hình S2WAT với chênh lệch 1.2GB trên Mac và 600 MB trên Linux Tuy nhiên, điều này phải đánh đổi bằng việc thời gian xử lý của mô hình bị tăng lên Con số này càng trở nên đáng kể hơn với chênh lệch 81 giây trên Linux và 7.2 giây trên Mac Giữa các nền tảng thử nghiệm không cho thấy sự khác nhau về số lượng Parameters kể cả sau khi được Quantize.

Tại thời điểm chúng tôi phát hành bài viết này, do Windows chưa hỗ trợ thư viện QNNPack chuyên dùng cho việc Quantize các mô hình trong PyTorch, chúng tôi chưa thể thống kê được hiệu năng vận hành của các mô hình đã được Quantize cho Windows.

Khi so sánh với việc vận hành trên GPU, mô hình StyTr2 cho ra hiệu năng rất ấn tượng với chỉ hơn 1 giây và lưu lượng RAM chỉ quanh 0.4 GB trên Linux và 0.9 GB trên Windows Đặc

4.3 Kết quả thực nghiệm biệt hơn, chúng tôi nhận thấy rằng trong quá trình chúng tôi thử nghiệm, mô hình StyTr2 chỉ sử dụng gần 2GB VRAM của GPU trên máy 2 ở cả 2 nền tảng Linux và Windows Điều này có nghĩa mô hình hoàn toàn có thể vận hành trên các máy tính có 3-4GB VRAM GPU trở lên trong trường hợp GPU hỗ trợ thư viện tính toán mà PyTorch cung cấp Đối với mô hình S2WAT, chúng tôi chưa thể vận hành được mô hình này trên GPU do mô hình đã bị tràn VRAM trên

GPU máy 2 dẫn đến không thể chạy được mô hình này.

Mô hình emer Phe Thời gian (Windows) | Thời gian (Linux)

Quantized - CPU | !Không hoàn thành 85.6 giây

Bảng 4.5: Bảng kết quả thực nghiệm mô hình StyTr2 trên máy 3

1: Windows không thể chạy mô hình đã được Quantize với lý do tương tự đã được dé cập trong quá trình thực nghiệm ở máy 2

?: Máy 3 không thể chạy được S2WAT do không có đủ RAM hay VRAM của GPU

Thực nghiệm mô hình StyTr2 trên máy tính 3, có thể thấy thời gian thực nghiệm đã tăng lên gap 6-7 lần trên CPU và gần 12 lần trên GPU so với máy tinh thứ 2 Điều này hoàn toàn có thể lý giải được với cầu hình yếu hơn máy 2 đáng kể trên máy 3 Chúng tôi không thể cung cấp kết quả vận hành mô hình S2WAT trên máy 3 do chi phí vận hành rất cao nên việc thực nghiệm mô hình không thể được thực hiện Tương tự như máy 2, việc xử lý mô hình trên Windows bao giờ cũng chậm hơn so với Linux.

4.3 Kết quả thực nghiệm Kết quả định tính

Hình 4.18: Bang khảo sát voting ảnh kết quả từ 2 mô hình ho Transformer.

So sánh với các nhóm mô hình NST thì mô hình StyTr2 và S2WAT cho kết quả với độ phan giải cao và đảm bảo chất lượng hình ảnh giữ nguyên nội dung gốc và được phong cách hoá rất mượt, tối ưu Các màu sắc nổi như môi vẫn được đảm bảo giữ nguyên trong khi đó tóc và mắt

4.3 Kết quả thực nghiệm được phong cách hoá theo ảnh Vangogh rất tốt Ở góc nhìn của mỗi người dùng có thể khác nhau nhưng nhìn chung thì nhóm mô hình họ Transformer này được đánh giá cao hơn do tính phụ thuộc dài hạn - ngắn hạn khi trích xuất đặc trưng.

Hai mô hình StyTr2 và S2WAT cho kêt quả inference có chất lượng gần như là giống nhau, tuy nhiên kích thước hình khi xử lí hơi khác do tính chất phải crop theo kích thước của đặc trưng thiết kế mạng cấu thành Điều này có thể thấy được ở StyTr2 khi ảnh đã bị cắt xén vuông về giữa ảnh Content trong khi S2WAT không đổi Xét đến về kết quả đã lượng tử hoá Dynamic, chất lượng hình tốt trong khi kích thước mô hình giảm gần một nửa so với ban đầu, RAM xử lí giảm nhẹ đi mặc dù phải đánh đổi thời gian inference lớn hơn, đặc biệt là S2WAT trên Linux. Nhìn chung, ảnh của mô hình S2WAT theo chúng tôi cho ra chất lượng nhỉnh hơn đôi chút so với StyTr2 nhưng phải đánh đổi với yêu cầu tài nguyên xử lý của mô hình khá chua chát dù đã được Quantize Xét điểm số đánh giá từ người dùng, phần lớn người dùng đánh giá cao mô hình S2WAT không nén, trong khi không kém cạnh là mô hình StyTr2 không nén Đồng thời 2 mô hình đã Quantize có điểm số trung bình từ người dùng thấp hơn so với 2 mô hình gốc. Để kết thúc phần kết quả thực nghiệm cho mô hình họ Transformer, đây là kết quả thử nghiệm với một số anh Style khác cho 2 mô hình S2WAT và StyTr2 với các anh Style được chọn tương tự như mô hình Arbitrary Style Transfer: Ảnh Style

Hình 4.19: Kết quả thực nghiệm với 7 Style khác cho 2 mô hình StyTr2 và S2WAT

Phương pháp | Số Parameters | Thời gian RAM VRAM (GPU) | FID

Pix2Pix 11.4M 6.6 giây | 617.3 MB 1.1 GB 0.52

Bảng 4.6: Bảng kết quả thực nghiệm các phương pháp GAN trên máy 2

Chúng ta có thể nhận thấy được số lượng Parameter của 2 phương pháp Pix2Pix và Cycle- GAN sau khi nén đã giảm di rất rõ rệt Cụ thể, số lượng Parameters của Pix2Pix và CycleGAN lần lượt đã xuống còn 0.4 triệu và 0.8 triệu tham số Hiệu năng mô hình sau khi được nén được cải thiện rất nhiều Cụ thể, thời gian thực thi đã giảm đi 4 - 5 giây so với mô hình ban đầu, lưu lượng RAM đã giảm đi 30 MB cho Pix2Pix và hơn 70 MB cho CycleGAN Cả 2 mô hình đồng thời đã giảm 0.5 GB lưu lượng VRAM trên GPU Mô hình CycleGAN nhìn chung có yêu cầu tài nguyên hơn hơn đôi chút so với Pix2Pix FID của hai phương pháp trong trường hợp nén đều lớn hơn trường hợp chưa nén, tuy nhiên độ chênh lệch là không đáng kể (ở Pix2Pix chênh lệch 0.05 và CycleGAN chênh lệch 0.01), chỉ số này càng thấp thi cho thấy ảnh tạo ra có phân phối càng giống với ảnh gốc Trade-off này cho thay phương pháp nén rất hiệu quả.

Một điều cần lưu ý là tất cả các mô hình trên đều được vận hành trên GPU của máy tính thứ hai Vì một số lý do liên quan đến thư viện lập trình và mã nguồn của mô hình GAN có liên kết khá sâu với thư viện tính toán CUDA vốn chỉ có mặt trên các card đồ họa của Nvidia, hiện tại chúng tôi chưa thể vận hành được các mô hình GAN chỉ với CPU và mô hình chưa thể hoạt đông được trên máy Mac được đề cập trong bài viết tại thời điểm bài viết này được phát hành. Tuy vậy, một điều tích cực là trong các mô hình chuyển đổi phong cách ảnh sử dụng mạng GAN, các mô hình này chi sử dung hơn | GB ở dạng chưa nén và quanh 0.5 GB với dạng đã nén Điều này có nghĩa là các mô hình này có thể vận hành được trên các GPU có 2GB VRAM tối thiểu, von xuất hiện trong rất nhiều card đồ họa bình dân và tầm trung cũ Điều này phần nào cũng đã được phản ánh trên máy 3 với câu hình yếu hơn, mặc dù điều này cũng phải chấp nhận rằng thời gian xử lý cũng sẽ tăng lên đáng kể Đáng chú ý hơn, việc nén mô hình GAN làm giảm đi rất nhiều thời gian cần thiết để mô hình xử lý ảnh trên máy 3 với chênh lệch lên đến gấp hơn 7 lần, một khoảng cách rất lớn trên thiết bị có cấu hình khiêm tốn.

Bảng 4.7: Bảng kết quả thực nghiệm các phương pháp GAN trên máy 3

Phương pháp | Số Parameters | Thời gian

Pix2Pix Compressed Pix2Pix

Hình 4.21: Bảng khảo sat voting anh kết quả từ 2 mô hình GANs.

Pix2Pix cho kết quả khá tệ, lí giải cho việc này là do mô hình được huấn luyện trên bộ dữ liệu edges2shoes, hướng đến chỉ dựa vào đường nét cạnh mà reconstruct lại ảnh gốc có màu sắc CycleGAN thì cho kết quả có một chút đường van từ bộ dữ liệu horse2zebra Do tính chat của nhóm mô hình GANs là một ảnh ra một ảnh nên các kết quả bị phụ thuộc vào ảnh gốc kèm theo dữ liệu huấn luyện, không thể can thiệp ảnh phong cách vào Kết quả trên tạo thêm một góc nhìn về một kiểu chuyển đổi phong cách với mô hình đối kháng tạo sinh Điểm số trung bình chênh lệch giữa các mô hình là không nhiều với CycleGAN gốc có số điểm cao nhất trong khi theo sau là Pix2Pix không nén.

4.3.4 Stable Diffusion (Text-to-Image)

Kết quả định lượng Đối với loại mô hình Diffusion, chúng tôi thử nghiệm trên hai máy tinh đã được nêu ở mục

4.1.2 Sau khi mô hình đã được nén và đóng gói vào một file, chúng tôi sử dụng một đoạn mã và nạp các mô hình này vào nhằm mục đích thử nghiệm và thống kê kết quả vận hành của phương pháp nén khi được áp dụng vào mô hình trên Chúng tôi sẽ chạy mô hình với Batch size là 1 và số step bằng 25 Đối với phương pháp không nén và Float16 có sử dung GPU, chúng tôi thử nghiệm và thống kê kết quả trực tiếp trên Tensorflow thay vì đưa mô hình vào Tensorflow Lite

4.3 Kết quả thực nghiệm bởi tại thời điểm hiện tại, khả năng hỗ trợ GPU cho các mô hình TFLite còn hạn chế với các máy tính cá nhân Chúng tối đồng thời cũng sử dụng Linux thay cho Windows trong việc vận hành mô hình bằng Tensorflow do nền tảng này không hỗ trợ sử dụng GPU tăng tốc hiệu suất cho Tensorflow Để đạt được kết quả tốt nhất, số luồng cho TELite trên máy tính thứ nhất sẽ được cấu hình là 8 luồng và trên máy tính thứ hai là 12 luồng Tat cả các phương pháp nén được thử nghiệm sẽ sử dụng chung một Random seed và chung một câu prompt Mặc định chúng tôi sẽ vận hành các mô hình này chỉ sử dụng CPU, riêng phương pháp nén về Float16 chúng tôi sẽ thử nghiệm thêm việc triển khai khi được sử dụng GPU để tăng tốc tính toán.

Phiên | Phương pháp CO sian uc nền — Tưng bản triển khai Tổng quát Mã hóa ký | Diffusion | Giải mã R tự step ảnh tiêu thụ

Không nén! 2.9 phút 9.0 giây 6.0 giây 15.0 giây 4.9 GB Floatl6 (GPU)! | 4.0phút | 174.0giây) | 10giây | 40.0giây3 | §.9GB vl Float16 81.8 phut 0.6 giây 195.6 giây 9.0 giây 12.4 GB

Dynamic 1.7 phut 0.1 giây 4.2 giây 4.2 giây 3.5 GB

Không nén! 6.0 phút 26.0 giây 12.0 giây 30.0 giây 7.1 GB Floatl6 (GPU)! | 5.2 phit | 207.5 gidy? | 2.5 giay | 40.0 gidy? | 10.5 GB v2 Floatl6 103.0 phit | 1.8giay | 246.0giây | 18.6 giay | 15.7GB

Dynamic 5.4 phut 0.3 giây 12.0 giây 10.8 giây 6.7GB

Bảng 4.8: Bảng kết quả thực nghiệm phương pháp nén cho 2 phiên bản mô hình Stable

Phiên | Phương pháp gian muv in — Tớ: bản triển khai Tổng quát | Mã hóa ký | Diffusion Giải mã là sa tự step ảnh tiêu thụ

Không nén? 2.6 phút 33.0 giây 5.0 giây 5.0 giây 6.8 GB

Floatl6 (GPU)* | 3.9phút | 644giây) | 0.6giây | 1520giây? | 1.5GB vl Float16 82.5 phut 0.6 giây 195.0 giây 14.4 giây 13.6 GB

Dynamic 22.0 phút 1.2 giây 52.2 giây 33.0 giây 3.7 GB

Không nén” 6.8 phút 38.0 giây 13.0 giây 13.0 giây 10.4 GB v2 | Floatle (GPU) | §./0phút | 110.0 gidy? | 1.0 giay | 345.0 gidy? | 17GB

Float16 71.1 phut 2.4 giây 169.2 giây | 27.6 giây 16.4 GB Dynamic 51.6 phút 3.6 giây 118.8 giây | 75.0 giây 8.8 GB

Bảng 4.9: Bảng kết quả thực nghiệm phương pháp nén cho 2 phiên bản mô hình Stable

1: Mô hình với phương pháp nén này sử dụng Tensorflow thay cho TensorflowLite (đối với máy Mac)

2: Mô hình với phương pháp nén này được thử nghiệm trên hệ điêu hành Linux Mint 21.2 Victoria và sử dụng Tensorflow thay cho TensorflowLite (đối với máy PC)

3: Do một sé van dé trong Tensorflow, kết quả thực hiện lâu hơn dự kiến

Phi en Phuong phap Framework CLIP ban trién khai

Khô é 16.19 ong net Tensorflow vi Float16 (GPU) 16.78

Khô 2 13.63 eee Tensorflow v2 Float16 (GPU) 13.36

Bang 4.10: Bang điểm số CLIP giữa các phiên ban mô hình Stable Diffusion kết hợp cùng với các phương pháp triển khai được chọn

Phiên | Phương pháp Text Mô hình Image Tổng kích bản triển khai Encoder | Diffusion | Decoder thước

Không nén 0.5 GB 3.4 GB 198.6 MB 4.1 GB vl Float16 0.3 GB 1.7 GB 99.2 MB 2.1 GB

Dynamic 0.1 GB 0.9 GB 50.0 MB 1 GB Khong nén 1.3 GB 3.4 GB 198.6 MB 4.9 GB v2 Float16 0.7 GB 1.7 GB 99.2 MB 2.5 GB

Dynamic 0.3 GB 0.9 GB 50.0 MB 1.3 GB

Bảng 4.11: Bảng kích thước dung lượng lưu trữ cần thiết cho các thành phan trong mô hình

Xét kết quả vận hành trên máy 1 ở bảng 4.8, phương pháp Dynamic Quantization cho ra tổng thời gian xử lý nhanh nhất, theo sau đó là phương pháp không nén và Float16 Quantization có sử dụng sức mạnh của GPU Phương pháp Float16 Quantization chỉ sử dụng CPU có thời gian xử chậm nhất với con số rất lớn so với ba phương pháp còn lại Điều này có thể lý giải bởi phương pháp này tốn rất nhiều RAM, thậm chí phương pháp này còn khiến cho bộ nhớ RAM

16 GB của Mac rơi vào trạng thái bi áp lực tải, dẫn đến tốc độ xử lý của mô hình bị chậm đi một

Ngày đăng: 02/10/2024, 02:49

HÌNH ẢNH LIÊN QUAN

Hình ảnh phù hợp với nội dung của hình ảnh nội dung và phong cách của hình ảnh phong cách. - Khóa luận tốt nghiệp Khoa học máy tính: Nghiên cứu triển khai ứng dụng với mô hình học sâu cho bài toán chuyển đổi phong cách ảnh
nh ảnh phù hợp với nội dung của hình ảnh nội dung và phong cách của hình ảnh phong cách (Trang 26)
Hình 2.2: Kiến tric mô hình Arbitrary Style Transfer[7] - Khóa luận tốt nghiệp Khoa học máy tính: Nghiên cứu triển khai ứng dụng với mô hình học sâu cho bài toán chuyển đổi phong cách ảnh
Hình 2.2 Kiến tric mô hình Arbitrary Style Transfer[7] (Trang 28)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w