1. 1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
BÙI ĐỨC CÔNG
TÌM HIỂU SVM LỀ MỀM VÀ ỨNG DỤNG TRONG
TRA CỨU ẢNH DỰA VÀO NỘI DUNG
Đ
ĐỀ
Ề T
TÀ
ÀI
I T
TH
HỰ
ỰC
C T
TẬ
ẬP
P C
CƠ
Ơ S
SỞ
Ở
NGÀNH CÔNG NGHỆ THÔNG TIN
THÁI NGUYÊN, NĂM 2022
2. 2
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI THỰC TẬP CƠ SỞ
Ngành Công nghệ thông tin
Đề tài:
TÌM HIỂU SVM LỀ MỀM VÀ ỨNG DỤNG TRONG TRA
CỨU ẢNH DỰA VÀO NỘI DUNG
Sinh viên thực hiện: BÙI ĐỨC CÔNG
Lớp: CNTT_K18_CLC
Giảng viên hướng dẫn: ĐÀM THANH PHƯƠNG
Thái Nguyên, năm 2022
3. 3
MỤC LỤC
Đ
ĐỀ
Ề T
TÀ
ÀI
I T
TH
HỰ
ỰC
C T
TẬ
ẬP
P C
CƠ
Ơ S
SỞ
Ở......................................................................................1
MỤC LỤC ......................................................................................................................3
LỜI MỞ ĐẦU................................................................................................................5
LỜI CẢM ƠN................................................................................................................6
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT .........................................................................8
1.1 Tổng quan về Support Vector Machine (SVM)..............................................8
1.1.1 Giới thiệu về Support Vector Machine (SVM)..........................................8
1.1.2 Sort margin Support Vector Machine (SVM lề mềm)............................12
1.2 Tổng quan về python........................................................................................14
1.2.1 Đặc điểm của python.................................................................................15
1.2.2 Ứng dụng của python................................................................................17
1.2.3 Cách cài đặt python ...................................................................................19
CHƯƠNG 2 TRA CỨU ẢNH DỰA VÀO NỘI DUNG .....................................20
2.1 Lý do và mục tiêu...............................................................................................20
2.2 Những thành phần tra cứu ảnh dựa vào nội dung ..........................................21
2.2.1 Trích chọn đặc trưng (Features Extraction,Vector hóa hình ảnh): ........22
2.2.2 Tính khoảng cách giữa Vector (Euclid distance) ....................................26
CHƯƠNG 3 ÁP DỤNG VÀ CÀI ĐẶT ..................................................................27
3.1 Tải dữ liệu ...........................................................................................................27
3.2 Kết quả thử nghiệm............................................................................................27
3.2.1 Một số kết quả thử nghiệm.........................................................................30
KẾT LUẬN ..................................................................................................................31
TÀI LIỆU THAM KHẢO ........................................................................................32
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN...................................................33
5. 5
LỜI MỞ ĐẦU
Từ khi mạng internet được toàn cầu hoá kéo theo sự mở rộng của các nội
dung đa phương tiện như: ảnh, âm nhạc, video, v.v…, khiến cho nhu cầu chia sẻ
và tìm kiếm các loại tài nguyên này cũng tăng theo một cách nhanh chóng. Và
trong số các tài nguyên đó phải kể đến các dữ liệu hình ảnh. Mỗi người đều tìm
kiếm hình ảnh theo một mục đích khác nhau, nhưng chung quy lại cái người
dùng muốn tìm kiếm là những thông tin kèm theo và hình ảnh mà họ cần hoặc
một số khác lại tìm kiếm hình ảnh để xác nhận tính chính xác của thông tin họ
nhận được. Các dữ liệu hình ảnh đều phục vụ cho nhiều lĩnh vực quan trọng
trong cuộc sống như trong các hệ thống bảo mật, an ninh, y tế, hay các hệ thống
phát hiện chuyển động …. Vì thế việc nghiên cứu và phát triển các hệ thống tra
cứu ảnh ngày càng trở nên cấp thiết.
6. 6
LỜI CẢM ƠN
Trước tiên với tình cảm sâu sắc và chân thành nhất, cho phép em được
bày tỏ lòng biết ơn đến tất cả mọi người đã tạo điều kiện hỗ trợ, giúp đỡ em trong
suốt quá trình học tập và nghiên cứu đề tài này. Trong suốt thời gian từ khi bắt
đầu học tập tại trường đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ
của quý thầy cô và bạn bè.
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý thầy cô ở khoa Công
nghệ thông tin đã truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời
gian học tập tại trường. Nhờ có những lời hướng dẫn, dạy bảo của các thầy cô
nên đề tài nghiên cứu của em mới có thể hoàn thiện tốt đẹp.
Một lần nữa, em xin chân thành cảm ơn thầy Đàm Thanh Phương người
đã trực tiếp giúp đỡ, quan tâm, hướng dẫn em hoàn thành tốt bài báo cáo này
trong thời gian qua.
Vì thời gian có hạn nên không tránh khỏi những thiếu sót, em rất mong
nhận được những ý kiến đóng góp quý báu của quý Thầy Cô để kiến thức của em
trong lĩnh vực này được hoàn thiện hơn đồng thời có điều kiện bổ sung, nâng cao
kiến thức của mình.
Em xin chân thành cảm ơn!
8. 8
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về Support Vector Machine (SVM)
1.1.1 Giới thiệu về Support Vector Machine (SVM)
Support Vector Machine (SVM) là một mô hình Học máy rất mạnh mẽ và
linh hoạt, có khả năng thực hiện phân loại tuyến tính hoặc phi tuyến tính, hồi quy và
thậm chí phát hiện ra ngoại lai. Đây là một trong những mô hình phổ biến nhất trong
Học máy và bất kỳ ai quan tâm đến Học máy đều nên có nó trong hộp công cụ của họ.
SVM đặc biệt rất phù hợp để phân loại các bộ dữ liệu phức tạp nhưng có kích thước
vừa hoặc nhỏ.
Mục tiêu của SVM là tìm ra một siêu phẳng trong không gian N chiều (ứng với
N đặc trưng) chia dữ liệu thành hai phần tương ứng với lớp của chúng. Nói theo ngôn
ngữ của đại số tuyển tính, siêu phẳng này phải có lề cực đại và phân chia hai bao lồi
và cách đều chúng.
1.1.1.1 SVM tuyến tính
Hình 1. SVM trong không gian hai chiều và ba chiều
Trong không gian 2 chiều, ta biết rằng khoảng cách từ một điểm có toạ độ (xo,yo) tới
đường thẳng có phương trình : w1x + w2y + b = 0 được xác định bởi
Trong không gian ba chiều, khoảng cách từ một điểm có toạ độ (x0,y0,z0) tới một mặt
phẳng có phương trình : w1x + w2y +w3z + b = 0 được xác định bởi :
9. 9
Hơn nữa, nếu ta bỏ dấu trị tuyệt đối ở tử số, chúng ta có thể xác định được điểm đó
nằm về phía nào của đường thẳng hay mặt phẳng đang xét. Những điểm làm cho biểu
thức trong dấu giá trị tuyệt đối mang dấu dương nằm về cùng 1 phía (tôi tạm gọi đây
là phía dương của đường thẳng), những điểm làm cho biểu thức trong dấu giá trị tuyệt
đối mang dấu âm nằm về phía còn lại (tôi gọi là phía âm). Những điểm nằm
trên đường thẳng/măt phẳng sẽ làm cho tử số có giá trị bằng 0, tức khoảng cách bằng
0.
Việc này có thể được tổng quát lên không gian nhiều chiều: Khoảng cách từ một điểm
(vector) có toạ độ xo tới siêu mặt phẳng (hyperplane) có phương trình : wᵀx + b = 0
được xác định bởi
10. 10
1.1.1.2 Margin trong SVM (Lề trong SVM)
Margin là khoảng cách giữa siêu phẳng đến 2 điểm dữ liệu gần nhất tương ứng
với các phân lớp. Trong ví dụ quả táo quả lê đặt trên mặt bán, margin chính là khoảng
cách giữa cây que và hai quả táo và lê gần nó nhất. Điều quan trọng ở đây đó là
phương pháp uả táo và lê. Nhờ vậy, SVM có thể giảm thiểu việc phân lớp sai
(misclassification) đối với điểm dữ liệu mới đưa vào
1.1.1.3 Lập trình tìm nghiệm cho bài toán SVM
1.1.1.4 Kết luận về SVM
11. 11
Là một kĩ thuật phân lớp khá phổ biến, SVM thể hiện được nhiều ưu điểm trong
số đó có việc tính toán hiệu quả trên các tập dữ liệu lớn. Có thể kể thêm một số Ưu
điểm của phương pháp này như:
Xử lý trên không gian số chiều cao: SVM là một công cụ tính toán hiệu quả
trong không gian chiều cao, trong đó đặc biệt áp dụng cho các bài toán phân
loại văn bản và phân tích quan điểm nơi chiều có thể cực kỳ lớn.
Tiết kiệm bộ nhớ: Do chỉ có một tập hợp con của các điểm được sử dụng trong
quá trình huấn luyện và ra quyết định thực tế cho các điểm dữ liệu mới nên chỉ
có những điểm cần thiết mới được lưu trữ trong bộ nhớ khi ra quyết định.
Tính linh hoạt - phân lớp thường là phi tuyến tính. Khả năng áp dụng Kernel
mới cho phép linh động giữa các phương pháp tuyến tính và phi tuyến tính từ
đó khiến cho hiệu suất phân loại lớn hơn.
Nhược điểm:
Bài toán số chiều cao: Trong trường hợp số lượng thuộc tính (p) của tập dữ liệu
lớn hơn rất nhiều so với số lượng dữ liệu (n) thì SVM cho kết quả khá tồi.
Chưa thể hiện rõ tính xác suất: Việc phân lớp của SVM chỉ là việc cố gắng tách
các đối tượng vào hai lớp được phân tách bởi siêu phẳng SVM. Điều này chưa
giải thích được xác suất xuất hiện của một thành viên trong một nhóm là như
thế nào. Tuy nhiên hiệu quả của việc phân lớp có thể được xác định dựa vào
khái niệm margin từ điểm dữ liệu mới đến siêu phẳng phân lớp mà chúng ta đã
bàn luận ở trên.
Kết luận: SVM là một phương pháp hiệu quả cho bài toán phân lớp dữ liệu. Nó là một
công cụ đắc lực cho các bài toán về xử lý ảnh, phân loại văn bản, phân tích quan điểm.
Một yếu tố làm nên hiệu quả của SVM đó là việc sử dụng Kernel function khiến cho
các phương pháp chuyển không gian trở nên linh hoạt hơn.
12. 12
1.1.2 Sort margin Support Vector Machine (SVM lề mềm)
Thuật toán này cho phép SVM mắc một số lỗi nhất định và giữ cho lề càng rộng càng
tốt để các điểm khác vẫn có thể được phân loại chính xác. Nói một cách khác, nó cân
bằng giữa việc phân loại sai và tối đa hóa lề.
Có hai kiểu phân loại sai có thể xảy ra:
+ Dữ liệu nằm ở đúng bên nhưng phạm vào lề
+ Dữ liệu nằm ở sai bên
Mức độ chấp nhận lỗi
Mức độ chấp nhận lỗi là một siêu tham số quan trọng trong SVM. Khi lập trình với
sklearn, mức độ chấp nhận lỗi được coi như một tham số phạt (C). Hình dưới thể hiện
SVM với các giá trị C khác nhau.
C càng lớn có nghĩa là SVM càng bị phạt nặng khi thực hiện phân loại sai. Do đó, lề
càng hẹp và càng ít vectơ hỗ trợ được sử dụng.
13. 13
Thủ thuật Kernel
Một kernel là một hàm ánh xạ dữ liệu từ không gian ít nhiều hơn sang không gian
nhiều chiều hơn, từ đó ta tìm được siêu phẳng phân tách dữ liệu. Một cách trực quan,
kỹ thuật này giống như việc bạn gập tờ giấy lại để có thể dùng kéo cắt một lỗ tròn trên
nó.
Biểu diễn trực quan của thủ thuật kernel :
Các kiểu Kernel:
1. Tuyến tính
2. Đa thức
3. RBF
4. Sigmoid
14. 14
1.2 Tổng quan về python
Python là một ngôn ngữ lập trình thông dịch, hướng đối tượng, ngôn ngữ lập trình
cấp cao được giải thích với ngữ nghĩa động. Python với triết lý thiết kế của nó rất
thuận tiện cho việc đọc hiểu code, đơn giản và rõ ràng được thiết kế bởi Guido van
Rossum. Thiết kế bắt đầu vào cuối những năm 1980 và được phát hành lần đầu tiên
vào tháng 2 năm 1991. Đến nay thì cộng đồng người sử dụng ngôn ngữ này rất đông,
nếu so sánh từ bảng xếp hạng các ngôn ngữ năm 2018 thì Python đã leo lên vị trí số 1
trên bảng xếp hạng những ngôn ngữ lập trình phổ biến.
15. 15
Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động. Ngôn
ngữ này có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu
quả đối với lập trình hướng đối tượng. Do đó nó tương tự như Perl, Ruby, Scheme,
Smalltalk, và Tcl. Ngôn ngữ này được phát triển trong một dự án mã mở, do tổ chức
phi lợi nhuận Python Software Foundation quản lý. Theo đánh giá của Eric S.
Raymond, Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện
cho người mới học lập trình. Cấu trúc của nó còn cho phép người sử dụng viết mã lệnh
với số lần gõ phím tối thiểu, như nhận định của chính Guido van Rossum trong một
bài phỏng vấn ông.
1.2.1 Đặc điểm của python
Ngôn ngữ lập trình đơn giản, dễ học
Python có cú pháp rất đơn giản, rõ ràng. Nó dễ đọc và viết hơn rất nhiều khi so sánh
với những ngôn ngữ lập trình khác như C++, Java, C#. Python làm cho việc lập trình
trở nên thú vị, cho phép bạn tập trung vào những giải pháp chứ không phải cú pháp.
Miễn phí, mã nguồn mở
Bạn có thể tự do sử dụng và phân phối Python, thậm chí là dùng cho mục đích thương
mại. Vì là mã nguồn mở, bạn không những có thể sử dụng các phần mềm, chương
trình được viết trong Python mà còn có thể thay đổi mã nguồn của nó. Python có một
cộng đồng rộng lớn, không ngừng cải thiện nó mỗi lần cập nhật.
Khả năng di động linh hoạt
Giả sử bạn giả sử bạn đã viết mã Python cho máy Windows của mình. Bây giờ, nếu
bạn muốn chạy nó trên máy Mac, bạn không cần phải thay đổi nó như cũ. Nói cách
khác, bạn có thể lấy một mã và chạy nó trên bất kỳ máy nào, không cần phải viết mã
khác nhau cho các máy khác nhau. Điều này làm cho Python trở thành một ngôn ngữ
di động. Tuy nhiên, bạn phải tránh mọi tính năng phụ thuộc hệ thống trong trường hợp
này. Nó chạy liền mạch trên hầu hết tất cả các nền tảng như Windows, macOS, Linux.
16. 16
Khả năng mở rộng và có thể nhúng
Giả sử một ứng dụng đòi hỏi sự phức tạp rất lớn, bạn có thể dễ dàng kết hợp các phần
code bằng C, C++ và những ngôn ngữ khác (có thể gọi được từ C) vào code Python.
Điều này sẽ cung cấp cho ứng dụng của bạn những tính năng tốt hơn cũng như khả
năng scripting mà những ngôn ngữ lập trình khác khó có thể làm được.
Ngôn ngữ thông dịch cấp cao
Không giống như C/C++, với Python, bạn không phải lo lắng những nhiệm vụ khó
khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu vô nghĩa,… Khi chạy code Python,
nó sẽ tự động chuyển đổi code sang ngôn ngữ máy tính có thể hiểu. Trong nội bộ, mã
nguồn của nó được chuyển đổi thành một hình thức ngay lập tức được gọi là bytecode.
Vì vậy, tất cả những gì bạn cần làm là chạy đoạn code Python của bạn mà không phải
lo lắng về việc liên kết với các thư viện và những thứ khác.
Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến
Python có một số lượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của bạn
trở nên dễ thở hơn rất nhiều, đơn giản vì không phải tự viết tất cả code. Ví dụ: Bạn cần
kết nối cơ sở dữ liệu MySQL trên Web server? Bạn có thể nhập thư viện MySQLdb và
sử dụng nó. Có các thư viện cho các biểu thức thông thường, tạo tài liệu, kiểm tra đơn
vị, trình duyệt web, phân luồng, cơ sở dữ liệu, CGI, email, thao tác hình ảnh và rất
nhiều chức năng khác. Vì vậy, bạn có thể chắc chắn rằng nó sẽ không làm hỏng code
hay ứng dụng của mình.
17. 17
Hướng đối tượng
Mọi thứ trong Python đều là hướng đối tượng. Lập trình hướng đối tượng (OOP) giúp
giải quyết những vấn đề phức tạp một cách trực quan. Với OOP, bạn có thể phân chia
những vấn đề phức tạp thành những tập nhỏ hơn bằng cách tạo ra các đối tượng.
Python hỗ trợ cả lập trình hướng đối tượng, một trong những tính năng chính của nó.
Nó cũng hỗ trợ nhiều kế thừa, không giống như Java.
1.2.2 Ứng dụng của python
Phân tích dữ liệu (Data Analytics)
Khi nói đến khoa học dữ liệu, thống kê, phân tích, Machine Learning, Python là
một trong những ngôn ngữ phù hợp nhất cho yêu cầu cũng như mục tiêu trong việc
phân tích dữ liệu. Vâng, nó có một sự cạnh tranh không hề dễ dàng giữa Python với R.
R là một ngôn ngữ lập trình thống kê. Nếu bạn thích điều đó, bạn có thể cân nhắc việc
học R.
Nhưng python là ngôn ngữ lập trình mục đích chung không chỉ được sử dụng
cho lập trình thống kê, mà còn rất phù hợp để xây dựng trò chơi, trang web, ứng dụng
kinh doanh và nhiều hơn nữa. Chưa kể ngôn ngữ lập trình này “gần” với ngôn ngữ tự
nhiên, vì vậy nó dễ dàng để những bạn chưa có kiến thức về lập trình cũng dễ dàng
tiếp cận học tập.
Lập trình ứng dụng web (Web development)
Bạn có thể tạo web app có khả năng mở rộng (scalable) được bằng cách sử dụng
framework và CMS (Hệ thống quản trị nội dung) được tích hợp trong Python. Vài nền
tảng phổ biến để tạo web app là: Django, Flask, Pyramid, Plone, Django CMS. Các
trang như Mozilla, Reddit, Instagram và PBS đều được viết bằng ngôn ngữ này.
Khoa học và Số liệu ứng dụng
Python đang trở thành con cưng của nhiều nhà khoa học dữ liệu chỉ vì bộ sưu tập thư
viện của nó được thiết kế để phân tích thống kê và phân tích số liệu:
18. 18
SciPy – Một bộ sưu tập các gói cho toán học, khoa học và kỹ thuật.
Pandas – Một thư viện phân tích dữ liệu và mô hình.
IPython – Một trình bao mạnh mẽ để dễ dàng chỉnh sửa và ghi lại các phiên làm việc.
Nó cũng hỗ trợ trực quan hóa và tính toán song song.
Ngoài ra, NumPy cho phép chúng ta xử lý các phép tính số phức tạp.
Có nhiều thư viện trong Python cho khoa học và tính toán số liệu, như SciPy và
NumPy, được sử dụng cho những mục đích chung chung trong tính toán. Và, có những
thư viện cụ thể như: EarthPy cho khoa học trái đất, AstroPy cho Thiên văn học,…
Ngoài ra, nó còn được sử dụng nhiều trong machine learning, khai thác dữ liệu và deep
learning.
Phát triển ERP
Python đang được sử dụng trong việc phát triển phần mềm cho giải pháp cấp doanh
nghiệp. Đã có nhiều ERP phổ biến như Odoo & Tryton tồn tại, tạo sức mạnh cho các
doanh nghiệp từ nhỏ đến lớn quản lý toàn bộ hoạt động và hàng tồn kho của họ.
Odoo được xây dựng trên python và là một bộ hoàn chỉnh các ứng dụng quản lý doanh
nghiệp có hiệu quả.
Phát triển trò chơi
Có, bạn có thể phát triển trò chơi bằng python mặc dù hầu hết các lập trình viên game
sử dụng framework được ưa thích nhất để phát triển trò chơi là Unity. Nó có
framework như PyGame, PyKyra để phát triển trò chơi với Python. Bạn cũng có được
nhiều thư viện truy xuất 3D để phát triển trò chơi 3D.
19. 19
Ngôn ngữ dễ học để khởi đầu đào tạo lập trình
Python được nhiều công ty, trường học sử dụng để dạy lập trình cho trẻ em và những
người mới lần đầu học lập trình. Bên cạnh những tính năng và khả năng tuyệt vời thì
cú pháp đơn giản và dễ sử dụng của nó là lý do chính cho việc này.
1.2.3 Cách cài đặt python
Hiện tại có rất nhiều phần mềm hộ trợ code python như là
Pycharm,Thonny,Visual Studio Code ,Jupyter Notebook, … v v .
Các bạn có thể tải các IDE python tại
Pycharm : https://www.jetbrains.com/pycharm/
Thonny : https://thonny.org
Visual Studio Code : https://code.visualstudio.com/download
20. 20
CHƯƠNG 2 TRA CỨU ẢNH DỰA VÀO NỘI DUNG
2.1 Lý do và mục tiêu
Trong thời đại bùng nổ về tìm kiếm thông tin hiện nay, ngoài việc tìm kiếm các
văn bản nội dung thì việc tìm kiếm ảnh đang có xu hướng trở nên phổ biến. Với
nguồn tài nguyên ảnh vô cùng to lớn trên mạng internet, thì việc tìm kiếm chính xác
một bức ảnh đúng với yêu cầu của người dùng là khó khả thi. Chúng ta khó có thể
tìm kiếm một bức ảnh theo cách thông thường, có nghĩa là việc tìm kiếm được thực
hiện lần lượt trên từng tấm ảnh cho đến khi tìm thấy đúng ảnh có nội dung cần tìm.
Với lại nguồn tài nguyên ảnh trên mạng internet sẽ ngày càng nhiều hơn nữa theo sự
phát triển của công nghệ số trong tương lai.
Mục tiêu : Do đó, nhu cầu thật sự đòi hỏi chúng ta phải có một công cụ hỗ trợ
cho việc tìm kiếm ảnh càng sớm càng tốt.
21. 21
2.2 Những thành phần tra cứu ảnh dựa vào nội dung
1. Tải dữ liệu ảnh
2. Vector hoá ảnh dữ liệu và lưu trữ, ta có tập vector V có N vector
3. Vector hoá ảnh cần tìm kiếm
4. Tính toán khoảng cách từ vector v đến tất cả các vector trong tập V
5. Hiển thị ra K ảnh có khoảng cách gần nhất.
22. 22
2.2.1 Trích chọn đặc trưng (Features Extraction,Vector hóa hình ảnh):
Các đặc trưng của ảnh bao gồm các đặc tính cơ bản và các đặc tính ngữ
nghĩa/logic. Các đặc tính cơ bản đó là: màu sắc (color), hình dạng (shape), kết cấu
(texture), vị trí không gian (spatial location). Chúng có thể được trích xuất tự động
hoặc bán tự động. Đặc tính logic cung cấp mô tả trừu tượng của dữ liệu hình ảnh ở
các cấp độ khác nhau. Thông thường, các đặc tính logic được chiết xuất bằng tay
hoặc bán tự động. Một hoặc nhiều đặc trưng có thể được sử dụng trong ứng dụng cụ
thể.
2.2.1.1 Đặc trưng màu sắc (color):
Đặc trưng màu sắc là một trong những đặc tính được sử dụng phổ biến trong tra
cứu ảnh. Màu sắc được định nghĩa trên một không gian màu lựa chọn. Sự đa dạng
của không gian màu là có sẵn, chúng thường được dùng cho các ứng dụng khác
nhau. Không gian màu được thể hiện gần gũi hơn với nhận thức của con người và
được sử dụng rộng rãi trong RGB, LAB, HSV, …. Đặc trưng màu sắc phổ biến hoặc
các mô tả trong hệ thống CBIR bao gồm: ma trận hiệp biến màu, biểu đồ màu,
moment màu, và véc-tơ kết hợp màu [5]. Vào năm 1999, Gevers và cộng sự đã quan
tâm đến các đối tượng lấy từ các điểm quan sát khác nhau và sự chiếu sáng. Theo
kết quả, một tập các điểm bất biến đặc trưng màu đã được tính toán. Các bất biến
màu được xây dựng trên cơ sở của “hue”, “cặp hue-hue”, và ba đặc trưng màu được
tính toán từ các mô hình đối xứng. Việc lựa chọn đặc trưng màu phụ thuộc vào kết
23. 23
quả phân đoạn. Ví dụ, nếu việc phân đoạn cung cấp đối tượng mà không có màu
đồng nhất, thì rõ ràng màu trung bình không phải là lựa chọn tốt. Với các ứng dụng
đặc biệt như cơ sở dữ liệu khuôn mặt người, thì miền tri thức có thể được khai thác
để gán trọng số cho từng điểm ảnh trong việc tính toán vùng màu.
2.2.1.2 Đặc trưng kết cấu (texture):
Kết cấu không được định nghĩa đầy đủ như là đặc trưng màu sắc, vì thế mà một
số hệ thống không sử dụng đặc trưng kết cấu. Tuy nhiên, kết cấu cung cấp các
thông tin quan trọng trong việc phân loại ảnh, vì nó mô tả nội dung của nhiều ảnh
thực như là: vỏ trái cây, mây, cây, gạch, và vải. Do đó, kết cấu là một tính năng
quan trọng trong việc định nghĩa ngữ nghĩa mức cao cho mục đích tra cứu ảnh [5].
Các đặc trưng kết cấu thường được sử dụng trong hệ thống tra cứu ảnh bao gồm các
đặc trưng phổ, chẳng hạn như các đặc trưng được bao gồm sử dụng lọc Gabor hoặc
biến đổi wavelet, thống kê đặc trưng kết cấu trong các cách đo độ thống kê cục bộ,
như sáu đặc trưng kết cấu Tamura, và đặc trưng wold được đề xuất bởi Liu và các
cộng sự vào năm 1996.
2.2.1.3 Đặc trưng dựa trên hình dạng (shape):
Hình dạng là một khái niệm được định nghĩa khá tốt. Đặc trưng hình dạng của
các ứng dụng nói chung bao gồm: tỷ lệ aspect, tuần hoàn, mô tả Fourier, bất biến
thời điểm, phân đoạn đường bao liên tiếp, …. Đặc trưng hình dạng là đặc trưng ảnh
quan trọng, mặc dù chúng chưa được sử dụng rộng rãi trong CBIR như là đặc trưng
màu và đặc trưng kết cấu [5]. Đặc trưng hình dạng đã thể hiện tính hữu ích trong
nhiều miền ảnh đặc biệt như là các đối tượng nhân tạo. Đối với ảnh màu thì được sử
dụng trong hầu hết các loại giấy tờ, tuy nhiên, nó lại khó khăn để áp dụng đặc trưng
24. 24
hình dạng so với màu sắc và kết cấu do sự thiếu chính xác của phân đoạn. Mặc dù
gặp khó khăn, đặc trưng hình dạng chỉ được sử dụng trong một số hệ thống và cho
thấy tiềm năng có ích cho CBIR. Ví dụ, vào năm 2003, Mezaris và các cộng sự đã
sử dụng các đặc trưng hình dạng đơn giản chẳng hạn như: độ lệch tâm và định
hướng. Một hệ thống mà Wang và cộng sự vào năm 1999 đã sử dụng tiêu chuẩn hoá
quán tính của thứ tự từ 1-3 để mô tả hình dạng khu vực.
2.2.1.4 Đặc trưng không gian (spatial location):
Các vùng hoặc đối tượng với thuộc tính màu sắc và kết cấu tương tự có thể
được nhận ra một cách dễ dàng bởi ràng buộc không gian [5]. Ví dụ, các vùng có
bầu trời và biển màu xanh có thể có biểu đồ màu tương tự, nhưng lại có vị trí không
gian trong ảnh khác nhau. Vì thế, vị trí không gian của các vùng (hoặc các đối
tượng) hoặc mối liên hệ không gian giữa nhiều vùng trong một ảnh thì rất hữu dụng
cho việc tra cứu ảnh. Một biểu diễn của mối liên hệ không gian được sử dụng rộng
rãi nhất là “2D strings” được Chang và các cộng sự đưa ra vào năm 1987. Kỹ thuật
này được xây dựng bằng cách chiếu các ảnh theo trục x và y. Cho hai tập ký hiệu V
và A, được định nghĩa trên phép chiếu. Cứ mỗi ký hiệu trong V thì được biểu diễn
bởi một đối tượng trong ảnh. Còn mỗi ký hiệu trong A thì được biểu diễn bởi một
loại liên hệ không gian giữa các đối tượng. Nếu chúng khác nhau, thì kỹ thuật
“2D G-string” sẽ cắt tất cả các đối tượng dọc theo đường bao hộp nhỏ nhất và mở
rộng mối liên hệ không gian vào trong hai tập toán tử không gian. Một tập toán tử
thì định nghĩa mối liên hệ không gian cục bộ. Và tập còn lại thì định nghĩa mối liên
hệ không gian toàn cục, chỉ ra rằng phép chiếu của hai đối tượng là tách ra, nối liền
hoặc được xác định ở cùng vị trí. Ngoài ra, kỹ thuật “2D C-string” thì được đề xuất
25. 25
bởi Lee và các cộng sự vào năm 1990 để cực tiểu con số đối tượng đã cắt. Còn kỹ
thuật “2D B-string” thì lại được giới thiệu vào năm 1992 bởi Yang và các cộng sự.
Kỹ thuật này sẽ biểu diễn một đối tượng bởi hai ký hiệu, thay thế cho việc mở đầu
và kết thúc đường bao của đối tượng.
Hầu hết các phương pháp trên có thể tạo ra ba kiểu truy vấn. Kiểu truy vấn 0 sẽ
tìm tất cả các ảnh chứa đối tượng O1, O2, …, On. Kiểu truy vấn 1 sẽ tìm tất cả các
ảnh chứa đối tượng mà có mối liên hệ chắc chắn giữa từng đối tượng khác, nhưng
khoảng cách giữa chúng là không có nghĩa. Cuối cùng, kiểu truy vấn 2 sẽ tìm tất cả
các ảnh mà có liên kết khoảng cách chắc chắn với từng đối tượng khác.
Ngoài kỹ thuật “2D string” ở trên, còn có các kỹ thuật khác như: “spatial
quad-tree” được giới thiệu vào năm 1984 bởi Samet, và “symbolic image” được
giới thiệu vào năm 1995 bởi Gudivada và Raghavan. Hai kỹ thuật này thì được
dùng để biểu diễn thông tin không gian. Tuy nhiên, tra cứu ảnh dựa trên mối liên hệ
không gian của vùng thì vẫn là một bài toán khó trong nghiên cứu tra cứu ảnh dựa
trên nội dung. Bởi vì, các phân đoạn của đối tượng hoặc các vùng đáng tin cậy thì
thường không khả thi trừ khi trong các ứng dụng rất giới hạn. Mặc dù, một số hệ
thống đơn giản phân chia ảnh vào trong các khối con chuẩn, mà chỉ đạt được thành
công nhỏ với phương pháp phân chia không gian từ hầu hết ảnh tự nhiên không bị
nén vào các khối con chuẩn. Để giải quyết vấn đề này, một phương pháp dựa trên
kỹ thuật “Radon transform”, một kỹ thuật mà sẽ khai thác các đặc trưng trực quan
của sắp xếp không gian mà không cần phân đoạn phức tạp. Phương pháp này được
đề xuất vào năm 1998 bởi Guo và các cộng sự.
30. 30
3.2.1 Một số kết quả thử nghiệm
ở đây chọn tìm kiếm ảnh lion
Kết quả
-Nhận xét về chương trình
+Có thể thấy rằng, việc áp dụng kỹ thuật máy học SVM vào phản hồi liên quan đã
làm tăng độ chính xác tra cứu ảnh dựa theo nội dung. Tuy nhiên, vẫn tồn tại một số
mặt hạn chế của phương pháp này.
+Các mặt hạn chế là:
-Máy tính mất nhiều thời gian để tính toán.
-Thiếu lịch sử thông tin phản hồi của người dùng để hệ thống có thể học ý định
của người dùng trong dài hạn.
-Chương trình chỉ áp dụng duy nhất phương pháp máy học SVM, mà chưa áp
dụng kết hợp các thuật toán máy học khác nhằm nâng cao hiệu năng tra cứu
ảnh
31. 31
KẾT LUẬN
-Sau một thời gian tìm hiểu và nghiên cứu đề tài đã đạt được một số kết quả sau:
-Tìm hiểu được cấu trúc của một hệ thống tra cứu ảnh dựa trên nội dung.
-Tìm hiểu được một số phương pháp làm giảm khoảng cách ngữ nghĩa trong tra
cứu ảnh dựa trên nội dung.
-Tìm hiểu các phương pháp trong phản hồi liên quan.
-Tìm hiểu thuật toán máy học SVM được áp dụng vào trong hệ thống phản hồi
liên quan để học phản hồi của người dùng.
-Xây dựng được chương trình thử nghiệm.
-Tuy nhiên do thời gian có hạn trong quá trình nghiên cứu đề tài nên vẫn chỉ
dừng lại ở việc xây dựng chương trình thử nghiệm. Ngoài ra, chương trình mới chỉ
dừng lại ở mức áp dụng một thuật toán máy học SVM cho phản hồi liên quan, chưa
áp dụng được các thuật toán máy học khác vào trong chương trình thử nghiệm để so
sánh hiệu năng tra cứu của từng thuật toán với nhau.
-Do đó, em rất mong nhận được sự đóng góp ý kiến từ các Thầy Cô và các bạn
để em có thêm kiến thức và kinh nghiệm tiếp tục hoàn thiện nội dung nghiên cứu
trong đề tài.
Em xin chân thành cảm ơn!
32. 32
TÀI LIỆU THAM KHẢO
-Mẫu văn bản Mẫu quy định hình thức báo cáo khoa Công nghệ thông tin, ĐH
Công nghệ Thông tin và truyền thông Thái Nguyên.
-Tài liệu do thầy giáo hướng dẫn cung cấp.
- https://www.jstor.org/stable/24098937?seq=1
-
https://www.youtube.com/watch?v=C42lHmnNFe8&list=PLSYAdpgaake9w5C
eG6azqQ9qCI5NxsuVx&index=34
- https://heartbeat.comet.ml/building-a-content-based-image-search-engine-part-
1-f5b924d5e3b6
-https://machinelearningcoban.com/2017/04/09/smv/
33. 33
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
Thái Nguyên, ngày.....tháng.....năm 2022
Giáo viên hướng dẫn
(Ký tên, ghi dõ họ tên)
Điểm