Tải bản đầy đủ (.pdf) (14 trang)

báo cáo bài tập lớn đề tài phân loại mẫu ảnh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.73 MB, 14 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQGHNKHOA ĐIỆN TỬ VIỄN THÔNG</b>

---BÁO CÁO BÀI TẬP LỚN

HỌC PHẦN: XỬ LÝ ẢNH

<b>ĐỀ TÀI: PHÂN LOẠI MẪU ẢNH</b>

<b>Mã SV: 20020711Họ và tên: Nguyễn Thanh SơnMã SV: 20020048Họ và tên: Đặng Trần Hồng HàMã SV: 20020207Họ và tên: Ngơ Thế NgọcMã SV: 20020066Họ và tên: Phạm Quang PhongMã SV: 20020434Họ và tên: Vũ Thanh LâmMã SV: 20020050Họ và tên: Vũ Đức Hiếu</b>

<i>Hà Nội – tháng 5, năm 2023.</i>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>1. Ý tưởng</b>

<b>- Các kỹ thuật phân loại mẫu ảnh được chia thành 3 loại chính: phân loại dựa</b>

trên so sánh nguyên mẫu, phân loại dựa trên công thức thống kê tối ưu, phân loại dựa trên mạng neural.

<b>1.1.Mẫu và lớp mẫu</b>

<b>- Trong phân loại mẫu hình ảnh, có 2 cách để sắp xếp mẫu chính là định </b>

lượng và cấu trúc. Các mẫu định lượng được sắp xếp dưới dạng các vecto mẫu. Các mẫu cấu trúc thường bao gồm các ký hiệu, được sắp xếp dưới dạng chuỗi, cây, hoặc biểu đồ.

<b>1.1.1. Vecto mẫu- Vecto mẫu được biểu diễn như sau:</b>

<b>- Với x là bộ miêu tả đặc trưng thứ i và n là tổng số bộ miêu tả.</b><small>i</small>

<b>- Vecto mẫu có thể tạo từ cường độ pixel ảnh bằng sắp xếp tuyến tính. </b>

Hình 1: Vecto mẫu tạo bằng việc sắp xếp tuyến tính.

<b>1.1.2. Mẫu cấu trúc</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>- Mẫu cấu trúc là mẫu chứa các mơ tả có cấu trúc của đối tượng, phù hợp khi </b>

ứng dụng với các đối tượng được biểu diễn bằng các cấu trúc dữ liệu như xử lý văn bản, các biểu tượng. Mẫu cấu trúc có thể được mơ tả bằng chuỗi ký tự hoặc cây.

<b>- Để biểu diễn chuỗi ký tự, các đặc trưng của đối tượng có thể được xây dựng</b>

theo một quy tắc chuỗi. Ví dụ:

Hình 2: Chuỗi ký hiệu được tạo ra từ cạnh của một cái bình.

<b>- Trong ví dụ trên, với đường bao của chiếc lọ ta chia ra thành các đường </b>

thẳng kết nối các đỉnh trên (được biểu diễn bằng β) và góc bên trong (θ), từ đó một chuỗi ký tự được sinh ra đại diện cho một phần đường viền theo chiều kim đồng hồ như trên ảnh.

<b>- Khi biểu diễn mẫu cấu trúc dưới dạng cây, các nốt của cây có thể là các </b>

vùng, các thực thể hoặc kết cấu bên trong của đối tượng, phù hợp với các đối tượng có mức độ miêu tả cao, có lược đồ sắp xếp thứ bậc như cấu trúc dạng cây. Ví dụ:

Hình 3: Biểu diễn dạng cây của 1 trung tâm thành phố chụp từ vệ tinh.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>- Ví dụ trên là một ảnh chụp vệ tinh một khu trung tâm sầm uất cùng với các </b>

khu dân cư xung quanh. Trong cây trên, có thể thấy biểu tượng $ là nốt gốc đại diện cho toàn bộ bức ảnh, ở độ sâu tiếp theo là 2 thành phần chính của bức ảnh là khu vực trung tâm (Downtown) và các khu dân cư (Residental). Sau đấy ở mỗi khu vực chính đó ta phân tích những đối tượng tiêu biểu để mở rộng độ sâu của cây và q trình trên có thể tiếp tục đến khi ta không thể phân cấp thêm được các đối tượng.

<b>1.2.Phân loại dựa trên nguyên mẫu</b>

