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ÀI THỰC TẬP CƠ SỞĐỀ TÀI THỰC TẬP CƠ SỞ N[.]
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2TRƯỜ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
Giảng viên hướng dẫn: ĐÀM THANH PHƯƠNG
Thái Nguyên, năm 2022
Trang 3MỤC LỤC
ĐỀ TÀI THỰC TẬP CƠ SỞ
ĐỀ TÀI THỰC TẬP CƠ SỞ 1
MỤC LỤC 3
LỜI MỞ ĐẦU 4
LỜI CẢM ƠN 5
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 7
1.1 Tổng quan về Support Vector Machine (SVM) 7
1.1.1 Giới thiệu về Support Vector Machine (SVM) 7
1.1.2 Sort margin Support Vector Machine (SVM lề mềm) 11
1.2 Tổng quan về python 13
1.2.1 Đặc điểm của python 14
1.2.2 Ứng dụng của python 16
1.2.3 Cách cài đặt python 18
CHƯƠNG 2 TRA CỨU ẢNH DỰA VÀO NỘI DUNG 19
2.1 Lý do và mục tiêu 19
2.2 Những thành phần tra cứu ảnh dựa vào nội dung 20
2.2.1 Trích chọn đặc trưng (Features Extraction,Vector hóa hình ảnh): 21
2.2.2 Tính khoảng cách giữa Vector (Euclid distance) 25
CHƯƠNG 3 ÁP DỤNG VÀ CÀI ĐẶT 26
3.1 Tải dữ liệu 26
3.2 Kết quả thử nghiệm 26
3.2.1 Một số kết quả thử nghiệm 29
KẾT LUẬN 30
TÀI LIỆU THAM KHẢO 31
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 32
Trang 6LỜ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 đượcbà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 trongsuố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ôngnghệ thông tin đã truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thờigian 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àytrong 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 mongnhận được những ý kiến đóng góp quý báu của quý Thầy Cô để kiến thức của emtrong 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 caokiến thức của mình
Em xin chân thành cảm ơn!
Trang 8CHƯƠNG 1: CƠ SỞ LÝ THUYẾT1.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 trongHọ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ướcvừ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 ế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
Trang 9Trong 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ặtphẳng có phương trình : w1x + w2y +w3z + b = 0 được xác định bởi :
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
Trang 101.1.1.2 Margin trong SVM (L trong SVM) ề 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 ứngvớ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ảngcá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 ập trình tìm nghiệm cho bài toán SVM ệm cho bài toán SVM
1.1.1.4 K t lu n v SVM ến tính ập trình tìm nghiệm cho bài toán SVM ề trong SVM)
Trang 11Là 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ânloạ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 trongquá 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 Kernelmớ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
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
Trang 121.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àngtố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ânbằ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ớisklearn, mức độ chấp nhận lỗi được coi như một tham số phạt (C) Hình dưới thể hiệnSVM 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
Trang 141.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ìnhcấ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ấtthuận tiện cho việc đọc hiểu code, đơn giản và rõ ràng được thiết kế bởi Guido vanRossum 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ênvà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ố 1trên bảng xếp hạng những ngôn ngữ lập trình phổ biến
Trang 15quả đố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ứcphi 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ệncho 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ệnhvới số lần gõ phím tối thiểu, như nhận định của chính Guido van Rossum trong mộtbà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ánhvớ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ìnhtrở 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ươngmạ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ươngtrình được viết trong Python mà còn có thể thay đổi mã nguồn của nó Python có mộtcộ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ếubạ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áchkhá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ã
Trang 16Giả 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ầncode 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ạntrở 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ầnkế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ấtnhiề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 codehay ứng dụng của mình
Hướng đối tượng
Trang 17Mọi thứ trong Python đều là hướng đối tượng Lập trình hướng đối tượng (OOP) giúpgiả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 chianhữ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ệcphâ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ệchọc R
Nhưng python là ngôn ngữ lập trình mục đích chung không chỉ được sử dụngcho 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ụngkinh 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àngtiế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ụngframework và CMS (Hệ thống quản trị nội dung) được tích hợp trong Python Vài nềntảng phổ biến để tạo web app là: Django, Flask, Pyramid, Plone, Django CMS Cáctrang như Mozilla, Reddit, Instagram và PBS đều được viết bằng ngôn ngữ này
Trang 18Pandas – 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ữngthư 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à deeplearning
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 doanhnghiệp Đã có nhiều ERP phổ biến như Odoo & Tryton tồn tại, tạo sức mạnh cho cácdoanh 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ý doanhnghiệ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ó đượcnhiều thư viện truy xuất 3D để phát triển trò chơi 3D
Trang 19Python được nhiều công ty, trường học sử dụng để dạy lập trình cho trẻ em và nhữngngườ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
Trang 20CHƯƠNG 2 TRA CỨU ẢNH DỰA VÀO NỘI DUNG2.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
Trang 212.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
Trang 222.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 (color): ưng màu sắc (color): ắ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