Trí tuệ Nhân tạo (AI) là một lĩnh vực nghiên cứu và phát triển các hệ thống máy tính có khả năng thực hiện các tác vụ đòi hỏi sự hiểu biết, quyết định và học hỏi tương tự như con người. AI liên quan đến việc phân tích và mô phỏng các khả năng trí tuệ, như nhận diện hình ảnh, ngôn ngữ tự nhiên và quyết định dựa trên dữ liệu. Trong lĩnh vực này, Deep Learning đóng vai trò quan trọng. Đây là một thuật toán dựa trên nhiều nguyên tắc được lấy cảm hứng từ cách hoạt động của não bộ, cho phép tiếp thu thông tin từ nhiều tầng biểu đạt khác nhau, từ cụ thể đến trừu tượng, từ đó giúp làm rõ nghĩa của các loại dữ liệu. Điều này cho phép Deep Learning đi sâu vào các khái niệm phức tạp và tạo ra các mô hình mạng nơron sâu có khả năng học và nhận diện các đặc trưng phức tạp của dữ liệu. Hiện nay rất nhiều các bài toán nhận dạng sử dụng deep learning để giải quyết do deep learning có thể giải quyết các bài toán với số lượng lớn, kích thước đầu vào lớn với hiệu năng cùng như độ chính xác vượt trội so với các phương pháp phân lớp truyền thống. Sau nhiều thập kỷ chấp hành chính sách đổi mới, Việt Nam đã ghi nhận sự phát triển mạnh mẽ, trở thành một nền kinh tế hội nhập, năng động và hấp dẫn đầu tư trong khu vực. Sự tăng trưởng của đất nước này nằm trong hàng ngũ hàng đầu trên thế giới, điều này càng thêm phần thúc đẩy sự phát triển và tích hợp quốc tế. Đồng thời, trong bối cảnh cuộc cách mạng công nghiệp 4.0 đang diễn ra mạnh mẽ, Việt Nam đã xác định rõ mục tiêu tập trung vào việc phát triển công nghệ trí tuệ nhân tạo (AI), được dự báo là một trong những ngành công nghệ đột phá nhất trong thập kỷ tới
BÀI TOÁN TÔ MÀU ẢNH ĐEN TRẮNG
Giới thiệu chung về bài toán tô màu ảnh
Tô màu cho ảnh đen trắng đóng vai trò quan trọng trong việc phục hồi màu sắc cho phim và ảnh cổ, nâng cao chất lượng hình ảnh và tăng cường sự sinh động Mặc dù đây không phải là một khái niệm mới đối với các nhà mỹ thuật, nhưng nó lại là một thách thức mới trong lĩnh vực khoa học kỹ thuật Phương pháp tô màu giống như một người thợ sơn, mang lại màu sắc tự nhiên và phù hợp cho những bức ảnh xám.
Trước đây, việc tô màu cho một vùng R trong ảnh xám thường dựa vào việc tìm kiếm vùng S tương tự trong cơ sở dữ liệu; màu sắc của S sẽ được sử dụng để tô cho R Mặc dù phương pháp này có vẻ đơn giản, nhưng chất lượng kết quả thường không đạt yêu cầu do hai yếu tố chính Thứ nhất, cần một phương pháp phân vùng hiệu quả, nhưng vấn đề này vẫn chưa được giải quyết tốt Thứ hai, việc xác định miền tương tự với miền đã cho là thách thức, vì khó khăn trong việc định lượng sự tương đồng và có thể có nhiều màu sắc phù hợp cho một vùng nhất định.
Gần đây, phương pháp học sâu (Deep Learning) đã mang đến một cách tiếp cận mới cho bài toán tô màu ảnh xám, nhờ vào những thành công nổi bật trong nhận dạng hình ảnh, tiếng nói và xử lý ngôn ngữ Sau khi huấn luyện, mô hình mạng nơ-ron nhiều lớp có khả năng tự động sinh ra ảnh màu từ ảnh xám đầu vào, tự động thực hiện các bước như phân vùng và chọn màu, so với các phương pháp cũ.
Mạng nơ-ron tích chập (CNN) sử dụng các lớp nối tiếp như tích chập, kích hoạt phi tuyến, và chuẩn hóa, kết hợp với kỹ thuật lấy mẫu xuống và lên để đảm bảo kích thước ảnh đầu ra phù hợp với ảnh đầu vào Nghiên cứu [1] cho thấy việc kết hợp bài toán tô màu với phân loại ảnh giúp nâng cao chất lượng tô màu, nhờ vào khả năng thu thập thông tin toàn cục từ ảnh đầu vào Trong khi đó, nghiên cứu [2] thực hiện tô màu dựa trên từng pixel bằng cách xử lý các vùng nhỏ xung quanh pixel đó, cho phép cải thiện độ chính xác trong quá trình tô màu.
Một yếu tố quan trọng trong việc áp dụng phương pháp học sâu là lựa chọn hàm tổn hao Nghiên cứu [1] đã sử dụng tiêu chí MSE (mean square error) kết hợp với hàm tổn hao cho phân loại, chẳng hạn như hàm cross entropy Tuy nhiên, các tác giả ở [3] cho rằng MSE không phản ánh chính xác sự phân bố màu của pixel và đề xuất sử dụng hàm tổn hao dựa trên sự khác biệt về histogram màu Bài báo [2] thì áp dụng cả MSE và histogram trong nghiên cứu của mình.
Một biến thể khác của các phương pháp huấn luyện là kết hợp chúng với các chỉ dẫn từ bên ngoài, tạo ra mô hình tương tác với người dùng Bài báo ở [4] đã sử dụng các chỉ dẫn như màu sắc và vị trí từ người dùng để cải thiện quá trình huấn luyện, giúp màu sắc thu được trở nên tự nhiên hơn.
Các mô hình học sâu được đề cập nhận đầu vào là ảnh xám và sản sinh ra hai lớp tương ứng với hai thành phần màu (thường là a và b trong hệ màu Lab) Hai lớp này kết hợp với ảnh xám ban đầu để tạo ra ảnh màu hoàn chỉnh.
Các mô hình hiện tại đạt kết quả tương đối khả quan, tuy nhiên, chúng chủ yếu được huấn luyện trên một bộ cơ sở dữ liệu duy nhất Điều này dẫn đến việc chưa có đánh giá đầy đủ về ảnh hưởng của các đặc trưng dữ liệu đến kết quả tô màu.
Quá trình phát triển của bài toán
Bài toán tô màu ảnh là một thách thức quan trọng trong lĩnh vực xử lý ảnh và trí tuệ nhân tạo, đã trải qua nhiều giai đoạn phát triển Qua thời gian, bài toán này đã trở thành một lĩnh vực nghiên cứu độc đáo với nhiều tiềm năng Hãy cùng khám phá quá trình phát triển của bài toán tô màu ảnh qua các giai đoạn khác nhau.
Trong giai đoạn đầu của nghiên cứu và phát triển, việc tô màu ảnh chủ yếu dựa vào các phương pháp thống kê và học máy cơ bản, như k-Nearest Neighbors và clustering Những thuật toán này được sử dụng để gán màu cho các điểm ảnh dựa trên các đặc trưng lân cận Tuy nhiên, chất lượng và tính chân thực của kết quả tô màu trong giai đoạn này vẫn còn nhiều hạn chế.
Giai đoạn từ 2010 đến 2015 đánh dấu sự bùng nổ của deep learning, đặc biệt là Convolutional Neural Networks (CNNs) Các mô hình sử dụng CNNs đã xuất hiện và đạt được những kết quả ấn tượng, mở ra một phương pháp hiệu quả hơn trong việc học cách tô màu từ dữ liệu huấn luyện.
Năm 2014, Generative Adversarial Networks (GANs) đã được giới thiệu, đánh dấu bước tiến lớn trong việc tô màu ảnh Phương pháp này bao gồm hai mô hình cạnh tranh: "Người tạo" và "Người phân biệt", giúp tạo ra kết quả tô màu chân thực và sắc nét hơn Sự cạnh tranh giữa hai mô hình này đã dẫn đến tiến bộ liên tục trong quá trình tô màu.
Kể từ năm 2016, sự kết hợp giữa CNNs và GANs, cùng với sự phát triển của các kiến trúc mạng tiên tiến, đã mang lại những kết quả tô màu ấn tượng cho ảnh Các kỹ thuật này đã tạo ra những hình ảnh tô màu với độ phân giải cao và chất lượng vượt trội.
Công trình nghiên cứu và phát triển trong lĩnh vực tô màu ảnh đen trắng đã đóng góp quan trọng, với các nhà nghiên cứu tìm kiếm kỹ thuật mới như mô hình học sâu và kết hợp kiến thức thống kê, giúp tạo ra giải pháp tô màu ảnh tiên tiến và sáng tạo Những tiến bộ này mang lại lợi ích cho nhiều lĩnh vực ứng dụng như nghệ thuật, y học, thiết kế và nhiều lĩnh vực khác.
Những khó khăn của bài toán
Bài toán tô màu ảnh đen trắng, mặc dù có tiềm năng lớn, nhưng cũng gặp nhiều thách thức nghiêm trọng Quá trình chuyển đổi hình ảnh từ trắng đen sang màu cần sự phân tích kỹ lưỡng và nghiên cứu sâu về công nghệ xử lý ảnh và trí tuệ nhân tạo Các thách thức chính bao gồm độ chính xác trong việc xác định màu sắc phù hợp, khả năng xử lý các chi tiết phức tạp trong ảnh, và việc duy trì sự tự nhiên của hình ảnh sau khi tô màu.
Một trong những thách thức lớn trong việc tô màu ảnh đen trắng là độ phân giải thấp, thường thấp hơn so với ảnh màu Điều này có thể dẫn đến việc tô màu không chính xác và mất đi những chi tiết quan trọng Để khắc phục hạn chế về độ phân giải, mô hình cần phải nhạy bén và có hiểu biết sâu sắc về các đặc trưng trong ảnh.
Việc tô màu yêu cầu hiểu biết sâu sắc về màu sắc tự nhiên và ngữ cảnh của hình ảnh, vì sự thay đổi màu sắc của các đối tượng phụ thuộc vào điều kiện ánh sáng và môi trường xung quanh Điều này tạo ra thách thức lớn cho các mô hình tô màu trong việc đưa ra quyết định màu sắc hợp lý và kịp thời.
Việc phục hồi màu sắc từ hình ảnh bị mất mát hoặc hỏng là một thách thức lớn, đặc biệt khi ảnh đen trắng có thể chứa thông tin quan trọng Khôi phục màu sắc chính xác từ dữ liệu đã mất mát trở thành một vấn đề đáng kể đối với các mô hình tô màu hiện nay.
Một thách thức khác đó là thiếu tiêu chuẩn hóa trong dữ liệu huấn luyện.
Dữ liệu không được chuẩn hóa đúng cách hoặc không đủ đại diện có thể khiến các mô hình tô màu không thể áp dụng hiệu quả cho nhiều loại hình ảnh khác nhau.
Hiệu suất tính toán là một thách thức lớn trong việc triển khai các mô hình tô màu, đặc biệt khi chúng yêu cầu nhiều tài nguyên Điều này trở nên quan trọng hơn đối với các ứng dụng thời gian thực hoặc khi sử dụng trên các thiết bị có nguồn lực hạn chế.
CÁC KỸ THUẬT GIẢI QUYẾT BÀI TOÁN
Phương hướng tiếp cận bài toán
Việc tô màu ảnh đen trắng bằng deep learning yêu cầu một quy trình từ chuẩn bị dữ liệu đến triển khai mô hình Đầu tiên, cần chuẩn bị tập dữ liệu ảnh đen trắng kèm phiên bản màu tương ứng và tiến hành tiền xử lý để đảm bảo kích thước và định dạng phù hợp Tiếp theo, xây dựng mạng neural như GAN hoặc CNN, lựa chọn kiến trúc mạng và xác định các lớp như convolutional, normalization và activation layers Huấn luyện mô hình với tập dữ liệu đã chuẩn bị, sau đó kiểm tra hiệu suất trên tập kiểm tra để điều chỉnh tham số và kiến trúc khi cần Cuối cùng, áp dụng mô hình đã huấn luyện để dự đoán màu sắc cho ảnh đen trắng mới, đánh giá kết quả và lưu trữ ảnh đã được tô màu Sử dụng Python cùng các thư viện như TensorFlow, PyTorch cho việc xây dựng mạng neural và OpenCV hoặc PIL để xử lý ảnh và hiển thị kết quả.
Một số kỹ thuật giải quyết bài toán
Tô màu ảnh đen trắng có thể thực hiện bằng nhiều kỹ thuật khác nhau, mỗi kỹ thuật mang đến một cách tiếp cận và cơ chế hoạt động riêng Dưới đây là mô tả chi tiết về từng kỹ thuật.
1 Phân đoạn theo ngưỡng (Threshold Segmentation):
Ngưỡng độ sáng (Brightness Thresholding) là một kỹ thuật phân chia ảnh thành hai vùng dựa trên một ngưỡng cố định của độ sáng Mỗi pixel trong ảnh sẽ được gán màu trắng hoặc đen tùy thuộc vào giá trị độ sáng của nó so với ngưỡng đã được chọn trước đó.
Ngưỡng độ sáng tối, hay còn gọi là Phương pháp Otsu, là một kỹ thuật tự động xác định ngưỡng tối ưu dựa trên phân phối độ sáng của hình ảnh Phương pháp này nhằm mục đích chọn ngưỡng sao cho phương sai giữa hai lớp pixel (đen và trắng) đạt giá trị nhỏ nhất.
K-means Clustering là một phương pháp phân cụm hiệu quả, giúp nhóm các điểm dữ liệu thành k nhóm dựa trên khoảng cách tới trọng tâm gần nhất Trong ứng dụng tô màu ảnh đen trắng, K-means có thể được sử dụng để phân loại các pixel theo đặc trưng màu sắc hoặc độ sáng, tạo ra những hình ảnh sống động và hấp dẫn hơn.
Mean-Shift Clustering là một phương pháp hiệu quả trong việc phân cụm dữ liệu bằng cách di chuyển các điểm dữ liệu tới các vùng có mật độ cao nhất trong không gian dữ liệu Phương pháp này có thể áp dụng để phân cụm các pixel dựa trên các đặc tính như không gian màu sắc và độ sáng, giúp cải thiện khả năng phân tích hình ảnh.
3 Mạng Nơ-ron (Neural Networks):
Mạng Unet là một kiến trúc mạng nơ-ron phổ biến trong lĩnh vực xử lý ảnh y khoa và hình ảnh Mô hình này kết hợp hiệu quả giữa các quỹ đạo lớn và nhỏ để dự đoán màu sắc của các pixel, dựa trên thông tin từ cả vùng lớn và nhỏ trong ảnh gốc.
GANs (Mạng đối kháng sinh điều kiện) bao gồm hai mạng nơ-ron: một mạng tạo ra dữ liệu mới và một mạng phân biệt giữa dữ liệu thật và dữ liệu giả Trong việc tô màu ảnh đen trắng, GANs có khả năng học cách chuyển đổi ảnh đen trắng thành ảnh màu thông qua quá trình huấn luyện.
Mạng CNN (Convolutional Neural Network) là một mô hình sử dụng các lớp convolutional để trích xuất đặc trưng từ hình ảnh và các lớp fully connected để tạo ra dự đoán đầu ra Mô hình này được huấn luyện để chuyển đổi ảnh đen trắng thành ảnh màu bằng cách truyền thông tin từ ảnh đen trắng qua mô hình nhằm dự đoán giá trị màu cho từng pixel Ngoài ra, có thể áp dụng các mô hình CNN đã được huấn luyện trên các tập dữ liệu lớn hoặc sử dụng kỹ thuật transfer learning để tận dụng kiến thức đã học.
2.2.1 K láng giềng gần nhất (K-Nearest Neighbor – K-NN)
K-NN là phương pháp truyền thống khá nổi tiếng theo hướng tiếp cận thống kê đã được nghiên cứu trong nhiều năm qua K-NN được đánh giá là một trong những phương pháp tốt nhất được sử dụng từ những thời kỳ đầu trong nghiên cứu về phân loại văn bản. Ý tưởng của phương pháp này đó là khi cần phân loại một văn bản mới, thuật toán sẽ xác định khoảng cách (có thể áp dụng các công thức về khoảng cách như Euclide, Cosine, Manhattan, …) của tất cả các văn bản trong tập huấn luyện đến văn bản này để tìm ra k văn bản gần nhất, gọi là k nearest neighbor – k láng giềng gần nhất, sau đó dùng các khoảng cách này đánh trọng số cho tất cả các chủ đề Khi đó, trọng số của một chủ đề chính là tổng tất cả các khoảng cách ở trên của các văn bản trong k láng giềng có cùng chủ đề, chủ đề nào không xuất hiện trong k láng giềng sẽ có trọng số bằng 0 Sau đó các chủ đề sẽ được sắp xếp theo giá trị trọng số giảm dần và các chủ đề có trọng số cao sẽ được chọn làm chủ đề của văn bản cần phân loại Trọng số của chủ đề cj đối với văn bản x được tính như sau :
○ y = 0: văn bản di không thuộc về chủ đề𝑐
○ y = 1: văn bản di thuộc về chủ đề 𝑐
Độ giống nhau giữa văn bản cần phân loại x và văn bản d được tính toán thông qua độ đo cosine, giúp xác định khoảng cách giữa chúng Ngưỡng phân loại cho chủ đề cj được học tự động từ một tập dữ liệu nhất định.
Để chọn tham số k tối ưu cho thuật toán K-NN trong phân loại, cần thực hiện thử nghiệm với nhiều giá trị k khác nhau; giá trị k lớn hơn sẽ giúp thuật toán ổn định hơn và giảm thiểu sai sót K-NN có ưu điểm là đơn giản và dễ hiểu, nhưng cũng có nhược điểm như thời gian tính toán lâu và độ chính xác phụ thuộc vào lựa chọn giá trị k.
K-NN là một thuật toán đơn giản và dễ hiểu, dựa trên nguyên tắc so sánh các điểm dữ liệu gần nhau trong không gian đặc trưng.
Khả năng tùy chỉnh kích thước lân cận (k) cho phép người dùng kiểm soát độ phức tạp của mô hình, từ đó cải thiện khả năng tìm kiếm các kết quả tối ưu hơn.
K-NN rất nhạy cảm với nhiễu và các điểm dữ liệu ngoại lai, điều này ảnh hưởng lớn đến kết quả phân tích Việc xác định các điểm lân cận gần nhất là yếu tố quyết định, do đó, sự hiện diện của nhiễu và outliers có thể làm sai lệch đáng kể kết quả.
Các nghiên cứu giải quyết bài toán tiêu biểu
Nghiên cứu về bài toán tô màu ảnh đen trắng đã cho thấy nhiều kết quả tích cực, khẳng định tính khả thi của các phương pháp mới Những công trình này không chỉ cung cấp thông tin đáng tin cậy mà còn là nguồn cảm hứng cho tôi và các nhà nghiên cứu khác trong việc phát triển các phương pháp tối ưu hóa riêng Dưới đây là một số nghiên cứu tiêu biểu trong lĩnh vực này.
Nghiên cứu "Colorful Image Colorization" của Richard Zhang, Phillip Isola và Alexei A Efros tập trung vào việc sử dụng mạng nơ-ron tích chập (CNN) để tô màu cho ảnh đen trắng Các tác giả đã đề xuất một phương pháp mới nhằm dự đoán thông tin màu sắc dựa trên các đặc trưng cục bộ và toàn cục của ảnh xám.
The study "Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification" by Satoshi Iizuka, Edgar Simo-Serra, and Hiroshi Ishikawa focuses on leveraging deep learning to automatically colorize black and white images By learning color information from both global and local structures of grayscale images, the authors enhance the colorization process through a combined approach that integrates global and local information.
● "Real-Time User-Guided Image Colorization with Learned Deep Priors" - R Zhang, J Y Zhu, P Isola, X Geng, A S Lin, T Yu, và
A A Efros [4], được công bố tại hội nghị SIGGRAPH năm 2017.Nghiên cứu này tập trung vào việc tô màu ảnh dựa trên sự hướng dẫn từ người dùng và sử dụng các deep priors học được Phương dụng màu sắc đó cho ảnh Sử dụng deep priors, một dạng kiến thức trước được học từ dữ liệu, giúp cải thiện quá trình tô màu và làm cho quá trình này trở nên nhanh chóng và chính xác hơn Điều này mang lại trải nghiệm tô màu ảnh cho người dùng một cách hiệu quả và linh hoạt hơn.
Nghiên cứu "Tô màu ảnh bằng cách sử dụng hình ảnh tương tự" của Zunair và Mahmood đề xuất một phương pháp mới để tô màu ảnh đen trắng Thay vì dựa vào thông tin màu sắc từ ảnh gốc, các tác giả đã áp dụng kỹ thuật tìm kiếm và so sánh màu sắc từ những hình ảnh tương tự Phương pháp này giúp tạo ra màu sắc cho ảnh đen trắng một cách hiệu quả, nâng cao chất lượng hình ảnh và mang lại trải nghiệm trực quan hơn cho người xem.
THỰC NGHIỆM
Các thư viện dùng trong bài toán tô màu ảnh
OpenCV, hay Thư viện Thị giác Máy tính Mã nguồn Mở, là một thư viện mạnh mẽ cho thị giác máy tính và học máy Thư viện này cung cấp nhiều công cụ và chức năng để phân tích hình ảnh và video, xử lý hình ảnh, phát hiện và nhận dạng đối tượng OpenCV được ứng dụng rộng rãi trong các lĩnh vực như robot học, thực tế ảo và nhiều lĩnh vực công nghệ khác.
OpenCV có một số tính năng quan trọng và cách dùng cụ thể như sau:
Xử lý hình ảnh là một lĩnh vực quan trọng, cung cấp bộ công cụ đa dạng cho người dùng, cho phép chỉnh sửa hình ảnh hiệu quả Các tính năng bao gồm lọc, thay đổi kích thước, ngưỡng hóa và chuyển đổi màu sắc, giúp nâng cao chất lượng và tính thẩm mỹ của hình ảnh.
Thị Giác Máy Tính cung cấp các công cụ mạnh mẽ cho nhiều nhiệm vụ như phát hiện đặc trưng, theo dõi đối tượng và phân tích luồng quang học, giúp nâng cao khả năng xử lý hình ảnh và video trong các ứng dụng thực tế.
Học máy bao gồm các thuật toán cho nhiệm vụ như nhận diện khuôn mặt, phân loại hình ảnh và phát hiện đối tượng Nó cũng hỗ trợ tích hợp với các thư viện học máy phổ biến như TensorFlow và PyTorch.
● Hiệu Chuẩn Máy Ảnh: Cho phép hiệu chuẩn máy ảnh, sửa lỗi kính cầu và tái tạo 3D từ nhiều hình ảnh.
● Phát Hiện Đối Tượng: Sử dụng các kỹ thuật như chuỗi Haar và học sâu để phát hiện và nhận diện đối tượng trong hình ảnh và video.
● Phân Tích Video: Cung cấp các công cụ xử lý video, bao gồm quay video, theo dõi đối tượng và phân tích chuyển động.
● Thực Tế ảo: OpenCV cho phép tạo ra các ứng dụng thực tế ảo bằng cách đặt các đối tượng ảo trong thế giới thực.
● Robot Học: Thường được áp dụng trong robot học để thực hiện các nhiệm vụ như điều hướng robot, tránh vật cản và thao tác đối tượng.
OpenCV, được phát triển bằng ngôn ngữ C++, cung cấp giao diện cho nhiều ngôn ngữ lập trình như Python và Java Python là lựa chọn phổ biến nhất khi làm việc với OpenCV nhờ vào tính dễ sử dụng và sự hỗ trợ từ các thư viện phong phú cho tính toán khoa học Sự kết hợp này không chỉ cải thiện quy trình phát triển ứng dụng mà còn thúc đẩy nghiên cứu trong lĩnh vực thị giác máy tính và học máy.
OpenCV là công cụ hữu ích trong việc tô màu ảnh, đặc biệt khi kết hợp với mô hình mạng neural Một số ứng dụng của OpenCV trong tô màu ảnh bao gồm việc xử lý và cải thiện chất lượng hình ảnh, tự động hóa quá trình tô màu, và áp dụng các thuật toán học sâu để tạo ra màu sắc tự nhiên và sống động.
OpenCV cho phép chuyển đổi hình ảnh từ không gian màu RGB sang không gian màu Lab, trong đó kênh 'L' biểu thị độ sáng, còn kênh 'a' và 'b' chứa thông tin về màu sắc.
OpenCV là một công cụ hữu ích trong việc tiền xử lý dữ liệu hình ảnh trước khi đưa vào mô hình Các bước tiền xử lý này có thể bao gồm chuyển đổi kích thước, cắt ảnh và làm mịn ảnh, nhằm cải thiện chất lượng dữ liệu đầu vào và nâng cao hiệu suất của mô hình.
OpenCV hỗ trợ tối ưu hóa và xử lý các bước dự đoán của mô hình, giúp cải thiện chất lượng hình ảnh Cụ thể, sau khi mô hình dự đoán thông tin màu sắc, OpenCV có thể kết hợp thông tin này với kênh độ sáng để tạo ra ảnh màu hoàn chỉnh.
NumPy là thư viện mã nguồn mở trong Python, chuyên xử lý mảng nhiều chiều và cung cấp công cụ mạnh mẽ cho dữ liệu số học Thư viện này đóng vai trò quan trọng trong khoa học máy tính, tính toán khoa học và xử lý ảnh Với NumPy, lập trình viên có thể thực hiện nhiều thao tác hiệu quả trên dữ liệu số.
NumPy là công cụ hữu ích trong xử lý dữ liệu ảnh, cho phép đọc và biểu diễn ảnh dưới dạng mảng nhiều chiều Với NumPy, bạn có thể dễ dàng thực hiện các thao tác như cắt, thay đổi kích thước và chuyển đổi màu sắc trên các mảng ảnh.
NumPy cho phép chuyển đổi không gian màu của ảnh một cách dễ dàng, chẳng hạn như từ không gian màu RGB sang Lab hoặc ngược lại Các hàm và công cụ của NumPy hỗ trợ việc thực hiện chuyển đổi này trên các mảng ảnh một cách hiệu quả.
NumPy là một thư viện mạnh mẽ trong Python, cung cấp nhiều phép toán và chức năng hữu ích cho việc tiền xử lý dữ liệu Các tính năng này bao gồm chuẩn hóa dữ liệu, chia tỷ lệ dữ liệu và thực hiện các biến đổi khác, giúp chuẩn bị dữ liệu một cách hiệu quả trước khi đưa vào mô hình.
Khi xử lý mô hình dự đoán màu sắc, NumPy có thể kết hợp thông tin màu sắc với độ sáng từ các kênh khác, giúp tạo ra ảnh màu hoàn chỉnh.
Bộ dữ liệu thực nghiệm
Bộ dữ liệu landscape Images có kích thước 203.47 MB, bao gồm 7129 bức ảnh màu cùng với các bức ảnh đen trắng tương ứng với mỗi ảnh màu đó.
Link Dataset: https://www.kaggle.com/datasets/theblackmamba31/landscape-image-col orization
● Thư mục color chứa 7129 tấm ảnh màu dùng để huấn luyện mô hình
Hình 3.1 Các ảnh màu trong bộ dữ liệu
● Thư mục gray chứa 7129 tấm ảnh đen trắng ứng với mỗi ảnh màu
Hình 3.2 Các ảnh đen trắng tương ứng trong bộ dữ liệu
Tiền xử lý dữ liệu
Bộ dữ liệu thô sẽ được tiền xử lý trước khi đưa vào model.
Các hình ảnh màu từ thư mục 'color' được tiền xử lý bằng cách chuyển đổi không gian màu từ BGR sang RGB và thay đổi kích thước về 160x160 pixels Sau đó, ảnh được chuẩn hóa thành số thực và chia cho 255 để nằm trong khoảng từ 0 đến 1, và được thêm vào danh sách color_img Tương tự, các hình ảnh xám từ thư mục 'gray' cũng trải qua quy trình tiền xử lý giống như ảnh màu và được lưu vào danh sách gray_img.
Hình 3.3 Dữ liệu đầu vào sau khi được tiền xử lý
Huấn luyện mô hình
Bước đầu tiên trong mô hình là xây dựng hai hàm, down và up, đại diện cho quá trình Downsampling và Upsampling Hàm down sử dụng lớp Convolutional để giảm kích thước không gian đầu vào, trong khi hàm up áp dụng lớp Conv2DTranspose để tăng kích thước không gian.
Mô hình được xây dựng bằng các lớp Convolutional và Transpose Convolutional để tạo ra Generator, nhận ảnh xám (grayscale) kích thước (160, 160, 3) làm đầu vào và xuất ra ảnh màu cùng kích thước Quá trình này giúp mô hình học cách chuyển đổi ảnh xám thành ảnh màu, đồng thời sử dụng các kỹ thuật như Batch Normalization và LeakyReLU để nâng cao khả năng học và hiệu suất của mô hình.
Sau khi xác định các phương pháp, thủ tục và module cho quá trình huấn luyện, nhóm bắt đầu tiến hành huấn luyện mô hình với bộ dữ liệu đã được chuẩn bị Dưới đây là đoạn mã nguồn dùng để huấn luyện mô hình.
Kết quả huấn luyện
Kết quả huấn luyện chương trình:
Hình 3.4 Quá trình huấn luyện mô hình CNN trên các tập dữ liệu
Kết quả huấn luyện của mô hình được đánh giá qua hai chỉ số chính: mất mát (loss) và độ chính xác (accuracy) Đánh giá này được thực hiện trong cả quá trình huấn luyện và kiểm định, sử dụng các tham số như 50 epoch và kích thước batch 32.
Mất mát là chỉ số phản ánh sự khác biệt giữa giá trị dự đoán và giá trị thực tế, đóng vai trò quan trọng trong việc đánh giá hiệu suất của mô hình Mục tiêu chính là giảm thiểu sai số để cải thiện độ chính xác của mô hình.
Độ chính xác (accuracy) là thước đo quan trọng trong việc đánh giá khả năng của mô hình trong việc phân loại và dự đoán đầu ra, thể hiện tỷ lệ dự đoán chính xác so với tổng số mẫu được kiểm tra Biểu đồ hiển thị độ mất mát trong quá trình đào tạo giúp người dùng hiểu rõ hơn về hiệu suất của mô hình.
Hình 3.5 Biểu đồ hiển thị độ chính xác trong quá trình đào tạo
Kết quả thực nghiệm
Sử dụng mô hình đã huấn luyện để dự đoán màu sắc cho các hình ảnh xám từ tập dữ liệu kiểm định, mô hình sẽ tạo ra hình ảnh màu tương ứng cho mỗi hình ảnh xám Kết quả dự đoán được giới hạn trong khoảng từ 0 đến 1 bằng hàm np.clip(), đảm bảo các giá trị màu sắc nằm trong phạm vi hợp lý Cuối cùng, hình ảnh màu dự đoán, hình ảnh xám ban đầu và hình ảnh màu thực tế từ tập kiểm định được trực quan hóa qua hàm plot_images() để so sánh.
Hình 3.6 Hình ảnh sau khi được tô màu
Hai bức ảnh đầu tiên được mô hình tô màu gần như giống hệt ảnh gốc, trong khi bức thứ ba, dù có sự sai lệch về màu sắc, vẫn mang lại sự tự nhiên cho bức ảnh.
Hình 3.7 Hình ảnh sau khi được tô màu
Demo chương trình
3.7.1 Giới thiệu về framework sử dụng
Streamlit là framework mã nguồn mở giúp phát triển ứng dụng web dựa trên Python một cách nhanh chóng và dễ dàng Sự đơn giản và khả năng tích hợp tốt với mã nguồn Python là điểm mạnh của Streamlit, cho phép người dùng tập trung vào việc viết mã mà không cần lo lắng về kiến thức frontend hay backend.
Streamlit là công cụ lý tưởng để phát triển ứng dụng máy học, trực quan hóa dữ liệu và demo mô hình Một trong những điểm nổi bật của Streamlit là tính năng tự động tải lại, cho phép người dùng thấy ngay kết quả sau khi thay đổi mã Python mà không cần tải lại trình duyệt Tính năng này giúp tăng tốc độ phát triển và thử nghiệm ứng dụng một cách hiệu quả.
Streamlit đã trở thành công cụ phổ biến cho phát triển ứng dụng web dữ liệu và máy học bằng Python nhờ vào cộng đồng lớn và sự hỗ trợ tận tình từ người dùng.
● Tải ảnh: Cho phép người dùng tải ảnh đen trắng lên từ thiết bị.
● Hiển thị kết quả: Cho phép người dùng xem kết quả ảnh sau khi được tô màu.
Mô tả chi tiết Usecase
Mô tả vắn tắt Use case này cho phép người dùng tải lên hình ảnh từ thiết bị để thực hiện tô màu
1 Người dùng tải lên hình ảnh từ thiết bị.
2 Hệ thống lưu trữ hình ảnh và tiến hành xử lý hình ảnh Usecase kết thúc.
Các yêu cầu đặc biệt Không có
Tiền điều kiện Người dùng đã truy cập trang web và đã có hình ảnh cần dự đoán
Hậu điều kiện Hệ thống đã lưu trữ hình ảnh và đã tiến hành xử lý Điểm mở rộng Không có
● Usecase Hiển thị kết quả
Tên usecase Hiển thị kết quả
Mô tả vắn tắt Use case này cho phép hệ thống hiển thị kết quả dự đoán cho người dùng sau khi xử lý hình ảnh
Luồng sự kiện:Hệ thống hiển thị kết quả dự đoán cho người dùng.
Các yêu cầu đặc biệt Không có
Tiền điều kiện Hệ thống đã xử lý hình ảnh và có kết quả dự đoán
Hậu điều kiện Kết quả dự đoán đã được hiển thị cho người dùng Điểm mở rộng Không có
Hình 3.10 Giao diện web sau khi tô màu ảnh