<b>- Với phân loại dựa trên nguyên mẫu, mục tiêu của nó là làm cho các đặc </b>

trưng độc nhất và dễ phát hiện để việc phân loại trở nên đơn giản.

<b>1.2.1. Bộ phân loại dựa trên khoảng cách</b>

<b>- Bộ phân loại dựa trên khoảng cách thường dùng để phân loại các ảnh chưa </b>

biết vào các lớp khác nhau. Khoảng cách ở đây được định nghĩa là một giá trị sao cho khoảng cách tối thiểu giống với độ tương tự tối đa.

<b>- Nó sẽ tính khoảng cách từ một mẫu vecto với từng lớp nguyên mẫu. Từ đó </b>

gán mẫu này với lớp nguyên mẫu mà có khoảng cách nhỏ nhất.

<b>- Vecto của bộ phân loại này là trung bình vecto của các lớp mẫu:</b>

(Phương trình 1)

<b>- Với n là số lượng vecto mẫu để tính vecto trung bình thứ j, c là lớp mẫu </b><small>jj</small> thứ j, N là số lượng lớp. Ta sử dụng khoảng cách Euclidean để tính:<small>c</small>

(Phương trình 2)

<b>- Với D (x) là chuẩn Euclidean được tính bằng || a || = (a x a) . Bộ phân loại</b><small>j</small> <sup>T</sup> <sup>1/2</sup> sẽ gán nhãn cho x vào lớp c nếu D (x) < D (x). Trong trường hợp D (x) = <small>iiji</small> D<small>j</small>(x) thì ta tự xem xét.

<b>1.2.2. So sánh ảnh 2-D với toán tử tương quan</b>

<b>- Tương quan là toán tử mà ta áp dụng cửa sổ trượt (sliding window) và phép</b>

biến đổi tích vơ hướng (dot product) trên mỗi vùng ảnh. Từ đấy ta sẽ tìm sự tương quan của cửa sổ trên ảnh gốc.

<b>- Ta có sự tương quan giữa 1 kernel w với 1 ảnh f(x, y) được tính bởi cơng </b>

(Phương trình 3)

<b>- Phép tương quan sẽ đạt giá trị lớn nhất khi w và f có giá trị bằng nhau, hoặc</b>

gần bằng nhau. Điều đó có nghĩa là phương trình 3 tìm vị trí mà w giống

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

với 1 vùng của f. Tuy nhiên có nhược điểm là kết quả tính được sẽ nhạy cảm với sự thay đổi của biên độ.

<b>- Để chuẩn hóa hàm tương quan nhằm giảm bớt sự thay đổi của biên độ và </b>

các tham số khác, ta có hệ số tương quan:

(Phương trình 4)

<b>- Giá trị của γ đạt lớn nhất khi mà vùng chuẩn hóa w và vùng chuẩn hóa </b>

tương tự trong ảnh f là giống nhau. Giá trị của γ trong khoảng [-1, 1] và nó đạt nhỏ nhất khi 2 vùng w và f khác biệt nhau quá nhiều.

<b>- Quá trình tính tốn γ được miêu tả như sau:</b>

Hình 4: Cơ chế của so sánh mẫu.

<b>- Mẫu trong hình 3 có kích thước m x n và được biểu diễn với tọa độ tâm (x, </b>

y). Giá trị của hệ số tương quan tại điểm (x, y) được tính bằng phương trình 4. Tiếp đó dịch chuyển mẫu sang điểm liền kề và lặp lại quá trình. Giá trị của hệ số tương quan tính được bằng cách dịch chuyển mẫu tâm của mẫu w nên nó sẽ đi qua mọi pixel của ảnh f. Cuối cùng ta sẽ tìm ra giá trị γ lớn nhất thu được để tìm vùng giống nhau nhất.

<b>1.2.3. So sánh dựa trên đặc trưng SIFT</b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>- SIFT (Scale-invariant feature transform) là một feature descriptor được sử </b>

dụng trong computer vision và xử lý hình ảnh được dùng để nhận dạng đối tượng, matching image, hay áp dụng cho các bài tốn phân loại...

<b>- Với đầu vào là một hình ảnh qua biến đổi SIFT sẽ tạo ra các keypoint. Mỗi </b>

