SlideShare une entreprise Scribd logo
1  sur  33
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
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
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
4
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
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!
7
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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ự.
26
2.2.2 Tính khoảng cách giữa Vector (Euclid distance)
27
CHƯƠNG 3 ÁP DỤNG VÀ CÀI ĐẶT
3.1 Tải dữ liệu
CBIR Dataset (https://www.kaggle.com/theaayushbajaj/cbir-dataset)
3.2 Kết quả thử nghiệm
28
29
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
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
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
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

Contenu connexe

Tendances

Báo cáo đồ án đề tài xây dựng trợ lý ảo bằng python
Báo cáo đồ án đề tài xây dựng trợ lý ảo bằng pythonBáo cáo đồ án đề tài xây dựng trợ lý ảo bằng python
Báo cáo đồ án đề tài xây dựng trợ lý ảo bằng pythonjackjohn45
 
SIFT Algorithm Introduction
SIFT Algorithm IntroductionSIFT Algorithm Introduction
SIFT Algorithm IntroductionTruong LD
 
Tong quan ve phan cum data mining
Tong quan ve phan cum   data miningTong quan ve phan cum   data mining
Tong quan ve phan cum data miningHoa Chu
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu sốHao Truong
 
linear filtering & Non-linear filtering
linear filtering & Non-linear filteringlinear filtering & Non-linear filtering
linear filtering & Non-linear filteringducmanhkthd
 
Xử lý ảnh PTIT
Xử lý ảnh PTITXử lý ảnh PTIT
Xử lý ảnh PTITTran Tien
 
Hỗ trợ ra quyết định
Hỗ trợ ra quyết địnhHỗ trợ ra quyết định
Hỗ trợ ra quyết địnhlmphuong06
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Sốviethung094
 
Bài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuBài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuLê Minh
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++nataliej4
 
KHMT_NguyenDinhVietAnh.pptx
KHMT_NguyenDinhVietAnh.pptxKHMT_NguyenDinhVietAnh.pptx
KHMT_NguyenDinhVietAnh.pptxVanhVanh8
 
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơnKĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơnNguyen Thieu
 

Tendances (20)

Báo cáo đồ án đề tài xây dựng trợ lý ảo bằng python
Báo cáo đồ án đề tài xây dựng trợ lý ảo bằng pythonBáo cáo đồ án đề tài xây dựng trợ lý ảo bằng python
Báo cáo đồ án đề tài xây dựng trợ lý ảo bằng python
 
Đề tài: Quản lý cửa hàng vật liệu xây dựng, HAY, 9đ
Đề tài: Quản lý cửa hàng vật liệu xây dựng, HAY, 9đĐề tài: Quản lý cửa hàng vật liệu xây dựng, HAY, 9đ
Đề tài: Quản lý cửa hàng vật liệu xây dựng, HAY, 9đ
 
Đề tài: Đồ án Xử lý ảnh Nhận dạng mặt người trên matlab, HAY
Đề tài: Đồ án Xử lý ảnh Nhận dạng mặt người trên matlab, HAYĐề tài: Đồ án Xử lý ảnh Nhận dạng mặt người trên matlab, HAY
Đề tài: Đồ án Xử lý ảnh Nhận dạng mặt người trên matlab, HAY
 
SIFT Algorithm Introduction
SIFT Algorithm IntroductionSIFT Algorithm Introduction
SIFT Algorithm Introduction
 
Tong quan ve phan cum data mining
Tong quan ve phan cum   data miningTong quan ve phan cum   data mining
Tong quan ve phan cum data mining
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu số
 
linear filtering & Non-linear filtering
linear filtering & Non-linear filteringlinear filtering & Non-linear filtering
linear filtering & Non-linear filtering
 
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAYĐề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
 
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đĐề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
 
Xử lý ảnh PTIT
Xử lý ảnh PTITXử lý ảnh PTIT
Xử lý ảnh PTIT
 
Hỗ trợ ra quyết định
Hỗ trợ ra quyết địnhHỗ trợ ra quyết định
Hỗ trợ ra quyết định
 
Xử lý tín hiệu số
Xử lý tín hiệu sốXử lý tín hiệu số
Xử lý tín hiệu số
 
Đề tài: Nhận dạng mặt người trên matlab, HOT, 9đ
Đề tài: Nhận dạng mặt người trên matlab, HOT, 9đĐề tài: Nhận dạng mặt người trên matlab, HOT, 9đ
Đề tài: Nhận dạng mặt người trên matlab, HOT, 9đ
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Số
 
Bài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuBài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệu
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++
 
Luận văn tốt nghiệp: Tìm hiểu bài toán làm trơn ảnh, HAY
Luận văn tốt nghiệp: Tìm hiểu bài toán làm trơn ảnh, HAYLuận văn tốt nghiệp: Tìm hiểu bài toán làm trơn ảnh, HAY
Luận văn tốt nghiệp: Tìm hiểu bài toán làm trơn ảnh, HAY
 
KHMT_NguyenDinhVietAnh.pptx
KHMT_NguyenDinhVietAnh.pptxKHMT_NguyenDinhVietAnh.pptx
KHMT_NguyenDinhVietAnh.pptx
 
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơnKĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
 
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đĐề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
 

Similaire à SVM trong tìm kiếm ảnh dựa vào nội dung

4 - Phan lop du lieu-Final.pptx
4 - Phan lop du lieu-Final.pptx4 - Phan lop du lieu-Final.pptx
4 - Phan lop du lieu-Final.pptxMUyn25
 
Huong dan-su-dung-phan-mem-vien-tham-env
Huong dan-su-dung-phan-mem-vien-tham-envHuong dan-su-dung-phan-mem-vien-tham-env
Huong dan-su-dung-phan-mem-vien-tham-envLam Ly
 
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...jackjohn45
 
Computer Vision Report
Computer Vision ReportComputer Vision Report
Computer Vision ReportMan_Ebook
 
Giải tích các hàm nhiều biến.pdf
Giải tích các hàm nhiều biến.pdfGiải tích các hàm nhiều biến.pdf
Giải tích các hàm nhiều biến.pdfMan_Ebook
 
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...jackjohn45
 
MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON
MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON
MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON Bông Bông
 

Similaire à SVM trong tìm kiếm ảnh dựa vào nội dung (20)

4 - Phan lop du lieu-Final.pptx
4 - Phan lop du lieu-Final.pptx4 - Phan lop du lieu-Final.pptx
4 - Phan lop du lieu-Final.pptx
 
Phân loại giới tính người dùng mạng xã hội dựa vào tin nhắn, 9đ
Phân loại giới tính người dùng mạng xã hội dựa vào tin nhắn, 9đPhân loại giới tính người dùng mạng xã hội dựa vào tin nhắn, 9đ
Phân loại giới tính người dùng mạng xã hội dựa vào tin nhắn, 9đ
 
Huong dan-su-dung-phan-mem-vien-tham-env
Huong dan-su-dung-phan-mem-vien-tham-envHuong dan-su-dung-phan-mem-vien-tham-env
Huong dan-su-dung-phan-mem-vien-tham-env
 
Biến đổi sóng nhỏ và trộn có trọn lọc cho giấu ảnh trong ảnh
Biến đổi sóng nhỏ và trộn có trọn lọc cho giấu ảnh trong ảnhBiến đổi sóng nhỏ và trộn có trọn lọc cho giấu ảnh trong ảnh
Biến đổi sóng nhỏ và trộn có trọn lọc cho giấu ảnh trong ảnh
 
Luận văn: Giải thuật bám đuổi đối tượng sử dụng bộ lọc Particle
Luận văn: Giải thuật bám đuổi đối tượng sử dụng bộ lọc ParticleLuận văn: Giải thuật bám đuổi đối tượng sử dụng bộ lọc Particle
Luận văn: Giải thuật bám đuổi đối tượng sử dụng bộ lọc Particle
 
Luận văn: Học máy cho bài toán trích xuất thông tin quan điểm, 9đ
Luận văn: Học máy cho bài toán trích xuất thông tin quan điểm, 9đLuận văn: Học máy cho bài toán trích xuất thông tin quan điểm, 9đ
Luận văn: Học máy cho bài toán trích xuất thông tin quan điểm, 9đ
 
Đề tài: Tìm hiểu về Maximum Entropy cho bài toán phân lớp, HAY
Đề tài: Tìm hiểu về Maximum Entropy cho bài toán phân lớp, HAYĐề tài: Tìm hiểu về Maximum Entropy cho bài toán phân lớp, HAY
Đề tài: Tìm hiểu về Maximum Entropy cho bài toán phân lớp, HAY
 
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
 
BÀI MẪU Khóa luận ngành Khoa học máy tính, HAY, 9 ĐIỂM
BÀI MẪU Khóa luận ngành Khoa học máy tính, HAY, 9 ĐIỂMBÀI MẪU Khóa luận ngành Khoa học máy tính, HAY, 9 ĐIỂM
BÀI MẪU Khóa luận ngành Khoa học máy tính, HAY, 9 ĐIỂM
 
Computer Vision Report
Computer Vision ReportComputer Vision Report
Computer Vision Report
 
Luận văn: Hệ thống khuyến nghị cho bài toán dịch vụ giá trị gia tăng
Luận văn: Hệ thống khuyến nghị cho bài toán dịch vụ giá trị gia tăngLuận văn: Hệ thống khuyến nghị cho bài toán dịch vụ giá trị gia tăng
Luận văn: Hệ thống khuyến nghị cho bài toán dịch vụ giá trị gia tăng
 
Luận văn: Tính toán khoảng giải các ràng buộc không tuyến tính
Luận văn: Tính toán khoảng giải các ràng buộc không tuyến tínhLuận văn: Tính toán khoảng giải các ràng buộc không tuyến tính
Luận văn: Tính toán khoảng giải các ràng buộc không tuyến tính
 
NhomX.docx
NhomX.docxNhomX.docx
NhomX.docx
 
Giải tích các hàm nhiều biến.pdf
Giải tích các hàm nhiều biến.pdfGiải tích các hàm nhiều biến.pdf
Giải tích các hàm nhiều biến.pdf
 
Đề tài: Bài toán phát hiện trạng thái mắt của mặt người trong ảnh
Đề tài: Bài toán phát hiện trạng thái mắt của mặt người trong ảnhĐề tài: Bài toán phát hiện trạng thái mắt của mặt người trong ảnh
Đề tài: Bài toán phát hiện trạng thái mắt của mặt người trong ảnh
 
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
 
Phân cụm đa mô hình và ứng dụng trong phân đoạn ảnh viễn thám
Phân cụm đa mô hình và ứng dụng trong phân đoạn ảnh viễn thámPhân cụm đa mô hình và ứng dụng trong phân đoạn ảnh viễn thám
Phân cụm đa mô hình và ứng dụng trong phân đoạn ảnh viễn thám
 
MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON
MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON
MẠNG NƠRON VÀ QUÁ TRÌNH HỌC CỦA MẠNG NƠRON
 
ĐỒ ÁN - Phát hiện biên theo phương pháp Sobel Canny.docx
ĐỒ ÁN - Phát hiện biên theo phương pháp Sobel  Canny.docxĐỒ ÁN - Phát hiện biên theo phương pháp Sobel  Canny.docx
ĐỒ ÁN - Phát hiện biên theo phương pháp Sobel Canny.docx
 
Bài 3: Tỉ lệ bản đồ
Bài 3: Tỉ lệ bản đồBài 3: Tỉ lệ bản đồ
Bài 3: Tỉ lệ bản đồ
 

SVM trong tìm kiếm ảnh dựa vào nội dung

  • 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
  • 4. 4
  • 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!
  • 7. 7
  • 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ự.
  • 26. 26 2.2.2 Tính khoảng cách giữa Vector (Euclid distance)
  • 27. 27 CHƯƠNG 3 ÁP DỤNG VÀ CÀI ĐẶT 3.1 Tải dữ liệu CBIR Dataset (https://www.kaggle.com/theaayushbajaj/cbir-dataset) 3.2 Kết quả thử nghiệm
  • 28. 28
  • 29. 29
  • 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