Luận văn Nghiên cứu về mạng neural convolutional, áp dụng vào bài toán nhận dạng đối tượng trong lĩnh vực thị giác máy tính

LỜI CAM ĐOAN .i

LỜI CẢM ƠN. ii

MỤC LỤC . iii

DANH MỤC HÌNH VẼ.vi

DANH MỤC BẢNG BIỂU.x

DANH MỤC VIẾT TẮT.xi

LỜI MỞ ĐẦU.1

Lý do chọn đề tài.1

Cơ sở khoa học và thực tiễn của đề tài.1

Mục tiêu của luận văn.2

Cấu trúc luận văn.3

CHƯƠNG 1. .4

TỔNG QUAN VỀ MẠNG NƠ RON .4

VÀ GIỚI THIỆU VỀ MẠNG NƠ RON TÍCH CHẬP.4

1.1. Nơ ron nhân tạo .4

1.1.1 Lịch sử của nơ ron nhân tạo.4

1.1.2 Cấu tạo và quá trình xử lý của một nơ ron sinh học.5

1.1.3 Cấu tạo và quá trình xử lý của một nơ ron nhân tạo .5

1.1.4. Các mô hình hàm kích hoạt của mạng nơ ron nhân tạo .8

1.2 Mạng nơ ron nhân tạo .11

1.2.1 Giới thiệu mạng nơ ron nhân tạo.11

1.2.2 Một số kiểu mạng nơ ron .11

1.2.3 Mạng nơ ron lan truyền ngược.13

1.3 Mạng nơ ron tích chập .18

1.3.1 Khái niệm về mạng nơ ron tích chập.18