đối tượng trong hình ảnh sẽ cho ra rất nhiều các keypoint khác nhau, để ta phân biệt được các keypoint này với nhau sẽ thông qua một vector 128 chiều hay còn gọi là descriptor. Các descriptor này sẽ được dùng để nhận dạng đối tượng trong ảnh, hay dùng cho các bài toán phân loại.

<b>- Hình ảnh sau khi áp dụng biến đổi SIFT, ứng với mỗi điểm đặc trưng ta sẽ </b>

thu được: toạ độ điểm đặc trưng, tỉ lệ và hướng của điểm đặc trưng, descriptor. Các mũi tên trong hình dưới vẽ nhờ vào tỉ lệ và hướng.

<b>- Việc khớp ảnh mẫu với ảnh chính là việc khớp các keypoint trong 2 ảnh với</b>

nhau:

+ Áp dụng SIFT cho từng bức ảnh.

+ So sánh descriptor của keypoint trong ảnh này với descriptor của keypoint trong ảnh kia. Nếu 2 keypoint có descriptor gần giống nhau thì coi như 2 điểm trên 2 tấm ảnh cùng thuộc về một vật (hoặc vật giống nhau). + Dựa vào thương của tỉ lệ và hiệu của orientation của 2 keypoint, có thể biết thêm vật trong hình này to hơn vật trong hình kia bao nhiêu, vật trong hình này xoay bao nhiêu độ so với vật trong hình kia bao nhiêu.

<b>1.2.4. Phân loại dựa trên cấu trúc của nguyên mẫu</b>

So sánh chuỗi

<b>- Giả sử hai vùng ranh giới là a và b, được mã hóa thành các chuỗi ký tự, lần </b>

lượt được biểu diễn dưới dạng a<small>1</small>a<small>2</small>...a<small>n</small> và b<small>1</small>b<small>2</small>...b<small>m</small>. Gọi α là số ký tự khớp nhau giữa hai chuỗi, trong đó một ký tự được xem là khớp nhau ở vị trí thứ k nếu a<small>k</small>=b<small>k</small>. Số kí tự khơng khớp nhau là: β = max (|a|, |b|) – α.

Hình 5: Hai vùng ranh giới a và b.

<b>- Ta có |arg| là độ dài (số ký tự) của chuỗi trong tham số. Có thể chứng minh </b>

được rằng β = 0 nếu và chỉ nếu a và b giống nhau.

<b>- Phương trình tính tỉ lệ độ giống nhau là:</b>

(Phương trình 5)

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>- Nếu như 2 vùng giống nhau thì R sẽ đạt vô cùng dương và đạt 0 nếu không </b>

có ký tự nào trùng nhau.

<b>1.3.Bộ phân lớp Bayes</b>

<b>- Với phân loại dựa trên thống kê tối ưu thì ta sẽ lựa chọn các tham số để </b>

đem lại hiệu suất tốt. Ta quan taam đến các đặc trưng được sử dụng và thiết kế của bộ phân loại

<b>Định nghĩa</b>

<b>- Bộ phân lớp Bayes là một giải thuật thuộc lớp giải thuật thống kê, nó có thể</b>

dự đốn xác suất của một phần tử dữ liệu thuộc vào một lớp là bao nhiêu. Phân lớp Bayes được dựa trên định lý Bayes (định lý được đặt theo tên tác giả của nó là Thomas Bayes)

<b>Định lý Bayes-</b> Gọi A, B là hai biến cố

<b>- Công thức Bayes tổng quát:</b>

trong đó ta gọi A là một chứng cứ (evidence) (trong bài toán phân lớp A sẽ là một phần tử dữ liệu), B là một giả thiết nào để cho A thuộc về một lớp C nào đó. Trong bài tốn phân lớp chúng ta muốn xác định giá trị P(B/A) là xác suất để giả thiết B

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

là đúng với chứng cứ A thuộc vào lớp C với điều kiện ra đã biết các thông tin mô tả A. P(B|A) là một xác suất hậu nghiệm (posterior probability hay posteriori probability) của B với điều kiện A.

<b>Phân lớp Naive Bayes</b>

<b>- Bộ phân lớp Naive bayes hay bộ phân lớp Bayes (simple bayes classifier) </b>

hoạt động như sau:

Gọi D là tập dữ liệu huấn luyện, trong đó mỗi phần tử dữ liệu được<b>x</b>

biểu diễn bằng một vector chứa n giá trị thuộc tính A , A , ..., A = <small>12n</small> {x<small>1</small>, x , ..., x<small>2n</small>}.

