Huỳnh Hồ Thị Mộng TrinhThời gian thực hiện: Từ ngày 7/9/2023 đến ngày 31/12/2023Sinh viên thực hiện: Lê Thành Lộc - 21521087Nguyễn Hoàng Linh - 21522289Nội dung đề tài:Nhận thấy nhu cầu
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 1 Thiết kế thuật toán so sánh ảnh màu dựa trên điểm ảnh
Giảng viên hướng dẫn
ThS Huỳnh Hồ Thị Mộng TrinhSinh viên thực hiện
Nguyễn Hoàng Linh - 21522289
Lê Thành Lộc - 21521087
TP Hồ Chí Minh, tháng 12 năm 2023
Trang 2LỜI CẢM ƠN
Trong quá trình thực hiện đề tài, chúng em đã nhận được rất nhiều sự giúp đỡ,hướng dẫn và hỗ trợ từ quý nhà trường, quý thầy cô Nhờ đó mà chúng em đã có đượcnhiều kinh nghiệm và đạt được kết quả như ngày hôm nay Chúng em xin được bày tỏlòng biết ơn chân thành đến:
ThS Huỳnh Hồ Thị Mộng Trinh, người đã trực tiếp hướng dẫn và đồng hành cùngchúng em xuyên suốt đồ án này Trong quá trình thực hiện, cô đã tận tình hướng dẫn,giúp chúng em định hướng được mục tiêu đề tài, lắng nghe những thắc mắc và hỗ trợ giảiquyết vấn đề
Quý nhà trường đã tạo nên một môi trường năng động, sáng tạo nơi chúng em cóthể phát huy những khả năng của bản thân và tạo điều kiện tốt nhất để chúng em có thểhoàn thành đồ án
Do kiến thức còn nhiều hạn chế cũng như chưa đủ kinh nghiệm cho nên chúng emcũng không tránh khỏi những thiếu sót khi thực hiện đề tài, kính mong nhận được sựđánh giá, góp ý từ quý thầy cô và nhà trường
Chúng em xin chân thành cảm ơn!
Sinh viên Lê Thành LộcSinh viên Nguyễn Hoàng Linh
Trang 3ĐỀ CƯƠNG CHI TIẾT Tên đề tài: Thiết kế thuật toán so sánh ảnh màu dựa trên điểm ảnh
Giảng viên hướng dẫn: ThS Huỳnh Hồ Thị Mộng Trinh
Thời gian thực hiện: Từ ngày 7/9/2023 đến ngày 31/12/2023
Sinh viên thực hiện: Lê Thành Lộc - 21521087
Nguyễn Hoàng Linh - 21522289
Nội dung đề tài:
Nhận thấy nhu cầu và tiềm năng phát triển của hệ thống đề xuất ảnh (recommendsystem) trong những ứng dụng hiện đại ngày nay với mục đích cá nhân hóa trải nghiệmngười dùng, nhóm chúng em đã quyết định hướng nghiên cứu của đề tài sẽ tập trungvào việc so sánh ảnh màu với nhằm hiểu rõ bản chất của thuật toán để có thể xây dựngmột ứng dụng hiệu quả đến từ độ chính xác của các thuật toán cốt lõi
Mục tiêu của đồ án này là tìm hiểu và so sánh các thuật toán so sánh ảnh màu để biếtđược cơ chế hoạt động của các thuật toán so sánh, với mong muốn tìm được thuật toáncho ra kết quả chính xác và nhanh nhất
Kết quả đồ án bao gồm bảng so sánh chi tiết các thuật toán liên quan, và sản phẩmminh họa, cho ra kết quả khi so sánh sảnh
Trang 4KẾ HOẠCH THỰC HIỆN
Đề tài được thực hiện trong vòng 16 tuần, với nội dụng và thời gian cụ thể như sau:
vector của một tập dữ liệu ảnh trắng đen
1/11/2023 - 21/11/2023
Nguyễn Hoàng Linh Lê Thành Lộc
Trang 5MỤC LỤC
LỜI CẢM ƠN 2
ĐỀ CƯƠNG CHI TIẾT 3
KẾ HOẠCH THỰC HIỆN 4
MỤC LỤC 5
DANH MỤC HÌNH ẢNH 6
DANH MỤC TỪ TIẾNG ANH 7
MỞ ĐẦU 9
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 10
1.1 Giới thiệu 10
1.2 Mục tiêu 10
CHƯƠNG 2: SO SÁNH ẢNH GIỐNG NHAU HOÀN TOÀN 11
2.1 So sánh từng điểm ảnh 11
2.2 So sánh ảnh bằng các thuật toán encode ảnh 12
2.2.1 MD5 12
2.2.2 Base64 13
CHƯƠNG 3: CÁC THUẬT TOÁN NHẬN DIỆN FEATURE VECTOR CỦA MỘT TẬP ẢNH CÙNG LỚP 15
3.1 Least Generalization 15
3.2 FRQ 17
3.3 AVE 18
3.4 SAM (sample) 20
3.5 Phân loại ảnh sử dụng các thuật toán trích xuất vector 21
3.6 So sánh các thuật toán 22
3.7 Nhận xét 23
CHƯƠNG 4: CÁC THUẬT TOÁN SO SÁNH ẢNH MÀU 24
4.1 Tính trung bình các mảng màu 24
4.2 Tìm màu chủ đạo 29
CHƯƠNG 5: TỔNG KẾT 32
5.1 Thuật toán so sánh ảnh màu 32
5.2 Nhận xét thuật toán 32
CHƯƠNG 6: ĐÁNH GIÁ 33
6.1 Kết quả đạt được 33
6.2 Thuận lợi & Khó khăn 33
6.2.1 Thuận lợi 33
6.2.2 Khó khăn 33
6.3 Hướng phát triển 33
TÀI LIỆU THAM KHẢO 34
Trang 6DANH MỤC HÌNH ẢNH
Fig.1 Ví dụ input của bài toán 11
Fig.2 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng GEN 15
Fig.3 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng GEN 15
Fig.4 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng FRQ 17
Fig.5 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng AVE 19
Fig.6 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng LL với index = 0 20
Fig.7 Bảng so sánh các thuật toán trích xuất vector 22
Fig.8 Các shade khác nhau của màu xanh 23
Fig.9 AvgR = 133, AvgG = 135, AvgB = 132 26
Fig.10 AvgR = 130, AvgG = 130, AvgB = 130 27
Fig.11 Trích xuất màu chủ đạo của ảnh 29
Trang 7DANH MỤC TỪ TIẾNG ANH
thường được sử dụng mạnh mẽ trong xử lý ảnh và video
sử dụng để ánh xạ một khóa (key) tới giá trị tương ứng(value) Mục tiêu là cung cấp một phương tiện hiệu quả đểtìm kiếm, chèn và xóa dữ liệu trong thời gian tuyến tính ởmức độ trung bình
Trang 8Machine learning Máy học
thêm hoặc giảm lượng đen hoặc trắng vào màu gốc
Trang 9MỞ ĐẦU
Trong thời đại số ngày nay, việc sử dụng Recommend Systems đã trở thành mộtphần không thể thiếu đối với nhiều ứng dụng và dịch vụ trực tuyến Các công nghệ nàykhông chỉ giúp cá nhân hóa trải nghiệm người dùng mà còn mang lại nhiều lợi ích quantrọng trong việc tối ưu hóa tương tác và giữ chân người dùng
Một trong những khía cạnh quan trọng của hệ thống Recommend System đó làkhả năng nó tạo ra sự kết nối giữa người dùng và nội dung một cách nhanh chóng và hiệuquả Điều này không chỉ giúp người dùng khám phá nội dung mới mà họ có khả năng yêuthích, mà còn tối ưu hóa thời gian và nỗ lực tìm kiếm, dẫn đến một trải nghiệm ngườidùng mượt mà và tốt hơn
Chẳng hạn, trong lĩnh vực thương mại điện tử, nó có thể được sử dụng để tối ưuhóa quảng cáo, đề xuất các sản phẩm phù hợp dựa trên lịch sử mua sắm và xem sản phẩmhay như các nền tảng xã hội để đề xuất các nội dung chia sẻ phù hợp với người dùng
Xác định từ thực tế đó, nhóm chúng em đã chọn đề tài Nghiên cứu phương pháp
so sánh ảnh màu để hiểu rõ cơ chế hoạt động của hệ thống qua việc thực hành viết thuật
toán so sánh và so sánh các thuật toán liên quan
Nội dung của đề tài được chia gồm 6 chương:
● Chương 1: Giới thiệu đề tài
● Chương 2: So sánh ảnh giống nhau hoàn toàn
● Chương 3: Các thuật toán nhận diện feature vector của một tập ảnh cùng lớp
● Chương 4: Các thuật toán so sánh màu
● Chương 5: Tổng kết
● Chương 6: Đánh giá
Trang 10CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.1 Giới thiệu
Cuộc cách mạng công nghệ đã mở ra những cơ hội mới trong việc phân tích và xử
lý ảnh màu, đặt ra thách thức đối với cộng đồng nghiên cứu và các nhà phát triển Trongbối cảnh này, đồ án của nhóm em đặt ra một quan điểm quan trọng với việc thực hiện sosánh ảnh màu thông qua việc nhận diện các feature vector quan trọng từ các điểm ảnh
Với sự tiến bộ của máy học và trí tuệ nhân tạo, chúng ta đang chứng kiến sự trỗidậy của các thuật toán nhận diện feature tiên tiến Nghiên cứu của chúng ta tập trung vàoviệc áp dụng những thuật toán này để so sánh ảnh màu một cách hiệu quả, dựa trên khảnăng nhận diện các feature vector trong hình ảnh và so sánh màu ảnh
Thông qua các thuật toán tìm hiểu được, và một số thuật toán mà nhóm tự sáng tạo
ra, đồ án này sẽ khám phá và so sánh hiệu suất của các thuật toán khác nhau trong việc sosánh ảnh màu
1.2 Mục tiêu
Input: 2 ảnh 28x28 thể hiện một chữ số 0 - 9 có màu bất kỳ
Fig.1 Ví dụ input của bài toán
Output: Cho biết 2 ảnh đó có cùng thể hiện một số giống nhau không, có cùng màukhông
Trang 11Quy trình xử lý: chuyển ảnh sang trắng đen để phân loại, so sánh màu.
CHƯƠNG 2: SO SÁNH ẢNH GIỐNG NHAU HOÀN TOÀN
2.1 So sánh từng điểm ảnh
Khi nhắc đến so sánh ảnh có cùng kích thước, dù ảnh màu hay trắng đen, mộttrong các phương pháp đơn giản nhất mà ai cũng có thể nghĩ ra được, đó chính là so sánhtừng điểm ảnh (pixel by pixel)
Đối với ảnh trắng đen, ảnh thường được lưu trữ dưới dạng một vector có W*Hphần từ với W và H là kích thước của ảnh (WxH pixels) Mỗi phần tử sẽ có giá trị từ 0đến 255, với 0 cho pixel hiển thị màu đen và 255 cho pixel hiển thị màu trắng, các giá trị
ở giữa hiển thị greyscale Nếu tất cả các phần tử trong vector của hai ảnh đều có giá trịbằng nhau thì ta có thể kết luận hai ảnh giống nhau (giống 100%)
Tương tự với ảnh màu, chỉ khác ở chỗ thay vì một vector đại diện từ đen đếntrắng, thì ảnh màu có 3 vectors, các phần tử có giá trị từ 0 - 255 nhưng lần lượt từ đen đến
đỏ, đen đến xanh lá, đen đến xanh dương, hay còn được biết đến với định dạng RGB (red,green, blue) Vì thế nên thay vì so sánh từng phần tử của một vector thì ta so sánh cả ba,kết luận ảnh giống khi tất cả phần tử của ba vectors ảnh này đều giống tất cả phần tử của
ba vectors tương ứng ảnh kia
—
Thuật toán 1: So sánh điểm ảnh
Input: hai vector có kích thước bằng nhau, đại diện cho hai bức ảnh:𝑣 = { , , },
Trang 12Phương pháp này thường được sử dụng để
● Tìm điểm khác biệt giữa 2 ảnh gần tương tự nhau
● Tìm điểm bị thay đổi được thực hiện trên một bức ảnh nào đó sau khi nó bị thayđổi
Hạn chế:
● Phương pháp so sánh ảnh này sẽ chỉ cho ra kết quả 2 ảnh giống khi ảnh giốngnhau hoàn toàn, kể cả những điểm khác biệt không thể nhận thấy bằng mắtthường, chính vì thế mà có thể có trường hợp các ảnh bị thay đổi tương đối nhỏvẫn có thể cho ra kết quả ảnh khác Điều này có thể dẫn đến kết luận falsenegatives hoặc positives
● Chỉ dừng lại ở việc so sánh mà không nhận biết được đối tượng được so sánh là gì
● Đối với các ảnh có kích thước quá lớn, sẽ tốn nhiều thời gian để lặp quả cả vectorảnh
2.2 So sánh ảnh bằng các thuật toán encode ảnh
2.2.1 MD5
MD5 là một thuật toán hash dữ liệu Bất kể kiểu data nào cũng có thể hash bằngthuật toán này và thu được một chuỗi hash 32-bits dựa trên nội dung của data Data cócontent khác nhau, dù chỉ là một thay đổi nhỏ đểu cho ra chuỗi hash khác nhau
Khi hash một bức ảnh, các ảnh trùng lặp sẽ luôn cho ra một chuỗi hash như nhau.Hai ảnh dù chỉ khác nhau rất nhỏ vẫn sẽ cho ra hai chuỗi hash khác nhau Chính vì thế
Trang 13mà thuật toán này thường được dùng để tạo ‘digital fingerprint’ Các bước để hash mộtbức ảnh:
Ngoài MD5, còn có một số cách hash mới, và bảo mật hơn như SHA1, SHA256 vàSHA512
Ví dụ:
Fig.2 Ví dụ cho thuật toán hash ảnh
Fig.2 Sẽ được mã hóa thành một chuỗi như sau, bằng các thuật toán Hash:
2.2.2 Base64
Base64 là một phương pháp mã hóa dữ liệu nhị phân thành một chuỗi ký tựASCII, bao gồm ảnh Trong quá trình này, từng khối 3 byte (24 bit) của dữ liệu nhị phânđược chuyển đổi thành 4 ký tự Base64 tương ứng Điều này giúp tránh các vấn đề liên
Trang 14quan đến việc truyền dữ liệu nhị phân qua các giao thức hoặc ngữ cảnh yêu cầu dữ liệuvăn bản.
Ví dụ, một phần nhỏ của ảnh sẽ được chuyển thành dạng Base64 như sau:
Ta có thể lợi dụng phương thức này để so sánh ảnh
Trang 15CHƯƠNG 3: CÁC THUẬT TOÁN NHẬN DIỆN FEATURE VECTOR CỦA MỘT TẬP ẢNH CÙNG LỚP
Dưới đây là các thuật toán chiết xuất feature vector từ một tập các ảnh grayscalecùng lớp Sử dụng bộ dataset MNIST chữ số viết tay Mục đích nhằm tìm ra một featurevector đại diện cho lớp dữ liệu đó, để so sánh, phân loại các ảnh
3.1 Least Generalization
Thuật toán chiết xuất feature vector bằng Least Generalization (gọi tắt là GEN) được đềxuất trong [1], với mục đích phân loại ảnh mà không dùng đến CNN Thuật toán được lấycảm hứng từ khái niệm Generalization trong Inductive Logic Programming (ILP)
Một generalization là một tổng quát hóa của nhiều biểu thức tương thích (cùng ngôi)
nhất 1 tổng quát hóa (được chứng minh ở [2]) Với tổng quát hóa là (z, y), tập thay thếcủa A là { f(x)|z }, của B là { x|z } Thuật toán tìm tổng quát hóa được đề xuất trong [2]
có thể được diễn giải như sau:
trong hai biểu thức
Ngoài ra, bài báo ở [1] còn đề xuất phân lớp các giá trị grayscale của ảnh thành các biểuthức đại diện cho một mảng nhằm tăng hiệu quả của việc khái quát hóa Cụ thể, với x làgiá trị của một điểm ảnh (từ 0 đến 255) Đặt:
Vậy, nhóm có được thuật toán GEN như sau:
—
Trang 16Algorithm 2: trích xuất Feature với GEN
Input: Một mảng T 3 chiều đại diện cho tập ảnh, mỗi ảnh là ma trận với số lượng phần tử
bằng WxH
Output: Một ma trận có kích thước WxH, thể hiện feature vector của tập ảnh.
1 Feat := T[0], ElementOfClass := len(T)
Feat[ ][ ] = (Feat[ ][ ] + (Image[ ][ ]/64 + 1))) / 2𝑖 𝑗 𝑖 𝑗 𝑖 𝑗
Feat[ ][j] = Feat[ ][ ] as integer𝑖 𝑖 𝑗
4 Return Feat
—
Trang 17Fig.3 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng GEN
Algorithm 3: trích xuất Feature với FRQ
Input: Một mảng T 3 chiều đại diện cho tập ảnh, mỗi ảnh là ma trận với số lượng phần tửbằng WxH
Output: Một ma trận có kích thước WxH, thể hiện feature vector của tập ảnh
DoubleSort:
1 ElementOfClassA := len(A), ElementOfClassB := len(B)
If A[ ] < A[ ], do:𝑖 𝑗
t = A[ ]𝑖A[ ] = A[ ]𝑖 𝑗A[ ] = t𝑗
t = B[ ]𝑖B[ ] = B[ ]𝑖 𝑗B[ ] = t𝑗FRQ:
1 T = Training, ElementOfClass = len(T), Feat = T[0]
Trang 182 For from 0 to 28 , do:𝑖
a = np.array([T[ ][ ][ ] for k in range(0, ElementOfClass)])𝑘 𝑖 𝑗unique, counts = np.unique(a, return_counts=True)
unique = unique.tolist()counts = counts.tolist()DoubleSort(counts, unique)pos = 0
Trang 19với𝑥 là giá trị pixel Đặt = { | 1 ≤ k ≤ n } (1 ≤ , ≤ 28).
Algorithm 4: trích xuất Feature với AVE
Input: Một mảng T 3 chiều đại diện cho tập ảnh, mỗi ảnh là ma trận với số lượng phần tử
bằng WxH
Output: Một ma trận có kích thước WxH, thể hiện feature vector của tập ảnh.
1 Feat := T[0], ElementOfClass := len(T)
Feat[ ][ ] = (Feat[ ][ ] * + Image[ ][ ]) / ( + 1)𝑖 𝑗 𝑖 𝑗 𝑘 𝑖 𝑗 𝑘
Feat[ ][j] = Feat[ ][ ] as integer𝑖 𝑖 𝑗
4 Return Feat
—
Trang 20Fig.5 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng AVE
3.4 SAM (sample)
Sau khi sử dụng 3 phương pháp trên thì nhóm nhận thấy, vector feature mang đặc trưngcủa một lớp vẫn mang hình dạng nhận thấy được của lớp (feature vector của tập số 1 vẫnnhìn ra số 1) Nhóm muốn thử nghiệm không train để lấy feature vector mà dụng một ảnhbất kỳ của lớp để đại diện lớp đó làm feature vector Với phương pháp này, thời gian train
để trích xuất feature vector gần như bằng 0, với độ phức tạp O(1), chỉ cần trả về phần tửđầu tiên (hoặc bất kỳ) trong mảng
—
Algorithm 5: trích xuất Feature với LL
Input: Một mảng T 3 chiều đại diện cho tập ảnh, mỗi ảnh là ma trận với số lượng phần tử
Output: Một ma trận có kích thước WxH, thể hiện feature vector của tập ảnh
1 Feat := T[ ]𝑖
2 Return Feat
—
Trang 21Fig.6 Các feature vector chiết xuất được từ 10 class của bộ MNIST sử dụng LL với index = 0
3.5 Phân loại ảnh sử dụng các thuật toán trích xuất vector
Sau khi lấy được feature vector của các lớp khác nhau, có thể sử dụng các vector đó đểphân loại ảnh vào đúng lớp của nó Giả sử chúng ra có m lớp ảnh, có thể phân loại ảnhbằng thuật toán sau:
—
Algorithm 6: Phân loại tập ảnh test
Input: một vector 𝑣 đại diện cho một ảnh WxH chưa được phân loại và một tập các
Output: loại ảnh của 𝑣
Dk := 0
Trang 223.6 So sánh các thuật toán
Để đo lường được phần nào mức hiệu quả của thuật toán, nhóm thử nghiệm với bộdataset MNIST chữ số viết tay Dataset này gồm hai phần: tập ảnh dùng để train (60.000ảnh) và tập dùng để test (10.000 ảnh) Thí nghiệm gồm 2 bước cho mỗi thuật toán:
thường được dùng để đo lường trong machine learning:
Trang 23Accuracy 0.98 0.79 0.94 0.94 0.95 0.94 0.97 0.96 0.94 0.94 0.922SAM Precision 0.82 0.74 0.30 0.36 0.21 0.37 0.74 0.49 0.28 0.69 0.486
SAM là một trường hợp đặc biệt, do chỉ sử dụng một ảnh ngẫu nhiên của mỗi tập làmfeature vector nên kết quả sẽ không đồng nhất mà cũng ngẫu nhiên theo, hay nói cáchkhác là tùy vào độ may mắn của việc “chọn” feature vector mà độ hiệu quả của thuật toán
sẽ thay đổi có thể tốt hơn hoặc cũng có thể tệ hơn
Tóm lại, kết quả này, nhóm sẽ sử dụng AVE làm thuật toán phân loại ảnh cho bài toán ởđược đề ra