pdf86 trang | Chia sẻ: honganh20 | Ngày: 15/03/2022 | Lượt xem: 348 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu về mạng neural convolutional, áp dụng vào bài toán nhận dạng đối tượng trong lĩnh vực thị giác máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i đầu vào x. Để đạo hàm dễ dàng, ta nhân tổng của (4) với một hằng số 1/2. Để tìm ra mức tối thiểu. Trước tiên, ta tính toán các đạo hàm riêng của hàm chi phí đối với bất kỳ trọng số nào, với công thức sau: Có hai trường hợp: Nút là một nút đầu ra hoặc trong một tầng ẩn. Trong trường hợp ở tầng đầu ra, trước tiên chúng ta tính đạo hàm chênh lệch: Phương trình cuối cùng dựa trên quy tắc chuỗi. Nút là nút duy nhất có trọng số nên các giá trị khác sẽ bằng 0. Và là đầu ra của hàm kích hoạt (hàm Sigmoid). Do đó, phương trình mới thu được là: Trong đó L kx sự kết hợp tuyến tính của tất cả các đầu vào của nút j trong tầng L với các trọng số. Hàm sigmoid là đạo hàm có dạng sau: 15 Do đó, hàm trên trở thành: Vì 1 1 L L ik i L k i L x yW      . Vì vậy, (9) trở thành: (10) Vì liên quan đến và không liên quan khi khác . Do đó, có mối quan hệ giữa nút của tầng và nút của tầng . Ta có công thức: để biểu diễn nút của tầng . Do vậy, phương trình mới thu được là: Ta xem xét các nút của tầng ẩn . Ở lớp ngay trước lớp đầu ra. Áp dụng đạo hàm riêng một phần trên trọng số cho hàm chi phí. Các trọng số cho các nút của tầng ẩn này: 16 Vì có một tổng trên tầng. Do thay đổi của các trọng số cho các nút của các tầng ẩn sẽ ảnh hưởng đến đầu ra mạng nơ ron. Do đó, áp dụng quy tắc chuỗi (chain rule): Sau đó, đạo hàm theo quy tắc chuỗi: Dòng thứ 2 của (14) dựa vào đầu vào của là sự kết hợp tuyến tính giữa các đầu ra của nút của lớp trước với trọng số. Vì đạo hàm không liên quan đến nút của lớp L. Do đó, ta đơn giản hóa đạo hàm dựa trên quy tắc chuỗi: Chuyển thành . Do đó phương trình trở thành: Ta xét 2 trường hợp: 17 Đối với tầng đầu ra nút k: , trong đó: Đối với tầng ẩn nút j: , trong đó: Áp dụng quy trình tương tự. Ví dụ, Tính đạo hàm riêng cho độ lệch của nút k trong lớp cuối cùng và thu được: Bởi vì nên . Phương trình có thể được cập nhật thành: Công thức trên áp dụng với bất kể đầu ra nào. Vì vậy, độ dốc của hàm chi phí so với độ lệch là: Rút ra từ công thức trên, giải thuật loan truyền ngược sẽ được mô tả như sau: Bước 1: Chạy mạng tính toán với dữ liệu đầu vào để có được đầu ra mạng Bước 2: Đối với mỗi nút đầu ra, ta thực hiện phép tính: Bước 3: Đối với mỗi nút ở tầng ẩn, ta thực hiện phép tính: 18 Bước 4: Cập nhật các trọng số và thiên lệch như sau: Giả thiết: Áp dụng: Tham số trong thuật toán được gọi là tốc độ học tập. Thuật toán này lặp lại cho đến khi đạt sai số tối thiểu hoặc dưới ngưỡng chấp nhận được để hoàn thành quá trình huấn luyện. 1.3 Mạng nơ ron tích chập 1.3.1 Khái niệm về mạng nơ ron tích chập Mạng nơ ron tích chập là một trong những mạng truyền thẳng đặc biệt. Mạng nơ ron tích chập là một mô hình học sâu phổ biến và tiên tiến nhất hiện nay. Hầu hết các hệ thống nhận diện và xử lý ảnh hiện nay đều sử dụng mạng nơ ron tích chập vì tốc độ xử lý nhanh và độ chính xác cao. Trong mạng nơ ron truyền thống, các tầng được coi là một chiều, thì trong mạng nơ ron tích chập, các tầng được coi là 3 chiều, gồm: chiều cao, chiều rộng và chiều sâu (Hình 1.11). Mạng nơ ron tích chập có hai khái niệm quan trọng: kết nối cục bộ và chia sẻ tham số. Những khái niệm này góp phần giảm số lượng trọng số cần được huấn luyện, do đó tăng nhanh được tốc độ tính toán. Hình 1.16: Các tầng (layer) trong CNN là 3 chiều 19 Hình 1.17: Hình minh họa một ví dụ sử dụng CNN để phân lớp đồ vật [20] 1.3.2 Mô hình mạng nơ ron tích chập Có ba tầng chính để xây dựng kiến trúc cho một mạng nơ ron tích chập: 1. Tầng tích chập; 2. Tầng gộp (pooling layer); 3. Tầng được kết nối đầy đủ (fully-connected). Tầng kết nối đầy đủ giống như các mạng nơ ron thông thường, và tầng chập thực hiện tích chập nhiều lần trên tầng trước. Tầng gộp có thể làm giảm kích thước mẫu trên từng khối 2x2 của tầng trước đó. Ở các mạng nơ ron tích chập, kiến trúc mạng thường chồng ba tầng này để xây dựng kiến trúc đầy đủ. Ví dụ minh họa về một kiến trúc mạng nơ ron tích chập đầy đủ: Hình 1.18: Ví dụ minh họa về cấu trúc CNNs – LeNet – 5[19] 20 1.3.2 Xây dựng mạng nơ ron tích chập 1.3.2.1 Mạng được kết nối cục bộ Trong xử lý hình ảnh, thông tin của hình ảnh là các điểm ảnh (pixel). Nếu sử dụng mạng được kết nối đầy đủ, chúng ta sẽ có rất nhiều tham số. Ví dụ, một hình ảnh RGB có kích thước 512x512 pixel sẽ có 786432 (= 512 x 512 x 3) tham số đầu vào. Vì vậy, nếu chúng ta sử dụng kiến trúc mạng nơ ron trong hình sau: Hình 1.19: Hình ảnh một mạng nơ ron được kết nối đầy đủ Hình trên cho thấy nếu áp dụng mạng nơ ron được kết nối đầy đủ, toàn bộ kiến trúc mạng sẽ cần tính toán hơn 3 triệu nơ ron. Số lượng lớn các nơ ron làm cho toàn bộ quá trình học rất chậm và dẫn đến quá tải so với khả năng tính toán của máy tính hiện tại. Qua một vài nghiên cứu về xử lý ảnh, các nhà nghiên cứu nhận thấy rằng các tính năng trong một hình ảnh thường là cục bộ, và các nhà nghiên cứu chú ý đến các tính năng cấp thấp đầu tiên khi xử lý ảnh. Vì vậy, kiến trúc mạng có thể chuyển mạng được kết nối đầy đủ sang mạng được kết nối cục bộ, nhằm làm giảm độ phức tạp của tính toán. Đây là một trong những ý tưởng chính trong CNN. Chúng ta có thể thấy rõ hơn qua hình sau: Hình 1.20: Tích chập một ma trận nhỏ để tạo ra dữ liệu đầu vào cho một nơ ron tầng ẩn Giống như xử lý hình ảnh thông thường, chúng ta có thể kết nối cục bộ một khối vuông ma trận với nơ ron. Kích thước khối thông thường là 3x3, 5x5, hoặc 7x7. Ý nghĩa vật lý của khối giống như một cửa sổ trượt (cửa sổ trượt là một trong những phương pháp 21 xử lý ảnh). Bằng cách đó, số lượng tham số có thể giảm xuống rất nhỏ nhưng không gây ra giảm hoặc mất thông tin, vì hình ảnh thông thường thường có tính lặp trong không gian. Để trích xuất nhiều thông tin hơn, các mạng nơ ron kết nối khối cùng với một nơ ron khác. Độ sâu trong các tầng là số lần chúng ta kết nối một khu vực với các nơ ron khác nhau. Ví dụ, mạng kết nối cùng một khu vực với 5 nơ ron khác nhau. Vì vậy, độ sâu là năm trong tầng mới. Chúng ta có thể thấy rõ hơn qua hình sau: Hình 1.21: Ví dụ về lớp tích chập Trong thực tế, có thể kết nối tất cả thông tin độ sâu (ví dụ: kênh 3 RGB) với nơ ron tiếp theo vì kết nối là cục bộ trong không gian và có chiều sâu đầy đủ. Tuy nhiên ở ví dụ này chỉ kết nối thông tin cục bộ về chiều cao và chiều rộng. Vì vậy, có thể có các tham số trong hình trên cho nơ ron sau lớp màu xanh nếu chúng ta sử dụng cửa sổ . Biến thứ nhất và thứ hai là chiều cao và chiều rộng của kích thước cửa sổ và biến thứ ba là độ sâu của lớp. Ví dụ này di chuyển cửa sổ bên trong hình ảnh và làm cho tầng tiếp theo cũng có chiều cao và chiều rộng, và là một hai chiều. Ví dụ: nếu chúng ta di chuyển cửa sổ 1 pixel mỗi lần, gọi là bước nhảy là 1, trong một hình ảnh và kích thước cửa sổ là sẽ có các nơ ron ở tầng tiếp theo. Có thể thấy rằng, kích thước đã giảm từ 32 xuống 28. Vì vậy, để bảo toàn kích thước, chúng ta thêm phần trống vào đường viền. Quay lại ví dụ trên, nếu chúng ta đệm với 2 pixel, có các nơ ron ở lớp tiếp theo để giữ kích thước chiều cao và chiều rộng. Như ví dụ trên, nếu chúng ta sử dụng kích thước cửa sổ w, chúng ta sẽ có 1 vùng được tích chập với kích cỡ của cửa sổ mới là pixel. Thông tin đường viền sẽ không ảnh hưởng nhiều vì những giá trị đó chỉ được sử dụng một lần. 22 Phần kế tiếp sẽ chi tiết hơn về bước nhảy của cửa sổ trượt, tức khoảng cách thay đổi của cửa sổ mỗi lần. Ví dụ: giả sử bước nhảy là 2 và cửa sổ trượt bao phủ vùng Sau đó, cửa sổ thứ hai bao phủ vùng và cửa sổ thứ 3 bao phủ vùng Ví dụ, nếu chúng ta sử dụng bước nhảy 1 và kích thước cửa sổ trong hình ảnh và không sử dụng bù viền (pad-zero), thì chúng ta sẽ có các nơ ron ở lớp tiếp theo. Nếu chúng ta thay đổi bước nhảy 1 thành bước nhảy 2 và những tham số khác vẫn giữ nguyên, thì chúng ta sẽ có có những nơ ron ở lớp tiếp theo. Chúng ta có thể kết luận rằng nếu chúng ta sử dụng bước nhảy s, kích thước cửa sổ trong ảnh , thì sẽ có các nơ ron ở lớp tiếp theo. Khi chúng ta sử dụng bước nhảy 3 và những tham số khác vẫn giữ nguyên thì chúng ta sẽ nhận được Vì kết quả không phải là số nguyên, nên bước nhảy 3 không thể dùng vì chúng ta không thể có được một khối hoàn chỉnh trong một mạng nơ ron. 1.3.2.2 Chia sẻ tham số Trong ví dụ minh họa của mục 1.3.2.1, ta sẽ có số lượng là nơ ron ở tầng tiếp theo có bước nhảy 1, kích thước cửa sổ 5 x 5 và không có đệm, với độ sâu là 5. Mỗi nơ ron sẽ có tham số. Vì vậy, trong tầng tiếp theo sẽ có tham số. Ở đây, chúng ta có thể chia sẻ các tham số theo từng độ sâu, do đó nơ ron ở mỗi tầng ẩn sẽ sử dụng tham số giống nhau là , và tổng tham số sử dụng cho mỗi tầng là . Điều này làm số lượng tham số giảm một cách đáng kể. Tương tự, các nơ ron ở mỗi độ sâu trong tầng tiếp theo sẽ áp dụng tích chập cho tầng trước đó. Và quá trình học tập giống như học lõi (core) tích chập. Đây là lý do mà các mạng nơ ron này được gọi là mạng nơ ron tích chập. 1.3.2.3 Hàm kích hoạt Trong mô hình nơ ron truyền thống, các mạng thường sử dụng hàm sigmoid cho hàm kích hoạt. Tuy nhiên Krizhevsky [21] đã thử với hàm kích hoạt RELU. Sau khi so 23 sánh hiệu quả của hàm kích hoạt RELU và hàm kích hoạt sigmoid trong CNNs. Họ thấy rằng mô hình với RELU cần ít thời gian lặp hơn trong khi đạt tỷ lệ lỗi khi huấn luyện tương đương. Chúng ta có thể thấy kết quả trong hình sau: Hình 1.22: So sánh giữa ReLU và Sigmoid. Như hình trên, đường liền nét là mô hình sử dụng RELU và đường đứt nét là sử dụng hàm Sigmoid. Có thể dễ dàng thấy rằng, RELU cần ít vòng lặp hơn để đạt tỉ lệ lỗi chấp nhận được. Do đó, ngày nay đa số các mô hình CNN gần đây sử dụng RELU để làm hàm kích hoạt. 1.3.2.4. Tầng gộp Tầng gộp sẽ giảm kích cỡ của hình ảnh ngay sau khi thực hiện tích chập, giúp giữ lại các đặc điểm, tính chất nổi bật nhất của ảnh. Điều này cho phép giảm mức độ tính toán khi hình ảnh có kích thước quá lớn, đồng thời không làm mất đi các đặc điểm quan trọng của ảnh. Tuy đã sử dụng các mạng được kết nối cục bộ và chia sẻ tham số, tuy nhiên số lượng tham số trong mang nơ ron vẫn là quá lớn. So với một tập dữ liệu tương đối nhỏ, nó có thể gây ra tình trạng quá khớp (overfitting). Vì vậy, mạng nơ ron nhân tạo thường chèn các tầng gộp vào mạng. Tầng gộp xử lý để giảm dần số lượng tham số nhằm cải thiện thời gian tính toán trong mạng nơ ron. Tầng gộp áp dụng lấy mẫu xuống cho tầng trước bằng cách sử dụng hàm max. Tầng gộp hoạt động độc lập trên mỗi tầng trước đó. Ngoài ra, có 24 thể đặt lượng pixel khi chúng ta di chuyển cửa sổ trượt hoặc bước nhảy, như làm với tầng tích chập. Ví dụ, trong hình sau: Hình 1.23: Ví dụ minh họa đơn giản về tầng gộp Ở ví dụ trên, kích thước cửa sổ trượt là và bước nhảy mỗi lần trượt là 2. Tại mỗi cửa sổ, hàm max sẽ lấy giá trị tối đa để đại diện cho giá trị của tầng tiếp theo. Có hai loại tầng gộp: Nếu kích thước cửa sổ trượt bằng bước nhảy, đó là gộp chung (traditional pooling). Nếu kích thước cửa sổ trượt lớn hơn bước nhảy, đó là gộp nhóm (overlapping pooling). Trong thực tế, các mạng nơ ron thường sử dụng kích thước cửa sổ cùng kích thước bước nhảy là 2 trong gộp chung và sử dụng kích thước cửa sổ cùng kích thước bước nhảy là 2 trong gộp nhóm, vì nếu tăng kích cỡ cửa sổ sẽ rất dễ làm mất các đặc tính của dữ liệu. Ngoài việc gộp sử dụng hàm max, người ta có thể sử dụng các hàm khác. Ví dụ người ta có thể sử dụng hàm tính trung bình của cửa sổ trượt để tính toán giá trị cho tầng tiếp theo, được gọi là gộp trung bình. 1.3.2.5. Tầng được kết nối đầy đủ Tầng thứ ba là tầng được kết nối đầy đủ. Tầng này giống như mạng nơ ron truyền thống: các nơ ron ở tầng trước sẽ kết nối với một nơ ron ở tầng tiếp theo và tầng cuối cùng là đầu ra. Để có thể đưa hình ảnh từ những tầng trước vào, ta phải dàn phẳng dữ liệu ra thành một véc tơ nhiều chiều. Cuối cùng là sử dụng hàm softmax để thực hiện phân loại đối tượng 25 Hình 1.24: Một ví dụ của lớp được kết nối đầy đủ 1.3.2.6 Mô hình quá khớp Cấu trúc của một mạng CNN rất lớn, trong mạng có rất nhiều nơ ron, kết nối, cũng như có rất nhiều trọng số cần thiết để huấn luyện. Nhưng lượng dữ liệu huấn luyện thường không đủ để huấn luyện hoàn thiện cho một mạng nơ ron lớn. Nó có thể gây ra một số vấn đề về quá khớp, khiến cho khi huấn luyện có kết quả rất cao, nhưng áp dụng thực tế gây ra sai số lớn. Có một số kỹ thuật để cải thiện điều này. Hình 1.25: Ví dụ về trường hợp quá khớp (bên trái) và trường hợp chuẩn (bên phải) Một trong những phương pháp đó là là giảm trọng số trong lúc huấn luyện. Dropout là một trong những kỹ thuật nổi tiếng và khá phổ biển để khắc phục vấn đề này. Dropout đặt đầu ra của mỗi nơ ron ẩn thành 0 với xác suất 0,5. Vì vậy, các nơ ron này sẽ không đóng góp vào lan truyền tiến, do đó và sẽ không tham gia vào lan truyền ngược. Thông thường, đối với các đầu vào khác nhau, mạng nơ ron xử lý dropout theo một cấu trúc khác nhau. Một cách khác để cải thiện việc việc quá khớp là tăng lượng dữ liệu. Chúng ta có thể phản chiếu hình ảnh, lộn ngược hình ảnh, lấy mẫu hình ảnh, v.v. Những cách này sẽ tăng số lượng dữ liệu huấn luyện. Vì vậy, nó có khả năng ngăn chặn quá khớp. Với ví dụ thực tế, trong một vài dự án, các bức ảnh được sử dụng để huấn luyện đã được xử lý thêm 26 bước xoay, với mỗi lần từ 15 đến 20 độ cũng như áp dụng thêm phương pháp phản chiếu bức ảnh. Kết quả, hệ thống AI đã phát hiện cải thiện đáng kể việc nhận diện. 1.3.2.7. Một số mạng tích chập nổi tiếng Có một số kiến trúc mạng nơ ron tích chập nổi tiếng. Một số thử nghiệm cho thấy chúng có hiệu suất tốt hơn. Vì vậy, đôi khi nhiều người sử dụng mạng được thiết kế sẵn thay vì tự thiết kế mạng. Ở các phần sau luận văn sẽ giới thiệu một vài mạng tích chập nổi tiếng và thông dụng hiện nay. AlexNet Hình 1.26: Cấu trúc của AlexNet Alex đã phát triển mạng này vào năm 2012. Cho tới thời điểm hiện tại, AlexNet vẫn còn đang được sử dụng phổ biến và rộng rãi. Mạng AlexNet có năm lớp chập và ba lớp kết nối đầy đủ. Cấu trúc trong AlexNet được chia thành hai khối. Nguyên nhân vì tác giả đã sử dụng hai GPU để huấn luyện dữ liệu song song. Mạng này được sử dụng trong phân loại đối tượng quy mô lớn. Lớp đầu ra có một nghìn nơ ron. Đó là bởi vì kiến trúc ban đầu được thiết kế để phân loại một nghìn nhãn. Thông thường, những người áp dụng kiến trúc mạng nơ ron AlexNet sẽ thay thế lớp cuối cùng, phụ thuộc vào mục đích của họ. Tác giả của mạng này đã làm nhiều thử nghiệm để có thể ra được mô hình này có kết quả tốt nhất. Vì vậy, hiệu suất của cấu trúc này rất ổn định và mạng này được sử dụng rộng rãi trong nhiều ứng dụng. VGGNet VGGNet [10] được phát triển vào năm 2014 và đã giành chiến thắng trong cuộc thi ILSVRC-2014. Mạng này mạnh hơn mạng AlexNet nhưng rất sâu. Mạng này có 16 đến 19 tầng (Hình 1.21). Mạng này đã được thiết kế với 5 cấu trúc. Sau một số thí nghiệm, D và E là cấu trúc tốt nhất. Hiệu suất của E tốt hơn một chút so với B. Nhưng các tham số trong E lớn hơn D. Vì vậy, người sử dụng có thể chọn một trong số cấu trúc mạng dựa trên những gì họ cần. Đặc điểm của VGGNet là việc áp dụng nhiều lớp chập với kích 27 thước cửa sổ nhỏ thay vì lớp chập với kích thước cửa sổ lớn, sau đó là lớp gộp. Nó làm cho mạng linh hoạt hơn. Hình 1.27: Cấu trúc của VGGNet 1.4 Kết luận Mạng nơ ron nhân tạo là một chuỗi các thuật toán được sử dụng để tìm ra mối quan hệ của một tập dữ liệu thông qua cơ chế vận hành của bộ não sinh học. Mạng nơ ron nhân tạo thường được huấn luyện qua một tập dữ liệu chuẩn cho trước, từ đó có thể đúc rút được kiến thức từ tập dữ liệu huấn luyện, và áp dụng với các tập dữ liệu khác với độ chính xác cao. Các phương pháp sử dụng để huấn luyện mạng nơ ron nhân tạo ngày càng tối ưu hơn về mặt tính toán và phục vụ cho nhiều mục đích khác nhau. Hiện nay, kiến trúc mạng nơ ron ngày càng được hoàn thiện cho nhiều nhiệm vụ, trong đó mạng nơ ron tích chập được chú ý rất nhiều vì tính hiệu quả trong thị giác máy tính. Mạng nơ ron tích chập với các cải tiến góp phần giảm thời gian tính toán và tăng độ chính xác hứa hẹn sẽ là một trong những phương pháp được áp dụng rất nhiều vào thực tế trong tương lai. 28 CHƯƠNG 2. BÀI TOÁN NHẬN DẠNG BẰNG MẠNG NƠ RON TÍCH CHẬP 2.1 Khái niệm về nhận dạng Nhận dạng là một ngành thuộc lĩnh vực trí tuệ nhân tạo. Nhận dạng mẫu là khả năng phát hiện sự sắp xếp các đặc tính hoặc dữ liệu mang lại thông tin về một hệ thống hoặc tập dữ liệu nhất định. Nhận dạng mẫu chia thành nhiều lĩnh vực trong công nghệ thông tin, bao gồm phân tích dữ liệu lớn, nhận dạng sinh trắc học, bảo mật và trí tuệ nhân tạo. Nhận dạng đối tượng trong hình ảnh là một nhánh của nhận dạng mẫu. Nhận dạng đối tượng trong hình ảnh thể hiện qua các công nghệ máy tính có thể nhận ra người, động vật, vật thể hoặc các đối tượng mục tiêu khác thông qua việc sử dụng các thuật toán và khái niệm học máy. 2.1.1 Nhận dạng đối tượng Một số khái niệm liên quan:  Nhận dạng đối tượng (object recognition) là một thuật ngữ chung để mô tả một tập hợp các cách xử lý trong thị giác máy tính có liên quan đến việc xác định các đối tượng trong ảnh kỹ thuật số.  Phân loại hình ảnh (image classification) liên quan đến việc dự đoán, phân loại các lớp thông tin của một đối tượng trong một hình ảnh.  Khoanh vùng đối tượng (object localization) là việc xác định vị trí của một hoặc nhiều đối tượng trong một hình ảnh bằng hình chữ nhật xung quanh phạm vi của đối tượng bằng hộp chứa (bounding box).  Phát hiện đối tượng (object detection) kết hợp cả hai nhiệm vụ nhận dạng đối tượng và khoanh vùng đối tượng. Phát hiện đối tượng là việc khoanh vùng và phân loại một hoặc nhiều đối tượng khác nhau trong một hình ảnh. Nhận dạng đối tượng khác với phát hiện đối tượng ở chỗ nhận dạng đối tượng mang ý nghĩa rộng hơn, bao gồm cả việc phân loại hình ảnh (đòi hỏi thuật toán xác định các lớp của đối tượng xuất hiện trong hình ảnh), cũng như phát hiện đối tượng (đòi hỏi thuật toán khoanh vùng, định vị được tất cả các đối tượng có trong hình ảnh) 29 Hình 2.1: Sự khác biệt giữa nhận dạng đối tượng và phát hiện đối tượng 2.1.2 Nhận dạng khuôn mặt Nhận dạng khuôn mặt là khả năng nhận diện, lưu trữ,so sánh và phân tích các mẫu dựa trên đường nét khuôn mặt để nhận dạng người từ hình ảnh hoặc video. Hệ thống thường sử dụng các công nghệ để thực hiện nhận dạng khuôn mặt như sử dụng sinh trắc học để ánh xạ các đặc điểm khuôn mặt từ ảnh hoặc video. Hệ thống so sánh thông tin này với một cơ sở dữ liệu đã lưu trữ về các khuôn mặt để tìm ra một kết quả khớp chính xác Nhận dạng khuôn mặt ngày càng được quan tâm trong nhiều lĩnh vực, như Trung Quốc có hệ thống Skynet để chấm điểm công dân, hay nhiều chuỗi cửa hàng lớn cũng sử dụng nhận dạng khuôn mặt khách hàng thân thiết để phân tích thói quen tiêu dùng. Trên thực tế, công nghệ nhận dạng khuôn mặt đã nhận được sự chú ý đáng kể vì nó có tiềm năng cho một loạt các ứng dụng liên quan đến thực thi pháp luật cũng như các doanh nghiệp khác. Hình 2.2: Một minh họa về một số bản đồ đặc trưng của các lớp DC12, conv22, conv32, conv42 và conv52 được đào tạo cho nhiệm vụ nhận dạng khuôn mặt. 30 2.2. Lịch sử và phát triển Nhận dạng khuôn mặt tự động là một khái niệm tương đối mới, được phát triển vào những năm 1960. Hệ thống bán tự động đầu tiên cho nhận dạng khuôn mặt cần quản trị viên phải xác định được vị trí các điểm cần được đánh dấu (như mắt, tai, mũi và miệng) trên các bức ảnh, sau đó tính toán khoảng cách và tỷ lệ đến một điểm tham chiếu chung, cuối cùng đó được so sánh với dữ liệu để ra kết quả. Vào những năm 1970, Goldstein, Harmon và Lesk1 sử dụng 21 loại thông tin cụ thể, chẳng hạn như màu tóc và độ dày môi để tự động nhận dạng. Vấn đề với cả hai giải pháp ban đầu này là các phép đo dựa trên vị trí, và cần sự tính toán thủ công của con người để có thể vận hành. Năm 1988, Kirby và Sirovich áp dụng phân tích các thành phần nổi bật, một kỹ thuật đại số tuyến tính tiêu chuẩn vào việc nhận dạng khuôn mặt. Đây được coi là một phần của cột mốc thay đổi vì dưới một trăm giá trị được yêu cầu mã hóa chính xác một hình ảnh khuôn mặt được căn chỉnh và chuẩn hóa phù hợp. Vào năm 1991, Turk và Pentland phát hiện ra rằng trong khi sử dụng kỹ thuật thành phần riêng, lỗi dư (residual error) có thể được sử dụng để phát hiện khuôn mặt trong hình ảnh - một khám phá có thể tạo ra được một hệ thống nhận diện khuôn mặt tự động, thời gian thực và đáng tin cậy. Mặc dù cách tiếp cận có phần bị hạn chế bởi các yếu tố máy móc của giai đoạn đó, nhưng nó đã tạo ra sự quan tâm đáng kể trong việc phát triển công nghệ nhận dạng khuôn mặt tự động. Công nghệ đầu tiên đã thu hút được sự chú ý rất lớn của truyền thông khi triển khai thử nghiệm tại Super Bowl tháng 1 năm 2001, trong đó ghi lại hình ảnh từ camera giám sát và so sánh chúng với một cơ sở dữ liệu kỹ thuật số. Sau sự kiện này, đã có các phân tích về tính cần thiết của việc sử dụng công nghệ để hỗ trợ nhu cầu quốc gia, trong khi vẫn quan tâm đến các mối quan tâm xã hội và quyền riêng tư của cộng đồng. Ngày nay, công nghệ nhận dạng khuôn mặt đang được sử dụng để chống lại gian lận hộ chiếu, hỗ trợ thực thi pháp luật, xác định trẻ em mất tích, và giảm thiểu gian lận danh tính. 2.3. Cách thức hoạt động Phương pháp bao gồm các bước khác nhau để thực hiện nhận diện khuôn mặt tự động. Đầu tiên là thực hiện phát hiện khuôn mặt để khoanh vùng khuôn mặt trong từng khung hình ảnh và video. Sau đó, dữ liệu ở bước trên đuợc liên kết với các khuôn mặt được phát hiện với danh tính chung trên các video và căn chỉnh các khuôn mặt thành tọa độ bằng cách sử dụng các mốc được phát hiện. Cuối cùng, hệ thống thực hiện xác minh 31 khuôn mặt để tính toán độ tương tự giữa một cặp hình ảnh / video. Sơ lược phương pháp được minh họa trong hình 2.3. Hình 2.3: Tổng quan về phương pháp nhận dạng khuôn mặt người bằng mạng nơ ron tích chập Cụ thể, ta có thể xem xét ví dụ với thiết kế mạng ở hình 2.4 để rõ hơn về tổng quan cách thức hoạt động: Hình 2.4: Thiết kế mạng nơ ron để xử lý ảnh Từ mạng nơ ron trên, ta có thể thấy các bước xử lý ảnh từ trái sang phải. Lần lượt, ta có thể thấy hình ảnh các cửa sổ dò tìm (ô vuông màu xanh) đang giảm dần và hiệu chỉnh dần theo từng giai đoạn dò tìm: 32 Hình 2.5: Các giai đoạn dò tìm và hiệu chỉnh 2.4 Phương pháp nhận dạng đối tượng từ ảnh chụp của camera 2.4.1 Nhận diện khuôn mặt Tất cả các khuôn mặt trong khung hình ảnh / video được phát hiện bằng hệ thống dò khuôn mặt dựa trên mạng nơ ron tích chập sâu (Deep Convolutional Neural Network – DCNN), được gọi là Mô hình tháp sâu để phát hiện khuôn mặt (Deep Pyramid Deformable Parts Model for Face Detection - DP2MFD) [38], bao gồm hai mô-đun. Mô- đun đầu tiên tạo ra một hình tháp sâu được chuẩn hóa bảy cấp cho bất kỳ hình ảnh đầu vào nào có kích thước tùy ý, như đã minh họa trong hình ảnh 2.3. Kiến trúc mạng nơ ron tích chập tương tự như Alexnet, được sử dụng để trích xuất các tính năng sâu. Mạng hình tháp này tạo ra một tháp gồm 256 bản đồ đặc trưng ở lớp tích chập thứ 5 (conv5). Bộ lọc được áp dụng để có được lớp max5. Thông thường, cường độ kích hoạt cho một vùng khuôn mặt giảm theo kích thước của cấp độ của tháp. Do đó, một khuôn mặt lớn được phát hiện bởi cửa sổ trượt có kích thước cố đinh ở cấp độ tháp thấp hơn sẽ có điểm phát hiện cao so với khuôn mặt nhỏ được phát hiện ở cấp độ tháp cao hơn. Để giảm độ lệch này cho kích thước khuôn mặt, hệ thống áp dụng bước chuẩn hóa điểm z trên các tính năng max5 ở mỗi cấp. Đối với vectơ đặc trưng 256 chiều ở cấp tháp i và vị trí (j, k), tính năng chuẩn hóa được tính như sau: Trong đó, là vectơ đặc trưng trung bình và là độ lệch chuẩn cho cấp độ tháp i. Các tính năng max5 được chuẩn hóa là . Sau đó, các tính năng có độ dài từ mỗi vị trí trong tháp được trích xuất bằng cách sử dụng phương pháp cửa sổ trượt. Mô-đun thứ hai là một SVM tuyến tính (linear SVM), lấy các tính năng này làm đầu vào để phân loại từng vị trí là mặt, hoặc không phải là mặt, dựa trên điểm được tính toán. Mô hình tháp sâu 33 để phát hiện khuôn mặt - DP2MFD có khả năng nhận diện rất tốt trên các độ sáng ảnh khác nhau, cũng như kích cỡ khuôn mặt. Chúng ta có thể thấy thông qua ví dụ sau: Hình 2.6: Kết quả phát hiện mẫu trên ảnh IJB-A bằng phương pháp tháp sâu 2.4.2 Phát hiện các điểm quan trọng trên khuôn mặt Khi các khuôn mặt được phát hiện, thuật toán thực hiện phát hiện các điểm quan trọng để căn chỉnh khuôn mặt. Thuật toán sẽ tìm cách khôi phục mặt về hình dáng mặc định ban đầu: gọi khuôn mặt là I, hình dạng ban đầu là S0, thuật toán sẽ tính toán mức tăng hình dạng ∆S từ các mô tả sâu (deep descriptors) và cập nhật bằng công thức sau: Các tính năng CNN (được biểu thị là Φ trong công thức trên) đượ

Các file đính kèm theo tài liệu này:

  • pdfluan_van_nghien_cuu_ve_mang_neural_convolutional_ap_dung_vao.pdf
Tài liệu liên quan