Giả sử có m lớp C , C , ..., C . Cho một phần tử dữ liệu , bộ phân <small>12m</small> <b>x</b>

lớp sẽ gán nhãn cho là lớp có xác suất hậu nghiệm lớn nhất. Cụ <b>x</b>

thể, bộ phân lớp Bayes sẽ dự đoán thuộc vào lớp C nếu và chỉ nếu:<b>x</b> <small>i</small> P(C |<small>i</small><b>x) > P(Cj</b>|<b>x) (1<= i, j <=m, i ≠ j)</b>

giá trị này sẽ tính dựa trên định lý Bayes.

Để tìm xác suất lớn nhất, ta nhận thấy các giá trị P( ) là giống nhau <b>x</b>

với mọi lớp nên khơng cần tính. Do đó ta chỉ cần tìm giá trị lớn nhất của P(<b>x|Ci</b>) * P(C ). Chú ý rằng P(C ) được ước lượng bằng |D |/|D|, <small>iii</small> trong đó D là tập các phần tử dữ liệu thuộc lớp C . Nếu xác suất tiên <small>ii</small> nghiệm P(C ) cũng khơng xác định được thì ta coi chúng bằng nhau <small>i</small> P(C<small>1</small>) = P(C ) = ... = P(C ), khi đó ta chỉ cần tìm giá trị P(<small>2m</small> <b>x</b>|C<small>i</small>) lớn nhất.

Khi số lượng các thuộc tính mơ tả dữ liệu là lớn thì chi phí tính tồn P( |C<b>x</b> <small>i</small>) là rất lớn, dó đó có thể giảm độ phức tạp của thuật tốn Naive Bayes giả thiết các thuộc tính độc lập nhau. Khi đó ta có thể tính:

P( |C<b>x</b> <small>i</small>) = P(x<small>1</small>|C<small>i</small>) ... P(x<small>n</small>|C<small>i</small>)

<b>Gaussian Naive Bayes</b>

Mơ hình này được sử dụng chủ yếu trong loại dữ liệu mà các thành phần là các biến liên tục.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>2. Cài đặta. Tập dữ liệu</b>

<b>- Dữ liệu gồm 1854 ảnh về 5 lớp là: xe buýt (bus), xe con (car), xe máy </b>

(moto), người đi bộ (pedestrian), xe tải (truck).

Hình 6: Các lớp dữ liệu sử dụng.

<b>- Phân tích dữ liệu ta có số lượng các lớp như sau:</b>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Hình 7: Phân tích các lớp dữ liệu.

<b>b. SIFT (Scale-Invariant Feature Transform)</b>

<b>- Thuật toán SIFT yêu cầu một tập hợp các input keypoint. Sau đó, đối với </b>

mỗi input keypoint, SIFT lấy vùng 16 x 16 pixel bao quanh pixel trung tâm của vùng keypoint.

Hình 8: Tách keypoint.

<b>- Sau đó chia vùng 16x16 ra thành 16 cửa sổ 4x4. Đối với mỗi ô trong số 16 </b>

cửa sổ, chúng ta tính tốn độ lớn và hướng của gradient.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Hình 9: Tách thành các cửa sổ 4x4.

Hình 10: Chuyển sang ảnh xám.

<b>- Với độ lớn và hướng của gradient, tiếp theo chúng tôi sẽ xây dựng 8-bin </b>

histogram cho mỗi cửa sổ 4 x 4 pixel.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Hình 11: Biểu đồ mức xám.

<b>- Tuy nhiên, chúng ta sẽ không sử dụng cường độ thơ của gradient. Thay vào </b>

đó, chúng ta sẽ sử dụng trọng số Gaussian. Pixel càng xa trung tâm keypoint, nó càng ít đóng góp vào biểu đồ tổng thể. Cuối cùng, bước thứ ba của SIFT là thu thập tất cả 16 8-bin oriented histogram này và ghép chúng lại với nhau

Hình 12: Ghép các 8-bin oriented histogram.

<b>- Vectơ đặc trưng của chúng ta sẽ có số chiều như sau: 16 x 8 = 128-chiều. </b>

Khi chúng ta đã thu thập các biểu đồ được nối, chúng ta kết thúc bằng việc chuẩn hóa L2 cho vector đặc trưng.

Hình 13: Mơ tả việc tạo vecto đặc trưng.

