lOMoARcPSD| 59031616
CHƯƠNG 1.
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN
XỬ LÝ ẢNH
NĂM HỌC 2024-2025
Xây dựng hệ thống khôi phục ảnh cũ sử dụng GANs
Mã sinh viên
Nguyễn Văn Quân
B21DCCN615
Vũ Danh Phong
B21DCCN590
Nguyễn Văn Mạnh
B21DCCN517
Nguyễn Hoàng Nam
B21DCCN551
Lê Sỹ Khánh
B21DCDT119
Hà Nội-11/2024
lOMoARcPSD| 59031616
MỤC LỤC
MỞ ĐẦU...............................................................................................................................1
1. Lý do chọn đề tài.................................................................................................1
2. Mục tiêu của đề tài...............................................................................................1
3. Đối tượng và phạm vi nghiên cứu........................................................................2
4. Phương pháp nghiên cứu.....................................................................................2
5. Bố cục bài báo cáo...............................................................................................3
CHƯƠNG 1. Lý thuyết.............................................................................................4
1.1. Học máy...........................................................................................................4
1.2. Mạng GANS.....................................................................................................6
1.3. Tích chập..........................................................................................................7
1.4. Google colaboratory.........................................................................................8
1.4.1. Giới thiệu về google colaboratory..............................................................8
1.4.2. Môi trường thực thi....................................................................................9
CHƯƠNG 2. Xây dựng thử nghiệm........................................................................11
2.1. Tổng quan mô hình.........................................................................................11
2.1.1. Sơ đồ hệ thống.........................................................................................11
2.1.2. Tổng quan về hệ thống.............................................................................11
2.2. Cài đặt bài toán...............................................................................................12
2.2.1. Import các thư viện..................................................................................12
2.2.2. Dữ liệu đầu vào........................................................................................13
2.2.3. Cấu hình mô hình GANS.........................................................................17
2.2.1. Quá trình training.....................................................................................22
2.3. Đầu ra bài toán...............................................................................................24
CHƯƠNG 3. THÍ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ......................................27
3.1. Thử nghiệm....................................................................................................27
3.1.1. Dữ liệu thử nghiệm..................................................................................27
3.1.2. Quy Trình Thử Nghiệm...........................................................................27
3.1.3. Các bước thực hiện..................................................................................27
3.1.4. Kết quả....................................................................................................27
3.2. Đánh giá.........................................................................................................28
3.2.1. Trực quan....................................................................................28
lOMoARcPSD| 59031616
3.2.2. Đánh giá qua PSNR, SSIM, MSE...........................................29
CHƯƠNG 4. KẾT LUẬN.......................................................................................31
DANH MỤC HÌNH ẢNH
Hình 1: Sơ đồ của mạng GANS ...................................................................................... 5
Hình 2: Công thức cùa tích chập ..................................................................................... 6
Hình 3: Giao diện của google colaboratory .................................................................... 8
Hình 4 : Sơ đồ mạng GANs .......................................................................................... 10
Hình 5: Import các thư viện cần thiết ............................................................................ 11
Hình 6: Định dạng và đường dẫn đến file RAR ............................................................ 11
Hình 7: Xử lý ảnh màu .................................................................................................. 12
Hình 8: Xử lý ảnh xám .................................................................................................. 12
Hình 9: tạo Dataset ........................................................................................................ 13
Hình 10: Hiển thị ảnh mẫu ............................................................................................ 13
Hình 11: Downsample và Upsample ............................................................................. 15
Hình 12: Generator ........................................................................................................ 17
Hình 13: Generator ........................................................................................................ 18
Hình 14: Hàm Discriminator ......................................................................................... 19
Hình 15: Hàm Loss........................................................................................................ 20
Hình 16: Quá trình training ........................................................................................... 21
Hình 17: Hàm Fit ........................................................................................................... 22
Hình 18: Gen ra ảnh dự đoán ........................................................................................ 23
Hình 19: Hiển thị hình ảnh ............................................................................................ 24
lOMoARcPSD| 59031616
DANH MỤC TỪ VIẾT TẮT
Viết tắt
Tiếng Anh
Tiếng Việt
GANs
Generative Adversarial
Networks
Mạng đối kháng tạo sinh
AI
Artificial Intelligence
Trí tuệ nhân tạo
ML
Machine Learning
Học máy
CNN
Convolutional
Neural Network
Mạng nơ-ron tích chập
PSNR
Peak Signal-to-Noise
Ratio
Tỷ lệ tín hiệu trên nhiễu
cao nhất
SSIM
Structural
Similarity Index
Chỉ số tương đồng cấu
trúc
MSE
Mean Squared Error
Sai số trung bình bình
phương
lOMoARcPSD| 59031616
MỞ ĐẦU
1. Lý do chọn đề tài
Trong thời đại công nghệ số, hình ảnh không chỉ phương tiện lưu trữ ức còn
đóng vai trò quan trọng trong việc bảo tồn c giá trị văn hóa, lịch sử gia đình. Tuy
nhiên, qua thời gian, nhiều hình ảnh qgiá đã bị hỏng, phai u hoặc mất chi tiết
do tác động của môi trường, tuổi thọ vật liệu hoặc sự lưu trữ không đúng cách. Việc phục
hồi những hình ảnh này một nhu cầu thiết yếu, không chỉ nhằm tái hiện lại quá khứ
còn tạo điều kiện để các thế hệ sau có thể tiếp cận và hiểu rõ hơn về những giá trị đã qua.
Trước đây, việc khôi phục hình ảnh thường được thực hiện thủ công bởi các chuyên gia
thiết kế đồ họa hoặc c nhà phục chế nghệ thuật. Tuy nhiên, phương pháp này đòi hỏi
thời gian, công sức, đặc biệt phụ thuộc vào kỹ năng kinh nghiệm của người thực
hiện. Điều này khiến cho quá trình phục hồi nh không chỉ tốn kém còn không đảm
bảo được sự đồng nhất về chất lượng trên quy mô lớn.
Sự phát triển mạnh mẽ của trí tuệ nhân tạo (AI) và học sâu (Deep Learning) trong những
năm gần đây đã mang lại một giải pháp đột phá cho vấn đề này. Đặc biệt, Mạng đối kháng
sinh (Generative Adversarial Networks - GANs) đã chứng minh tiềm năng vượt trội trong
lĩnh vực tái tạo xử ảnh. GANs hoạt động dựa trên nguyên tắc hai mạng neural (mạng
sinh và mạng phân biệt) đối kháng với nhau, từ đó tạo ra các hình ảnh có chất lượng cao
và chi tiết sát thực tế. Điều này mở ra hội để áp dụng GANs trong việc khôi phục hình
ảnh cũ, giúp tái hiện lại những chi tiết đã mất một cách tự động, nhanh chóng hiệu
quả.
Cuối cùng, việc nghiên cứu và phát triển một hệ thống khôi phục ảnh cũ sử dụng GANs
không chỉ mang ý nghĩa khoa học mà còn góp phần nâng cao ý thức bảo tồn và tôn vinh
các giá trị lịch sử. Đây một thách thức đầy ý nghĩa trong lĩnh vực trí tuệ nhân tạo và
xử ảnh, thúc đẩy khả năng sáng tạo ứng dụng công nghệ để giải quyết những vấn
đề thiết thực trong cuộc sống. Chính những do trên, việc chọn nghiên cứu đề tài
“Xây dựng hệ thống khôi phục ảnh cũ sử dụng GANs” không chỉ mang tính cấp thiết mà
còn có giá trị thực tiễn và xã hội rất cao.
2. Mục tiêu của đề tài
Xây dựng một hệ thống ứng dụng GANs để khôi phục các hình ảnh cũ, bị hỏng.
Cung cấp một giải pháp tự động, hiệu quả chính xác, giảm sự can thiệp thủ
côngtrong quá trình xử lý ảnh.
Nâng cao chất lượng hình ảnh sau khôi phục, giữ lại tối đa các chi tiết quan trọng.
3. Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Thuật toán GANs các hình học sâu liên quan đến xử
và tái tạo hình ảnh.
Phạm vi nghiên cứu:
lOMoARcPSD| 59031616
Ứng dụng GANs để khôi phục các hình ảnh hoạt hình cũ bị nhoè, mờ
Phân tích đánh giá chất lượng hình ảnh sau khôi phục dựa trên các tiêu chí về
độ sắc nét, độ chính xác và tính thẩm mỹ.
4. Phương pháp nghiên cứu
Nghiên cứu lý thuyết: Tìm hiểu thuật toán GANs, kiến trúc phổ biến của GANs, các cải
tiến trong lĩnh vực học sâu và các phương pháp xử lý ảnh hiện có.
Phân tích dữ liệu: Thu thập xử tập dữ liệu hình ảnh để huấn luyện hình
GANs.
Thu thập: Dữ liệu về hình ảnh hoạt hình: 2 bộ dữ liệu 1 bộ ảnh nét, 1
bộ ảnh mờ để phục vụ cho quá trình training model
Xử dữ liệu: Loại bỏ các hình ảnh lỗi, không đạt yêu cầu Chia tập
dữ liệu thành 2 phần :
o Training Set: Dùng để huấn luyện mô hình GANs
o Test Set: Dùng để đánh giá mô hình Thực nghiệm:
Xây dựng mô hình GANs phù hợp để khôi phục hình ảnh. Sử dụng thuật toán prototype
GANs, tuỳ chỉnh tham số lớp mạng, kích thước kernel, hàm loss để phù hợp với thuật
đặc điểm của tập dữ liệu
Huấn luyện và tối ưu hóa mô hình với tập dữ liệu thu thập được.
Đánh giá: So sánh kết quả khôi phục của mô hình với các phương pháp truyền thống để
đánh giá hiệu quả.
5. Bố cục bài báo cáo
Phần còn lại của bài báo cáo có cấu trúc như sau:
Chương 1: Trình bày về sở thuyết, tập trung vào các nội dung sau: học máy,
mạng GANs, thuyết về tích chập, google Colab. Chương này sẽ tập chung cung
cấp các lý thuyết cần thiết để có thể hiểu và tự triển khai lại đề tài này.
Chương 2: Cách cài đặt bài toán, tập trung vào nội dung sau:
Phân tích tổng quan về đầu vào và đầu ra của đề tài, tiêu chí đánh giá.
Hướng dẫn thiết lập môi trường làm việc,giới thiệu về Google Colab, các thư
viện cần thiết như TensorFlow, Keras, OpenCV.
Quá trình chuẩn bị, thu thập dữ liệu.
Quá trình xây dựng mô hình GANs: các bước thiết lập hàm Generator, hàm
Discriminator.
Quá trình huấn luyện mô hình : các bước huấn luyện và thông số quan trọng
Triển khai mô hình : ứng dụng mô hình đã huấn luyện.
Chương 3: Thử nghiệm và đánh giá, tập chung vào nội dung sau:
lOMoARcPSD| 59031616
Thử nghiệm hình: Đánh giá mô hình trên tập dữ liệu Test với các mức độ
hư hỏng ảnh khác nhau.
Đánh giá hình: Sử dụng các phương pháp đánh giá phổ biến để đánh giá
mô hình
Phân tích ưu nhược điểm của hình: Xác định điểm mạnh và những hạn chế
của mô hình.
CHƯƠNG 1. THUYẾT
1.1. Học máy
Khái niệm
Học máy hay y học trong tiếng Anh là Machine learning.Học máy (ML) là một
công nghệ phát triển từ lĩnh vực trí tuệ nhân tạo. Các thuật toán MLcác chương
trình máy nh có khnăng học hỏi về cách hoàn thành các nhiệm vụ và cách cải
thiện hiệu suất theo thời gian.
ML vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu slựa
chọn các thuật phù hợp để phân ch dữ liệu. Đồng thời, trước khi sử dụng, dữ
liệu phải sạch, không có sai lệch và không có dữ liệu giả.
Các hình ML yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" đánh giá
hình. Trước đây, các thuật toán ML thiếu quyền truy cập vào một ợng lớn dữ
liệu cần thiết để hình hóa các mối quan hgiữa các dữ liệu. Sự tăng trưởng
trong dữ liệu lớn (big data) đã cung cấp c thuật toán ML với đủ dliệu để cải
thiện độ chính xác của mô hình và dự đoán.
Các loại thuật toán học máy
2 loại ML chính bao gồm học giám sát (supervised learning) học không giám
sát (unsupervised learning). Học có giám sát
Trong học có giám sát, máy tính học cách mô hình hóa các mối quan hệ dựa trên dữ liệu
được gán nhãn (labeled data). Sau khi tìm hiểu cách tốt nhất để hình hóa các mối
quan hệ cho dữ liệu được gắn nhãn, các thuật toán được huấn luyện được sử dụng cho
các bộ dữ liệu mới.
Ứng dụng của thuật học có giám sát: Xác định tín hiệu hay biến số tốt nhất để dự báo
lợi nhuận trong tương lai của cổ phiếu hoặc dự đoán xu hướng thị trường chứng khoán.
Học không giám sát
Trong học không giám sát, máy tính không được cung cấp dữ liệu được dán nhãn thay
vào đó chỉ được cung cấp dữ liệu thuật toán tìm cách tả dữ liệu cấu trúc của
chúng.
Ứng dụng của học không giám sát: Phân loại các công ty thành các nhóm công ty tương
đồng dựa trên đặc điểm của chúng thay vì sử dụng tiêu chuẩn của các nhóm ngành hoặc
các quốc gia.
lOMoARcPSD| 59031616
So sánh Supervised Learning và Unsupervised Learning
Tiêu chí
Supervised Learning
Unsupervised Learning
Dữ liệu để huấn luyện
hình
Dữ liệu có nhãn
Dữ liệu không có nhãn
Cách thức học của mô hình
hình hóa mối quan hệ
giữa biến đầu vào biến
đầu ra
Học dựa trên các quan hệ
tương tự, sự đồng xuất hiện,
hay các phép biến đổi ma
trận
Thuật toán
Support vector machine,
Neural network, Hồi quy
tuyến tính, Hồi quy
logistics, Random forest
Classification trees.
Các thuật toán clustering
như K-mean, DBSCAN,
SpectralClustering,
Hierarchical
clusteringApriori
(Association Rule
Mining)- PCA, SVD
Kết quả
Độ chính xác và tin cậy
cao
Ít chính xác hơn
Ứng dụng của học máy trong xử lí ảnh
Phân loại hình ảnh (Image Classification)
-Phân loại hình ảnh là một trong những ứng dụng phổ biến nhất của học máy trong xử lý
ảnh. Mô hình học máy sẽ học cách phân loại các hình ảnh vào các nhóm khác nhau dựa
trên các đặc điểm của chúng.
hình: Convolutional Neural Networks (CNNs) thường được sử dụng cho các bài toán
này, vì chúng đặc biệt mạnh mẽ trong việc học các đặc trưng không gian trong hình ảnh.
Nhận diện đối tượng (Object Detection)
Nhận diện đối tượng là quá trình xác định các đối tượng trong hình ảnh và xác định vị trí
của chúng (thường bằng cách sử dụng một hộp giới hạn). Đây một ứng dụng quan
trọng trong nhiều lĩnh vực, bao gồm an ninh, ô tô tự lái, và robot.
hình: Các hình phổ biến bao gồm YOLO (You Only Look Once), SSD (Single
Shot Multibox Detector), và Faster R-CNN.
Nhận diện khuôn mặt (Face Recognition)
- Nhận diện khuôn mặt một ứng dụng phổ biến trong việc bảo mật, nhận diện
khách hàng, hoặc thậm chí trong các hệ thống xác thực sinh trắc học.
Mô hình: Học sâu (Deep Learning) và CNNs là các công cụ chủ yếu để xây dựng các hệ
thống nhận diện khuôn mặt.
1.2. Mạng GANS
lOMoARcPSD| 59031616
- Kiến trúc mạng GAN (Generative Adversarial Network) một loại mạng thần
kinhnhân tạo(CNN) bao gồm hai hình chính: mạng sinh (generator) mạng phân
biệt (discriminator). Hai hình này được huấn luyện cùng nhau, trong đó mỗi mạng có
vai trò đối kháng nhau.
Hình 1: Sơ đồ của mạng GANS
Các thành phần của kiến trúc GAN
+ Bộ sinh (Generator): Bộ sinh nhận đầu vào là nhiễu (có thể là ảnh, text) và biến đổi nó
thành dữ liệu tổng hợp. Mục tiêu của nó là tạo ra dữ liệu không thể phân biệt với dữ liệu
thực, qua đó "đánh lừa" bộ phân biệt. Bộ sinh nhận phản hồi từ bộ phân biệt về hiệu suất
của nó, cho phép nó cải thiện theo thời gian.
+ Bộ phân biệt(Discriminator): Bộ phân biệt là một bộ phân loại nhị phân đánh giá xem
một đầu vào là thực (từ tập dữ liệu huấn luyện) hay giả (do bộ sinh tạo ra). Nó học cách
phân biệt giữa dữ liệu thực giả thông qua quá trình xử phạt khi phân loại sai các
mẫu. Cách hoạt động của GAN
Quá trình huấn luyện của GAN có thể được tóm tắt như sau:
Bước 1: Bộ GEN ra dữ liệu tổng hợp từ nhiễu đầu vào.
Bước 2: Dữ liệu tổng hợp này được kết hợp với dữ liệu thực và đưa vào bộ DIS.
Bước 3: Bộ DIS phân loại mỗi đầu vào là thực hay giả.
Bước 4: Dựa trên hiệu suất của mình, cả hai mạng đều cập nhật trọng số của chúng thông
qua việc lan truyền ngược:
lOMoARcPSD| 59031616
Bộ sinh nhằm tối đa hóa xác suất bộ phân biệt phân loại sai đầu ra của
thực.
Bộ phân biệt tìm cách tối thiểu hóa lỗi phân loại của nó.
Quá trình đối kháng này tiếp tục cho đến khi đạt được sự cân bằng, nơi bộ sinh sản xuất
dữ liệu rất thực mà bộ phân biệt gặp khó khăn trong việc phân loại chính xác.
1.3. Tích chập
Tích chập là gì?
Tích chập phép toán trong đó một m con (hay filter hoặc kernel) di chuyển
qua một vùng nhỏ của dữ liệu đầu vào(ví dụ: hình ảnh), tính toán giá trị tổng
hợp tại mỗi điểm trong dữ liệu đó bằng cách nhân từng phần tử của kernel với
phần tử tương ứng trong dữ liệu đầu vào và sau đó cộng lại.
Trong mạng neural, hình mạng neural tích chập (CNN) 1 trong những
hình để nhận dạng phân loại hình ảnh. Trong đó, xác định đối ợng nhận
dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi.
Convolution kỹ thuật quan trọng trong Xử Ảnh, được sử dụng chính yếu
trong các phép toán trên ảnh. Bài viết giới thiệu về kỹ thuật tích chập (convolution)
trong ảnh và cách hiện thực nó sử dụng ngôn ngữ C++.
Convolution kỹ thuật quan trọng trong Xử Ảnh, được sử dụng chính yếu
trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên cạnh
trong ảnh. Trong bài viết này, tôi trình bày về kỹ thuật tích chập trong lĩnh vực xử
ảnh cách hiện thực sử dụng ngôn ngữ C++ hỗ trợ của thư viện openCV.
Định nghĩa của tích chập theo toán học
Theo toán học, tích chập phép toán tuyến tính, cho ra kết qumột hàm bằng việc
tính toán dựa trên hai hàm đã có (f và g).
Công thức tích chập giữa hàm ảnh f(x, y) và bộ lọc k(x, y) (kích thước mxn):
Hình 2: Công thức cùa tích chập
Thành phần không thể thiếu của phép tích chập là ma trận kernel (bộ lọc). Điểm leo của
kernel sẽ quyết định vùng ma trận tương ứng trên ảnh để tích chập, thông thường điểm
leo được chọn tâm của kernel. Giá trị mỗi phần tử trên kernel được xem như hệ số
tổ hợp với lần lượt từng giá trị độ xám của điểm ảnh trong vùng tương ứng với kernel.
Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma trận kernel lần lượt
qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên trái trên của ảnh. đặt anchor
lOMoARcPSD| 59031616
point tương ng tại điểm ảnh đang xét. mỗi lần dịch chuyển, thực hiện tính toán kết
quả mới cho điểm ảnh đang xét bằng công thức tích chập.
Tính chất
Tích chập được định nghĩa 1 phép toán trên không gian khả tích của các hàm tuyến
tính, cho nên nó có tính chất giao hoán, kết hợp và phân phối.
Giao hoán: f * g = g * f
Kết hợp: f * g * h = f * (g * h)
Phân phối: f * g + f * h = f * (g + h)
Do tính chất kết hợp của phép tích chập, khi một phép xử ảnh yêu cầu thực hiện tích
chập liên tiếp với nhiều bộ lọc (kernel) f * g * h. Ta có thể tính toán trước ma trận kernel
để "giảm đphức tạp tính toán" k = v * h do kích thước ma trận kernel hầu nrất nhỏ
so với ảnh. Lúc này, thay vì thực hiện tích chập theo thứ tự r = (f * g) * h, ta thực hiện r
= f * (v * h) = f * k.
Tối ưu thực hiện
Convolution vẫn còn một kỹ thuật với độ phức tạp tính toán cao. Một số ch dưới đây
có thể tối ưu tốc độ của convolution:
Mỗi phần tử trong ma trận kernel nên số nguyên: như trong ví dụ trên, các phần
tử trong kernel thực ra là số thực, tuy nhiên, tôi thực hiện chuyển sang ma trận số
nguyên với số hạng chung cho tất cả các phần tử, kết quả tích chập sẽ nhân cho số
hạng chung này.
Kernel nên thực hiện lưu trong mảng một chiều.
Tạo ma trận chỉ số truy cập nhanh, với cách này thể truy cập nhanh đến pixel
trên ảnh, tương ứng với kernel mà không cần tính toán chỉ số thêm lần nữa.
1.4. Google colaboratory
1.4.1. Giới thiệu về google colaboratory
Google Colaboratory, hay thường được gọi tắt Colab, là một dịch vụ máy học dựa trên
đám mây của Google, cung cấp cho người dùng một môi trường tương tác để viết thực
thi mã Python. Với giao diện trực quan và khả năng tích hợp liền mạch với các thư viện
khoa học dữ liệu phổ biến như TensorFlow, PyTorch, Keras, Colab đã trở thành một
công cụ không thể thiếu cho các nhà khoa học dữ liệu, kỹ máy học những người
đam mê AI.
Một trong những ưu điểm nổi bật của Colab khả năng cung cấp miễn phí các tài nguyên
tính toán mạnh mẽ như GPU và TPU. Điều này đặc biệt hữu ích cho việc huấn luyện các
hình học sâu phức tạp, vốn đòi hỏi nhiều tài nguyên tính toán. Nhờ đó, người dùng
có thể nhanh chóng thử nghiệm các ý tưởng mới và phát triển các hình hiệu quả cao
mà không cần đầu tư vào phần cứng đắt tiền.
lOMoARcPSD| 59031616
Bên cạnh đó, Colab còn hỗ trợ chia sẻ và cộng tác một cách dễ dàng. Người dùng có thể
tạo các notebook Colab, chia sẻ chúng với đồng nghiệp hoặc cộng đồng trực tuyến để
cùng nhau làm việc học hỏi. Tính năng này đặc biệt hữu ích trong các dự án nghiên
cứu, khi cần nhiều người cùng tham gia vào quá trình phát triển mô hình.
Hình 3: Giao diện của google colaboratory
1.4.2. Môi trường thực thi
Để thực thi các dòng lệnh trên Google Colab, bạn click vào nút Play ở đầu mỗi code cell
hoặc chọn code cell cần thực thi sau đó dùng tổ hợp phím tắt Shift + Enter. Bạn cũng
thể sử dụng Menu Runtime với các tuỳ chọn thực thi đa dạng như:
Run all: thực thi toàn bộ các dòng lệnh có trong Colab
Run before: Thực thi các dòng lệnh xuất hiện trước code cell bạn đang chọn
Run the focus cell: Thực thi code cell bạn đang chọn
Run the selection: Thực thi các code cell bạn lựa chọn
Run after: Thực thi các code cell kể từ code cell bạn đang chọn về sau
Khi sử dụng Colab cho các project liên quan đến Machine Learning thể bạn sẽ muốn
khai thác tối đa sức mạnh của Google Colab để thực thi với ít thời gian hơn. Khi đó tùy
chọn tăng tốc phần cứng với GPU hoặc TPU sẽ trở nên cực kỳ hữu ích.
Để thay đổi tùy chọn Runtime, bạn tìm từ Menu > Runtime > Change runtime type.
Để cài đặt thư viện mới không sẵn trong Google Colab, bạn thực thi câu lệnh pip install
package_name ở 1 code cell bất kỳ trong đó package_name là tên thư viện bạn muốn cài
đặt thêm. Ví dụ, để cài đặt thư viện facebook business sdk cho Python, chúng ta thực thi
câu lệnh pip install facebook_business.
Thông thường bạn sẽ phải cài đặt lại các thư viện không sẵn khi làm việc với Colab
sau khi kết thúc session làm việc trước đó 1 thời gian (không con số cụ thể, có thể
lOMoARcPSD| 59031616
15 – 30 phút không hoạt động). Điều này cũng gây ra đôi chút khó chịu và mất thời gian
để cài lại các thư viện nếu bạn sử dụng nhiều thư viện bên ngoài.
Để import 1 thư viện bất kỳ vào Colab bạn sử dụng câu lệnh import package_name as
something trong đó package_name là thư viện bạn muốn import, something ở đây là tên
ngắn gọn (alias) bạn muốn đặt cho thư viện đó để tiện gọi thư viện khi làm việc. Ví dụ,
i muốn import thư viện pandas và gán cho nó cái tên rút gọn là pd, tôi sẽ nhập câu lệnh
sau vào 1 code cell và thực thi: import pandas as pd.
Trong một số trường hợp tên thư viện của bạn đã ngắn gọn sẵn thì không cần thiết phải
gán alias, bạn có thể import thư viện với câu lệnh đơn giản import package_name.
Tóm lại:
Google Colab (Collaboratory) một dịch vtrực tuyến miễn phí của Google, rất phù
hợp cho các dự án về huấn luyện mô hình với quy mô nhỏ và mang tính thử nghiệm.
Ở dự án này chúng tôi sử dụng Google Colab để làm môi trường huấn luyện cho Model
GANS nhằm giải quyết bài toán xử lý ảnh này.
lOMoARcPSD| 59031616
CHƯƠNG 2. XÂY DỰNG THỬ NGHIỆM
2.1. Tổng quan mô hình
2.1.1. Sơ đồ hệ thống
Để minh họa tổng quan về hệ thống, đồ ới đây thể hiện các thành phần chính
cách chúng tương tác với nhau:
Hình 4 : Sơ đồ mạng GANs
đồ bao gồm c ớc chính từ việc thu thập dữ liệu đầu vào, xử dữ liệu, đến việc
hiển thị kết quả dự đoán.
2.1.2. Tổng quan về hệ thống
Hệ thống được xây dựng nhằm khôi phục hình ảnh mờ bằng cách sử dụng mạng GANs
(Generative Adversarial Networks). Quá trình này bao gồm ba giai đoạn chính:
- Thu thập và xử lý dữ liệu: Hình ảnh đầu vào được thu thập và chuẩn hóa.
- Huấn luyện hình GAN: hình GAN được huấn luyện để học cách khôi phục chi
tiết từ hình ảnh mờ.
- Đánh giá và triển khai: Kết quả đầu ra được đánh giá dựa trên các tiêu chí về độ nét và
độ chính xác.
2.2. Cài đặt bài toán
2.2.1. Import các thư viện
lOMoARcPSD| 59031616
Hình 5: Import các thư viện cần thiết
Hình 6: Định dạng và đường dẫn đến file RAR
2.2.2. Dữ liệu đầu vào
lOMoARcPSD| 59031616
Hình 7: Xử lý ảnh màu
Phần xử ảnh màu từ file RAR trong đoạn thực hiện nhiều bước quan trọng để chuẩn
bị dữ liệu đầu vào cho hình học máy. Đầu tiên, các ảnh trong file RAR được mở
đọc dưới dạng mảng byte, sau đó sử dụng OpenCV để giải mã mảng byte thành các ảnh
thực tế. Để đảm bảoc ảnh có thể sử dụng được trong mô hình, chúng sẽ được chuyển
đổi từ không gian màu BGR (mặc định của OpenCV) sang không gian màu RGB. Tiếp
theo, ảnh sẽ được điều chỉnh về kích thước 256x256 pixel, một kích thước tiêu chuẩn phù
hợp với yêu cầu của hình học sâu, giúp hình xử dữ liệu đồng nhất. Sau khi thay
đổi kích thước, mỗi ảnh sẽ được chuẩn hóa giá trị điểm ảnh, chuyển từ phạm vi [0, 255]
thành [0, 1] bằng cách chia mỗi giá trị điểm ảnh cho 255. Quá trình này giúp cải thiện
hiệu suất học máy, vì các giá trị chuẩn hóa giúp mô hình học nhanh hơn và ổn định hơn.
Cuối cùng, những ảnh đã qua xử lý này sẽ được lưu trữ vào danh sách color_img, chuẩn
bị cho các bước tiếp theo trong quá trình huấn luyện mô hình học sâu. Toàn bộ quá trình
đảm bảo rằng dữ liệu ảnh đầu vào được chuẩn bị một cách chính xác hiệu quả để cung
cấp cho mô hình.
Hình 8: Xử lý ảnh xám
Phần xử ảnh xám từ file RAR tương tự như phần xử ảnh màu, nhưng với một số
điểm khác biệt nhỏ. Đầu tiên, các ảnh trong file RAR chứa ảnh xám được mở đọc dưới
dạng mảng byte, sau đó sử dụng OpenCV để giải mảng byte thành các ảnh thực tế.
Các ảnh này được chuyển từ không gian màu BGR sang không gian màu RGB. Mặc
ảnh xám có thể chỉ có một kênh màu, nhưng trong trường hợp này, chúng ta vẫn chuyển
đổi sang không gian màu RGB để dễ dàng xử lý cùng với các ảnh màu. Tiếp theo, ảnh sẽ
lOMoARcPSD| 59031616
được điều chỉnh kích thước về 256x256 pixel, phù hợp với yêu cầu của mô nh. Sau khi
thay đổi kích thước, các giá trị điểm ảnh sẽ được chuẩn hóa từ phạm vi [0, 255] thành [0,
1] bằng cách chia cho 255, nhằm giúp mô hình học hiệu quả hơn. Cuối cùng, các ảnh đã
qua xử sẽ được lưu vào danh sách gray_img, chuẩn bị cho các ớc tiếp theo trong
quá trình huấn luyện mô hình. Quá trình này giúp đảm bảo rằng ảnh xám được chuẩn bị
một cách đồng nhất với ảnh màu, tạo ra một bộ dữ liệu đầu vào sẵn sàng cho hình
học sâu.
Hình 9: tạo Dataset
Tạo ra các đối tượng Dataset từ các mảng ảnh màu ảnh xám đã được xử trước đó,
giúp chuẩn bị dữ liệu cho quá trình huấn luyện và kiểm tra mô hình học sâu.
Hình 10: Hiển thị ảnh mẫu
Hiển thị các cặp ảnh màu và ảnh xám từ example_color và example_gray. Mỗi cặp ảnh
được hiển thị trong hai cột bên nhau, với ảnh màu ở cột bên trái và ảnh xám ở cột bên
phải
lOMoARcPSD| 59031616
Ảnh màu là đại diện cho tệp data ảnh nét, ảnh xám là đại diện cho tệp data ảnh mờ
lOMoARcPSD| 59031616
2.2.3. Cấu hình mô hình GANS
Hình 11: Downsample và Upsample
Hai hàm downsample upsample, được sử dụng trong các mô hình học sâu để giảm dần
hoặc tăng dần kích thước của ảnh qua các lớp CNN (Convolutional Neural Network).
Hàm downsample:
lOMoARcPSD| 59031616
Chức năng của hàm này giảm kích thước của ảnh (downsampling) thông qua lớp
Conv2D.
sử dụng một lớp tích chập với kernel khởi tạo theo phương pháp he_normal không
sử dụng bias.
Nếu apply_batchnorm True, hàm sẽ thêm lớp BatchNormalization để chuẩn hóa dữ
liệu sau khi qua lớp Conv2D.
Sau đó, lớp LeakyReLU được áp dụng để giúp cải thiện quá trình học tránh vấn đề
chết neuron.
Hàm upsample:
Chức năng của hàm này là tăng kích thước ảnh (upsampling) sử dụng lớp
Conv2DTranspose, một lớp thường dùng trong các mô hình như GAN (Generative
Adversarial Networks) để tăng kích thước ảnh đầu ra.
Nó cũng sử dụng BatchNormalization để chuẩn hóa sau lớp Conv2DTranspose.
Nếu tham số apply_dropout là True, hàm sẽ thêm lớp Dropout với tỷ lệ 50% nhằm giảm
thiểu hiện tượng overfitting trong quá trình huấn luyện.
Cuối cùng, lớp ReLU được áp dụng để đưa ảnh đầu ra vào một không gian phi tuyến tính,
giúp mô hình học tốt hơn.
- Hai hàm này đóng vai trò quan trong trong mô hình GANS