<b>c. Kỹ thuật Túi đựng từ (Bag of Words - BoW)</b>

<b>- Mơ hình túi từ (bag-of-words) là một biểu diễn đơn giản hóa được sử dụng </b>

trong xử lý ngôn ngữ tự nhiên và truy vấn thông tin (IR). Trong mơ hình này, một văn bản (chẳng hạn như một câu hoặc một tài liệu) được thể hiện dưới dạng túi (multiset) chứa các từ của nó, khơng quan tâm đến ngữ pháp và thậm chí trật tự từ nhưng vẫn giữ tính đa dạng. Mơ hình túi từ cũng đã được sử dụng cho thị giác máy tính.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>- Đối với việc xử lý ảnh, ta sẽ sử dụng BoW như sau: Ta xem xét một cửa sổ </b>

nhỏ trong ảnh (trong Computer Vision, cửa sổ này được gọi là patch) là một hình chữ nhật chứa nhiều điểm ảnh gần nhau. Cửa sổ này đủ lớn để có thể chứa được các bộ phận có thể mơ tả được vật thể trong ảnh. Tương tự thế, với ảnh là ơ tơ, các patch thu được có thể là bánh xe, khung xe, cửa xe, … như hàng trên trong hình dưới đây.

Hình 8: Bag of Words cho ảnh ô tô.

<b>- Đến đây chúng ta sẽ sử dụng K-means clustering. Ta sẽ K-means clustering </b>

trên toàn bộ số patches thu được. Ở đây ta cho codebook gồm 100 từ. Sau khi thực hiện K-means clustering, ta thu được 100 clusters và 100 centers tương ứng. Mỗi centers này được coi là một words, và tất cả những điểm rơi vào cùng một cluster được coi là cùng một bag. Với ảnh trong tập test data, ta cũng lấy các patches rồi xem chúng rơi vào những bags nào. Từ đó suy ra vector đặc trưng cho mỗi bức ảnh.

<b>- Lúc này mỗi bức ảnh sẽ được mơ tả bởi một vector có số chiều 100, tức là </b>

mỗi điểm dữ liệu bây giờ đã có số chiều bằng nhau, mặc dù ảnh thơ đầu vào có thể có kích thước khác nhau.

<b>d. SVM (Support Vector Machine)</b>

<b>- SVM là một thuật tốn học có giám sát, nó có thể sử dụng cho cả việc phân </b>

loại hoặc đệ quy. Tuy nhiên nó được sử dụng chủ yếu cho việc phân loại. Trong thuật toán này, chúng ta vẽ đồi thị dữ liệu là các điểm trong n chiều (ở đây n là số lượng các tính năng bạn có) với giá trị của mỗi tính năng sẽ là một phần liên kết. Sau đó chúng ta thực hiện tìm "đường bay"

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

(hyper-plane) phân chia các lớp. Hyper-plane nó chỉ hiểu đơn giản là 1 đường thẳng có thể phân chia các lớp ra thành hai phần riêng biệt.

<b>- Support Vectors hiểu một cách đơn giản là các đối tượng trên đồ thị tọa độ </b>

quan sát, Support Vector Machine là một biên giới để chia hai lớp tốt nhất.

<b>e. Huấn luyện mơ hình</b>

<b>- Khi làm việc với dữ liệu được gẵn nhãn, 1 tập dữ liệu nhất định thường </b>

được chia thành 3 tập hợp con: tập huấn luyện (training), tập xác thực (validation), tập kiểm tra (test), (1 tập chia điển hình là 50% huấn luyện, 25% mỗi loại xác thực và kiểm tra).

<b>- Huấn luyện là quá trình tạo ra các tham số phân loại. Bộ phân loại sẽ gán </b>

nhãn cho từng mẫu, mục tiêu là điều chỉnh tham số nếu bộ phân loại xác định sai lớp của mẫu. Khi kết thúc huấn luyện, ta sẽ sử dụng tập xác thực để so sánh hiệu suất. Khi lựa chọn được mơ hình sử dụng, ta sẽ dùng tập kiểm tra để kiểm tra những dữ liệu chưa được huấn luyện. Nếu mơ hình tốt thì kết quả của huấn luyện/xác thực sẽ gần với hiệu suất trong kiểm tra. Nếu

<b>-Bảng phân chia công việc và đánh giá của nhóm trường</b>

</div>

×