Preview text:

lOMoAR cPSD| 59031616
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CHƯƠNG 1. BÁO CÁO BÀI TẬP LỚN XỬ LÝ ẢNH NĂM HỌC 2024-2025
Xây dựng hệ thống khôi phục ảnh cũ sử dụng GANs Tên thành viên Mã sinh viên Nguyễn Văn Quân B21DCCN615 Vũ Danh Phong B21DCCN590 Nguyễn Văn Mạnh B21DCCN517 Nguyễn Hoàng Nam B21DCCN551 Lê Sỹ Khánh B21DCDT119 Hà Nội-11/2024 lOMoAR cPSD| 59031616 MỤC LỤC
MỞ ĐẦU...............................................................................................................................1
1. Lý do chọn đề tài.................................................................................................1
2. Mục tiêu của đề tài...............................................................................................1
3. Đối tượng và phạm vi nghiên cứu........................................................................2
4. Phương pháp nghiên cứu.....................................................................................2
5. Bố cục bài báo cáo...............................................................................................3 CHƯƠNG 1.
Lý thuyết.............................................................................................4
1.1. Học máy...........................................................................................................4
1.2. Mạng GANS.....................................................................................................6
1.3. Tích chập..........................................................................................................7
1.4. Google colaboratory.........................................................................................8
1.4.1. Giới thiệu về google colaboratory..............................................................8
1.4.2. Môi trường thực thi....................................................................................9 CHƯƠNG 2.
Xây dựng thử nghiệm........................................................................11 2.1.
Tổng quan mô hình.........................................................................................11
2.1.1. Sơ đồ hệ thống.........................................................................................11
2.1.2. Tổng quan về hệ thống.............................................................................11 2.2.
Cài đặt bài toán...............................................................................................12
2.2.1. Import các thư viện..................................................................................12
2.2.2. Dữ liệu đầu vào........................................................................................13
2.2.3. Cấu hình mô hình GANS.........................................................................17
2.2.1. Quá trình training.....................................................................................22 2.3.
Đầu ra bài toán...............................................................................................24 CHƯƠNG 3.
THÍ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ......................................27 3.1.
Thử nghiệm....................................................................................................27
3.1.1. Dữ liệu thử nghiệm..................................................................................27
3.1.2. Quy Trình Thử Nghiệm...........................................................................27
3.1.3. Các bước thực hiện..................................................................................27
3.1.4. Kết quả....................................................................................................27 3.2.
Đánh giá.........................................................................................................28
3.2.1. Trực quan....................................................................................28 lOMoAR cPSD| 59031616
3.2.2. Đánh giá qua PSNR, SSIM, MSE...........................................29
CHƯƠNG 4. KẾT LUẬN.......................................................................................31 DANH MỤC HÌNH ẢNH
Hình 1: Sơ đồ của mạng GANS ...................................................................................... 5
Hình 2: Công thức cùa tích chập ..................................................................................... 6
Hình 3: Giao diện của google colaboratory .................................................................... 8
Hình 4 : Sơ đồ mạng GANs .......................................................................................... 10
Hình 5: Import các thư viện cần thiết ............................................................................ 11
Hình 6: Định dạng và đường dẫn đến file RAR ............................................................ 11
Hình 7: Xử lý ảnh màu .................................................................................................. 12
Hình 8: Xử lý ảnh xám .................................................................................................. 12
Hình 9: tạo Dataset ........................................................................................................ 13
Hình 10: Hiển thị ảnh mẫu ............................................................................................ 13
Hình 11: Downsample và Upsample ............................................................................. 15
Hình 12: Generator ........................................................................................................ 17
Hình 13: Generator ........................................................................................................ 18
Hình 14: Hàm Discriminator ......................................................................................... 19
Hình 15: Hàm Loss........................................................................................................ 20
Hình 16: Quá trình training ........................................................................................... 21
Hình 17: Hàm Fit ........................................................................................................... 22
Hình 18: Gen ra ảnh dự đoán ........................................................................................ 23
Hình 19: Hiển thị hình ảnh ............................................................................................ 24 lOMoAR cPSD| 59031616
DANH MỤC TỪ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt GANs Generative Adversarial
Mạng đối kháng tạo sinh Networks AI Artificial Intelligence Trí tuệ nhân tạo ML Machine Learning Học máy CNN Convolutional Mạng nơ-ron tích chập Neural Network PSNR
Peak Signal-to-Noise Tỷ lệ tín hiệu trên nhiễu Ratio cao nhất SSIM Structural
Chỉ số tương đồng cấu Similarity Index trúc MSE Mean Squared Error Sai số trung bình bình phương lOMoAR cPSD| 59031616 MỞ ĐẦU 1.
Lý do chọn đề tài
Trong thời đại công nghệ số, hình ảnh không chỉ là phương tiện lưu trữ ký ức mà còn
đóng vai trò quan trọng trong việc bảo tồn các giá trị văn hóa, lịch sử và gia đình. Tuy
nhiên, qua thời gian, nhiều hình ảnh quý giá đã bị hư hỏng, phai màu hoặc mất chi tiết
do tác động của môi trường, tuổi thọ vật liệu hoặc sự lưu trữ không đúng cách. Việc phục
hồi những hình ảnh này là một nhu cầu thiết yếu, không chỉ nhằm tái hiện lại quá khứ mà
còn tạo điều kiện để các thế hệ sau có thể tiếp cận và hiểu rõ hơn về những giá trị đã qua.
Trước đây, việc khôi phục hình ảnh thường được thực hiện thủ công bởi các chuyên gia
thiết kế đồ họa hoặc các nhà phục chế nghệ thuật. Tuy nhiên, phương pháp này đòi hỏi
thời gian, công sức, và đặc biệt phụ thuộc vào kỹ năng và kinh nghiệm của người thực
hiện. Điều này khiến cho quá trình phục hồi ảnh không chỉ tốn kém mà còn không đảm
bảo được sự đồng nhất về chất lượng trên quy mô lớn.
Sự phát triển mạnh mẽ của trí tuệ nhân tạo (AI) và học sâu (Deep Learning) trong những
năm gần đây đã mang lại một giải pháp đột phá cho vấn đề này. Đặc biệt, Mạng đối kháng
sinh (Generative Adversarial Networks - GANs) đã chứng minh tiềm năng vượt trội trong
lĩnh vực tái tạo và xử lý ảnh. GANs hoạt động dựa trên nguyên tắc hai mạng neural (mạng
sinh và mạng phân biệt) đối kháng với nhau, từ đó tạo ra các hình ảnh có chất lượng cao
và chi tiết sát thực tế. Điều này mở ra cơ hội để áp dụng GANs trong việc khôi phục hình
ảnh cũ, giúp tái hiện lại những chi tiết đã mất một cách tự động, nhanh chóng và hiệu quả.
Cuối cùng, việc nghiên cứu và phát triển một hệ thống khôi phục ảnh cũ sử dụng GANs
không chỉ mang ý nghĩa khoa học mà còn góp phần nâng cao ý thức bảo tồn và tôn vinh
các giá trị lịch sử. Đây là một thách thức đầy ý nghĩa trong lĩnh vực trí tuệ nhân tạo và
xử lý ảnh, thúc đẩy khả năng sáng tạo và ứng dụng công nghệ để giải quyết những vấn
đề thiết thực trong cuộc sống. Chính vì những lý do trên, việc chọn nghiên cứu đề tài
“Xây dựng hệ thống khôi phục ảnh cũ sử dụng GANs” không chỉ mang tính cấp thiết mà
còn có giá trị thực tiễn và xã hội rất cao. 2.
Mục tiêu của đề tài
• Xây dựng một hệ thống ứng dụng GANs để khôi phục các hình ảnh cũ, bị hỏng.
• Cung cấp một giải pháp tự động, hiệu quả và chính xác, giảm sự can thiệp thủ
côngtrong quá trình xử lý ảnh.
• Nâng cao chất lượng hình ảnh sau khôi phục, giữ lại tối đa các chi tiết quan trọng. 3.
Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Thuật toán GANs và các mô hình học sâu liên quan đến xử lý và tái tạo hình ảnh.
Phạm vi nghiên cứu: lOMoAR cPSD| 59031616 •
Ứng dụng GANs để khôi phục các hình ảnh hoạt hình cũ bị nhoè, mờ •
Phân tích và đánh giá chất lượng hình ảnh sau khôi phục dựa trên các tiêu chí về
độ sắc nét, độ chính xác và tính thẩm mỹ. 4.
Phương pháp nghiên cứu
Nghiên cứu lý thuyết: Tìm hiểu thuật toán GANs, kiến trúc phổ biến của GANs, các cải
tiến trong lĩnh vực học sâu và các phương pháp xử lý ảnh hiện có.
Phân tích dữ liệu: Thu thập và xử lý tập dữ liệu hình ảnh cũ để huấn luyện mô hình GANs.
• Thu thập: Dữ liệu về hình ảnh hoạt hình: 2 bộ dữ liệu 1 bộ ảnh nét, 1
bộ ảnh mờ để phục vụ cho quá trình training model
• Xử lý dữ liệu: Loại bỏ các hình ảnh lỗi, không đạt yêu cầu Chia tập dữ liệu thành 2 phần :
o Training Set: Dùng để huấn luyện mô hình GANs
o Test Set: Dùng để đánh giá mô hình Thực nghiệm:
Xây dựng mô hình GANs phù hợp để khôi phục hình ảnh. Sử dụng thuật toán prototype
GANs, tuỳ chỉnh tham số lớp mạng, kích thước kernel, hàm loss để phù hợp với thuật
đặc điểm của tập dữ liệu
Huấn luyện và tối ưu hóa mô hình với tập dữ liệu thu thập được.
Đánh giá: So sánh kết quả khôi phục của mô hình với các phương pháp truyền thống để đánh giá hiệu quả. 5.
Bố cục bài báo cáo
Phần còn lại của bài báo cáo có cấu trúc như sau:
Chương 1: Trình bày về cơ sở lý thuyết, tập trung vào các nội dung sau: học máy,
mạng GANs, lý thuyết về tích chập, google Colab. Chương này sẽ tập chung cung
cấp các lý thuyết cần thiết để có thể hiểu và tự triển khai lại đề tài này.
Chương 2: Cách cài đặt bài toán, tập trung vào nội dung sau:
• Phân tích tổng quan về đầu vào và đầu ra của đề tài, tiêu chí đánh giá.
• Hướng dẫn thiết lập môi trường làm việc,giới thiệu về Google Colab, các thư
viện cần thiết như TensorFlow, Keras, OpenCV.
• Quá trình chuẩn bị, thu thập dữ liệu.
• Quá trình xây dựng mô hình GANs: các bước thiết lập hàm Generator, hàm Discriminator.
• Quá trình huấn luyện mô hình : các bước huấn luyện và thông số quan trọng
Triển khai mô hình : ứng dụng mô hình đã huấn luyện.
Chương 3: Thử nghiệm và đánh giá, tập chung vào nội dung sau: lOMoAR cPSD| 59031616
• Thử nghiệm mô hình: Đánh giá mô hình trên tập dữ liệu Test với các mức độ hư hỏng ảnh khác nhau.
• Đánh giá mô hình: Sử dụng các phương pháp đánh giá phổ biến để đánh giá mô hình
• Phân tích ưu nhược điểm của mô hình: Xác định điểm mạnh và những hạn chế của mô hình.
CHƯƠNG 1. LÝ THUYẾT 1.1. Học máy Khái niệm
• Học máy hay máy học trong tiếng Anh là Machine learning.Học máy (ML) là một
công nghệ phát triển từ lĩnh vực trí tuệ nhân tạo. Các thuật toán ML là các chương
trình máy tính có khả năng học hỏi về cách hoàn thành các nhiệm vụ và cách cải
thiện hiệu suất theo thời gian.
• ML vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu cơ sở và lựa
chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời, trước khi sử dụng, dữ
liệu phải sạch, không có sai lệch và không có dữ liệu giả.
• Các mô hình ML yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh giá mô
hình. Trước đây, các thuật toán ML thiếu quyền truy cập vào một lượng lớn dữ
liệu cần thiết để mô hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng trưởng
trong dữ liệu lớn (big data) đã cung cấp các thuật toán ML với đủ dữ liệu để cải
thiện độ chính xác của mô hình và dự đoán.
Các loại thuật toán học máy
Có 2 loại ML chính bao gồm học có giám sát (supervised learning) và học không giám
sát (unsupervised learning). Học có giám sát
Trong học có giám sát, máy tính học cách mô hình hóa các mối quan hệ dựa trên dữ liệu
được gán nhãn (labeled data). Sau khi tìm hiểu cách tốt nhất để mô hình hóa các mối
quan hệ cho dữ liệu được gắn nhãn, các thuật toán được huấn luyện được sử dụng cho các bộ dữ liệu mới.
Ứng dụng của kĩ thuật học có giám sát: Xác định tín hiệu hay biến số tốt nhất để dự báo
lợi nhuận trong tương lai của cổ phiếu hoặc dự đoán xu hướng thị trường chứng khoán. • Học không giám sát
Trong học không giám sát, máy tính không được cung cấp dữ liệu được dán nhãn mà thay
vào đó chỉ được cung cấp dữ liệu mà thuật toán tìm cách mô tả dữ liệu và cấu trúc của chúng.
Ứng dụng của học không giám sát: Phân loại các công ty thành các nhóm công ty tương
đồng dựa trên đặc điểm của chúng thay vì sử dụng tiêu chuẩn của các nhóm ngành hoặc các quốc gia. lOMoAR cPSD| 59031616
So sánh Supervised Learning và Unsupervised Learning Tiêu chí Supervised Learning Unsupervised Learning
Dữ liệu để huấn luyện mô Dữ liệu có nhãn Dữ liệu không có nhãn hình
Cách thức học của mô hình Mô hình hóa mối quan hệ Học dựa trên các quan hệ
giữa biến đầu vào và biến tương tự, sự đồng xuất hiện, đầu ra
hay các phép biến đổi ma trận Thuật toán
Support vector machine, Các thuật toán clustering
Neural network, Hồi quy như K-mean, DBSCAN, tuyến tính, Hồi quy SpectralClustering,
logistics, Random forest và Hierarchical Classification trees. clusteringApriori (Association Rule Mining)- PCA, SVD Kết quả
Độ chính xác và tin cậy Ít chính xác hơn cao
Ứng dụng của học máy trong xử lí ảnh
• Phân loại hình ảnh (Image Classification)
-Phân loại hình ảnh là một trong những ứng dụng phổ biến nhất của học máy trong xử lý
ảnh. Mô hình học máy sẽ học cách phân loại các hình ảnh vào các nhóm khác nhau dựa
trên các đặc điểm của chúng.
Mô hình: Convolutional Neural Networks (CNNs) thường được sử dụng cho các bài toán
này, vì chúng đặc biệt mạnh mẽ trong việc học các đặc trưng không gian trong hình ảnh.
• Nhận diện đối tượng (Object Detection)
Nhận diện đối tượng là quá trình xác định các đối tượng trong hình ảnh và xác định vị trí
của chúng (thường là bằng cách sử dụng một hộp giới hạn). Đây là một ứng dụng quan
trọng trong nhiều lĩnh vực, bao gồm an ninh, ô tô tự lái, và robot.
Mô hình: Các mô hình phổ biến bao gồm YOLO (You Only Look Once), SSD (Single
Shot Multibox Detector), và Faster R-CNN.
• Nhận diện khuôn mặt (Face Recognition) -
Nhận diện khuôn mặt là một ứng dụng phổ biến trong việc bảo mật, nhận diện
khách hàng, hoặc thậm chí trong các hệ thống xác thực sinh trắc học.
Mô hình: Học sâu (Deep Learning) và CNNs là các công cụ chủ yếu để xây dựng các hệ
thống nhận diện khuôn mặt. 1.2. Mạng GANS lOMoAR cPSD| 59031616 -
Kiến trúc mạng GAN (Generative Adversarial Network) là một loại mạng thần
kinhnhân tạo(CNN) bao gồm hai mô hình chính: mạng sinh (generator) và mạng phân
biệt (discriminator). Hai mô hình này được huấn luyện cùng nhau, trong đó mỗi mạng có vai trò đối kháng nhau.
Hình 1: Sơ đồ của mạng GANS
Các thành phần của kiến trúc GAN
+ Bộ sinh (Generator): Bộ sinh nhận đầu vào là nhiễu (có thể là ảnh, text) và biến đổi nó
thành dữ liệu tổng hợp. Mục tiêu của nó là tạo ra dữ liệu không thể phân biệt với dữ liệu
thực, qua đó "đánh lừa" bộ phân biệt. Bộ sinh nhận phản hồi từ bộ phân biệt về hiệu suất
của nó, cho phép nó cải thiện theo thời gian.
+ Bộ phân biệt(Discriminator): Bộ phân biệt là một bộ phân loại nhị phân đánh giá xem
một đầu vào là thực (từ tập dữ liệu huấn luyện) hay giả (do bộ sinh tạo ra). Nó học cách
phân biệt giữa dữ liệu thực và giả thông qua quá trình xử phạt khi nó phân loại sai các
mẫu. Cách hoạt động của GAN
Quá trình huấn luyện của GAN có thể được tóm tắt như sau:
Bước 1: Bộ GEN ra dữ liệu tổng hợp từ nhiễu đầu vào.
Bước 2: Dữ liệu tổng hợp này được kết hợp với dữ liệu thực và đưa vào bộ DIS.
Bước 3: Bộ DIS phân loại mỗi đầu vào là thực hay giả.
Bước 4: Dựa trên hiệu suất của mình, cả hai mạng đều cập nhật trọng số của chúng thông
qua việc lan truyền ngược: lOMoAR cPSD| 59031616
• Bộ sinh nhằm tối đa hóa xác suất mà bộ phân biệt phân loại sai đầu ra của nó là thực.
• Bộ phân biệt tìm cách tối thiểu hóa lỗi phân loại của nó.
Quá trình đối kháng này tiếp tục cho đến khi đạt được sự cân bằng, nơi bộ sinh sản xuất
dữ liệu rất thực mà bộ phân biệt gặp khó khăn trong việc phân loại chính xác. 1.3. Tích chập Tích chập là gì?
• Tích chập là phép toán trong đó một hàm con (hay filter hoặc kernel) di chuyển
qua một vùng nhỏ của dữ liệu đầu vào(ví dụ: hình ảnh), và tính toán giá trị tổng
hợp tại mỗi điểm trong dữ liệu đó bằng cách nhân từng phần tử của kernel với
phần tử tương ứng trong dữ liệu đầu vào và sau đó cộng lại.
• Trong mạng neural, mô hình mạng neural tích chập (CNN) là 1 trong những mô
hình để nhận dạng và phân loại hình ảnh. Trong đó, xác định đối tượng và nhận
dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi.
• Convolution là kỹ thuật quan trọng trong Xử Lý Ảnh, được sử dụng chính yếu
trong các phép toán trên ảnh. Bài viết giới thiệu về kỹ thuật tích chập (convolution)
trong ảnh và cách hiện thực nó sử dụng ngôn ngữ C++.
• Convolution là kỹ thuật quan trọng trong Xử Lý Ảnh, được sử dụng chính yếu
trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên cạnh
trong ảnh. Trong bài viết này, tôi trình bày về kỹ thuật tích chập trong lĩnh vực xử
lý ảnh và cách hiện thực nó sử dụng ngôn ngữ C++ có hỗ trợ của thư viện openCV.
Định nghĩa của tích chập theo toán học
Theo toán học, tích chập là phép toán tuyến tính, cho ra kết quả là một hàm bằng việc
tính toán dựa trên hai hàm đã có (f và g).
Công thức tích chập giữa hàm ảnh f(x, y) và bộ lọc k(x, y) (kích thước mxn):
Hình 2: Công thức cùa tích chập
Thành phần không thể thiếu của phép tích chập là ma trận kernel (bộ lọc). Điểm leo của
kernel sẽ quyết định vùng ma trận tương ứng trên ảnh để tích chập, thông thường điểm
leo được chọn là tâm của kernel. Giá trị mỗi phần tử trên kernel được xem như là hệ số
tổ hợp với lần lượt từng giá trị độ xám của điểm ảnh trong vùng tương ứng với kernel.
Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma trận kernel lần lượt
qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên trái trên của ảnh. Và đặt anchor lOMoAR cPSD| 59031616
point tương ứng tại điểm ảnh đang xét. Ở mỗi lần dịch chuyển, thực hiện tính toán kết
quả mới cho điểm ảnh đang xét bằng công thức tích chập. Tính chất
Tích chập được định nghĩa là 1 phép toán trên không gian khả tích của các hàm tuyến
tính, cho nên nó có tính chất giao hoán, kết hợp và phân phối. Giao hoán: f * g = g * f
Kết hợp: f * g * h = f * (g * h)
Phân phối: f * g + f * h = f * (g + h)
Do tính chất kết hợp của phép tích chập, khi một phép xử lý ảnh yêu cầu thực hiện tích
chập liên tiếp với nhiều bộ lọc (kernel) f * g * h. Ta có thể tính toán trước ma trận kernel
để "giảm độ phức tạp tính toán" k = v * h do kích thước ma trận kernel hầu như rất nhỏ
so với ảnh. Lúc này, thay vì thực hiện tích chập theo thứ tự r = (f * g) * h, ta thực hiện r = f * (v * h) = f * k.
Tối ưu thực hiện
Convolution vẫn còn là một kỹ thuật với độ phức tạp tính toán cao. Một số cách dưới đây
có thể tối ưu tốc độ của convolution:
• Mỗi phần tử trong ma trận kernel nên là số nguyên: như trong ví dụ trên, các phần
tử trong kernel thực ra là số thực, tuy nhiên, tôi thực hiện chuyển sang ma trận số
nguyên với số hạng chung cho tất cả các phần tử, kết quả tích chập sẽ nhân cho số hạng chung này.
• Kernel nên thực hiện lưu trong mảng một chiều.
• Tạo ma trận chỉ số truy cập nhanh, với cách này có thể truy cập nhanh đến pixel
trên ảnh, tương ứng với kernel mà không cần tính toán chỉ số thêm lần nữa. 1.4. Google colaboratory
1.4.1. Giới thiệu về google colaboratory
Google Colaboratory, hay thường được gọi tắt là Colab, là một dịch vụ máy học dựa trên
đám mây của Google, cung cấp cho người dùng một môi trường tương tác để viết và thực
thi mã Python. Với giao diện trực quan và khả năng tích hợp liền mạch với các thư viện
khoa học dữ liệu phổ biến như TensorFlow, PyTorch, và Keras, Colab đã trở thành một
công cụ không thể thiếu cho các nhà khoa học dữ liệu, kỹ sư máy học và những người đam mê AI.
Một trong những ưu điểm nổi bật của Colab là khả năng cung cấp miễn phí các tài nguyên
tính toán mạnh mẽ như GPU và TPU. Điều này đặc biệt hữu ích cho việc huấn luyện các
mô hình học sâu phức tạp, vốn đòi hỏi nhiều tài nguyên tính toán. Nhờ đó, người dùng
có thể nhanh chóng thử nghiệm các ý tưởng mới và phát triển các mô hình hiệu quả cao
mà không cần đầu tư vào phần cứng đắt tiền. lOMoAR cPSD| 59031616
Bên cạnh đó, Colab còn hỗ trợ chia sẻ và cộng tác một cách dễ dàng. Người dùng có thể
tạo các notebook Colab, chia sẻ chúng với đồng nghiệp hoặc cộng đồng trực tuyến để
cùng nhau làm việc và học hỏi. Tính năng này đặc biệt hữu ích trong các dự án nghiên
cứu, khi cần nhiều người cùng tham gia vào quá trình phát triển mô hình.
Hình 3: Giao diện của google colaboratory
1.4.2. Môi trường thực thi
Để thực thi các dòng lệnh trên Google Colab, bạn click vào nút Play ở đầu mỗi code cell
hoặc chọn code cell cần thực thi sau đó dùng tổ hợp phím tắt Shift + Enter. Bạn cũng có
thể sử dụng Menu Runtime với các tuỳ chọn thực thi đa dạng như:
Run all: thực thi toàn bộ các dòng lệnh có trong Colab
Run before: Thực thi các dòng lệnh xuất hiện trước code cell bạn đang chọn
Run the focus cell: Thực thi code cell bạn đang chọn
Run the selection: Thực thi các code cell bạn lựa chọn
Run after: Thực thi các code cell kể từ code cell bạn đang chọn về sau
Khi sử dụng Colab cho các project liên quan đến Machine Learning có thể bạn sẽ muốn
khai thác tối đa sức mạnh của Google Colab để thực thi với ít thời gian hơn. Khi đó tùy
chọn tăng tốc phần cứng với GPU hoặc TPU sẽ trở nên cực kỳ hữu ích.
Để thay đổi tùy chọn Runtime, bạn tìm từ Menu > Runtime > Change runtime type.
Để cài đặt thư viện mới không có sẵn trong Google Colab, bạn thực thi câu lệnh pip install
package_name ở 1 code cell bất kỳ trong đó package_name là tên thư viện bạn muốn cài
đặt thêm. Ví dụ, để cài đặt thư viện facebook business sdk cho Python, chúng ta thực thi
câu lệnh pip install facebook_business.
Thông thường bạn sẽ phải cài đặt lại các thư viện không có sẵn khi làm việc với Colab
sau khi kết thúc session làm việc trước đó 1 thời gian (không có con số cụ thể, có thể là lOMoAR cPSD| 59031616
15 – 30 phút không hoạt động). Điều này cũng gây ra đôi chút khó chịu và mất thời gian
để cài lại các thư viện nếu bạn sử dụng nhiều thư viện bên ngoài.
Để import 1 thư viện bất kỳ vào Colab bạn sử dụng câu lệnh import package_name as
something trong đó package_name là thư viện bạn muốn import, something ở đây là tên
ngắn gọn (alias) bạn muốn đặt cho thư viện đó để tiện gọi thư viện khi làm việc. Ví dụ,
tôi muốn import thư viện pandas và gán cho nó cái tên rút gọn là pd, tôi sẽ nhập câu lệnh
sau vào 1 code cell và thực thi: import pandas as pd.
Trong một số trường hợp tên thư viện của bạn đã ngắn gọn sẵn thì không cần thiết phải
gán alias, bạn có thể import thư viện với câu lệnh đơn giản import package_name. Tóm lại:
Google Colab (Collaboratory) là một dịch vụ trực tuyến miễn phí của Google, rất phù
hợp cho các dự án về huấn luyện mô hình với quy mô nhỏ và mang tính thử nghiệm.
Ở dự án này chúng tôi sử dụng Google Colab để làm môi trường huấn luyện cho Model
GANS nhằm giải quyết bài toán xử lý ảnh này. lOMoAR cPSD| 59031616 CHƯƠNG 2.
XÂY DỰNG THỬ NGHIỆM 2.1. Tổng quan mô hình
2.1.1. Sơ đồ hệ thống
Để minh họa tổng quan về hệ thống, sơ đồ dưới đây thể hiện các thành phần chính và
cách chúng tương tác với nhau:
Hình 4 : Sơ đồ mạng GANs
Sơ đồ bao gồm các bước chính từ việc thu thập dữ liệu đầu vào, xử lý dữ liệu, đến việc
hiển thị kết quả dự đoán.
2.1.2. Tổng quan về hệ thống
Hệ thống được xây dựng nhằm khôi phục hình ảnh mờ bằng cách sử dụng mạng GANs
(Generative Adversarial Networks). Quá trình này bao gồm ba giai đoạn chính:
- Thu thập và xử lý dữ liệu: Hình ảnh đầu vào được thu thập và chuẩn hóa.
- Huấn luyện mô hình GAN: Mô hình GAN được huấn luyện để học cách khôi phục chi tiết từ hình ảnh mờ.
- Đánh giá và triển khai: Kết quả đầu ra được đánh giá dựa trên các tiêu chí về độ nét và độ chính xác. 2.2.
Cài đặt bài toán
2.2.1. Import các thư viện lOMoAR cPSD| 59031616
Hình 5: Import các thư viện cần thiết
Hình 6: Định dạng và đường dẫn đến file RAR
2.2.2. Dữ liệu đầu vào lOMoAR cPSD| 59031616
Hình 7: Xử lý ảnh màu
Phần xử lý ảnh màu từ file RAR trong đoạn mã thực hiện nhiều bước quan trọng để chuẩn
bị dữ liệu đầu vào cho mô hình học máy. Đầu tiên, các ảnh trong file RAR được mở và
đọc dưới dạng mảng byte, sau đó sử dụng OpenCV để giải mã mảng byte thành các ảnh
thực tế. Để đảm bảo các ảnh có thể sử dụng được trong mô hình, chúng sẽ được chuyển
đổi từ không gian màu BGR (mặc định của OpenCV) sang không gian màu RGB. Tiếp
theo, ảnh sẽ được điều chỉnh về kích thước 256x256 pixel, một kích thước tiêu chuẩn phù
hợp với yêu cầu của mô hình học sâu, giúp mô hình xử lý dữ liệu đồng nhất. Sau khi thay
đổi kích thước, mỗi ảnh sẽ được chuẩn hóa giá trị điểm ảnh, chuyển từ phạm vi [0, 255]
thành [0, 1] bằng cách chia mỗi giá trị điểm ảnh cho 255. Quá trình này giúp cải thiện
hiệu suất học máy, vì các giá trị chuẩn hóa giúp mô hình học nhanh hơn và ổn định hơn.
Cuối cùng, những ảnh đã qua xử lý này sẽ được lưu trữ vào danh sách color_img, chuẩn
bị cho các bước tiếp theo trong quá trình huấn luyện mô hình học sâu. Toàn bộ quá trình
đảm bảo rằng dữ liệu ảnh đầu vào được chuẩn bị một cách chính xác và hiệu quả để cung cấp cho mô hình.
Hình 8: Xử lý ảnh xám
Phần xử lý ảnh xám từ file RAR tương tự như phần xử lý ảnh màu, nhưng với một số
điểm khác biệt nhỏ. Đầu tiên, các ảnh trong file RAR chứa ảnh xám được mở và đọc dưới
dạng mảng byte, sau đó sử dụng OpenCV để giải mã mảng byte thành các ảnh thực tế.
Các ảnh này được chuyển từ không gian màu BGR sang không gian màu RGB. Mặc dù
ảnh xám có thể chỉ có một kênh màu, nhưng trong trường hợp này, chúng ta vẫn chuyển
đổi sang không gian màu RGB để dễ dàng xử lý cùng với các ảnh màu. Tiếp theo, ảnh sẽ lOMoAR cPSD| 59031616
được điều chỉnh kích thước về 256x256 pixel, phù hợp với yêu cầu của mô hình. Sau khi
thay đổi kích thước, các giá trị điểm ảnh sẽ được chuẩn hóa từ phạm vi [0, 255] thành [0,
1] bằng cách chia cho 255, nhằm giúp mô hình học hiệu quả hơn. Cuối cùng, các ảnh đã
qua xử lý sẽ được lưu vào danh sách gray_img, chuẩn bị cho các bước tiếp theo trong
quá trình huấn luyện mô hình. Quá trình này giúp đảm bảo rằng ảnh xám được chuẩn bị
một cách đồng nhất với ảnh màu, tạo ra một bộ dữ liệu đầu vào sẵn sàng cho mô hình học sâu. Hình 9: tạo Dataset
Tạo ra các đối tượng Dataset từ các mảng ảnh màu và ảnh xám đã được xử lý trước đó,
giúp chuẩn bị dữ liệu cho quá trình huấn luyện và kiểm tra mô hình học sâu.
Hình 10: Hiển thị ảnh mẫu
Hiển thị các cặp ảnh màu và ảnh xám từ example_color và example_gray. Mỗi cặp ảnh
được hiển thị trong hai cột bên nhau, với ảnh màu ở cột bên trái và ảnh xám ở cột bên phải lOMoAR cPSD| 59031616
Ảnh màu là đại diện cho tệp data ảnh nét, ảnh xám là đại diện cho tệp data ảnh mờ lOMoAR cPSD| 59031616
2.2.3. Cấu hình mô hình GANS
Hình 11: Downsample và Upsample
Hai hàm downsample và upsample, được sử dụng trong các mô hình học sâu để giảm dần
hoặc tăng dần kích thước của ảnh qua các lớp CNN (Convolutional Neural Network). Hàm downsample: lOMoAR cPSD| 59031616
Chức năng của hàm này là giảm kích thước của ảnh (downsampling) thông qua lớp Conv2D.
Nó sử dụng một lớp tích chập với kernel khởi tạo theo phương pháp he_normal và không sử dụng bias.
Nếu apply_batchnorm là True, hàm sẽ thêm lớp BatchNormalization để chuẩn hóa dữ
liệu sau khi qua lớp Conv2D.
Sau đó, lớp LeakyReLU được áp dụng để giúp cải thiện quá trình học và tránh vấn đề chết neuron. Hàm upsample:
Chức năng của hàm này là tăng kích thước ảnh (upsampling) sử dụng lớp
Conv2DTranspose, một lớp thường dùng trong các mô hình như GAN (Generative
Adversarial Networks) để tăng kích thước ảnh đầu ra.
Nó cũng sử dụng BatchNormalization để chuẩn hóa sau lớp Conv2DTranspose.
Nếu tham số apply_dropout là True, hàm sẽ thêm lớp Dropout với tỷ lệ 50% nhằm giảm
thiểu hiện tượng overfitting trong quá trình huấn luyện.
Cuối cùng, lớp ReLU được áp dụng để đưa ảnh đầu ra vào một không gian phi tuyến tính,
giúp mô hình học tốt hơn.
- Hai hàm này đóng vai trò quan trong trong mô hình GANS