CHƯƠNG 1: TỔNG QUAN: Trong chương này người thực hiện trình bày tổng quan về đề tài, tình hình nghiên cứu về đề tài này, động lực lựa chọn đề tài cũng như tính cấp thiết xoay quanh vấn đề đó và trình bày cấu trúc của đề tài. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT: Giới thiệu khái niệm về Máy học, và những giải thuật sử dụng để xây dựng mô hình cũng như thư viện sử dụng chính – Tensorflow. CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG ỨNG DỤNG NHẬN DIÊN NHÃN HIỆU: Trình bày thiết kế và thi công CHƯƠNG 4: KẾT QUẢ VÀ THỰC NGHIỆM: Chương này trình bày kết quả thực nghiệm,. CHƯƠNG 5: NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN: Đưa ra những nhận xét trong quá trình hoàn thiện luận văn cũng như hướng phát triển của hệ thống trong tương lai.
2 do an CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN 2. Machine learning và Object Detection 2. Khái niệm Machine Learning Học máy (machine learning) là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống học tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Học máy có hiện nay được áp dụng rộng rãi bao gồm máy truy tìm dữ liệu, chẩn đoán y khoa, phát hiện thẻ tín dụng giả, phân tích thị trường chứng khoán, phân loại các chuỗi DNA, nhận dạng tiếng nói và chữ viết, dịch tự động, chơi trò chơi và cử động rô- bốt (robot locomotion).
Một cách đơn giản là học máy có thể giúp chương trình tự đưa ra quyết định từ những dữ liệu có sẵn mà không cần phải lập trình tường minh. Image Recognition and Object Detection Nhận dạng hình ảnh là giao nhau giữa Deep Learning và Computer Vision. - Image Recognition(Image Classification): Đây là quá trình lấy một hình ảnh làm đầu vào và xuất một class từ ra một tập hợp các class. Nếu chúng ta đưa 1 ảnh vào thuật toán sẽ cho ta kết quả hình ảnh này thuộc class nào, hoặc là không có gì.
- Image Recognition with Localization: Quá trình này lấy một hình ảnh làm đầu vào, xuất ra một nhãn lớp và cũng vẽ một hộp giới hạn xung quanh đối tượng để xác định vị trí của nó trong hình ảnh - Object Detection: Trong quá trình này, nội địa hóa hình ảnh phải được áp dụng cho tất cả các đối tượng trong hình ảnh, dẫn đến nhiều hộp giới hạn 2. CNN - Convolutional Neural Network 2. Convolutional Convolutional là một cửa sổ trượt (Sliding Windows) trên một ma trận như mô tả hình dưới: 3 do an Hình 2.1: Cách Convolutional tạo feature map Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh lấy ra những thông tin chính xác nhất mà không cần chọn các feature. Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích thước nhỏ như trong ví dụ trên là 3x3.
Kết quả được một ma trận gọi là Convoled feature được sinh ra từ việc nhận ma trận Filter với ma trận ảnh 5x5 bên trái rồi cộng tổng kết quả. Cấu trúc của mạng CNN Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo. Các layer liên kết được với nhau thông qua cơ chế convolution.
Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ. Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó. 4 do an Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu).
Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện.2: Một ví dụ các lớp trong CNN Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter.
Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao. Cũng giống như cách con người nhận biết các vật thể trong tự nhiên. Mạng CNN sử dụng 3 ý tưởng cơ bản: các trường tiếp nhận cục bộ (local receptive field), trọng số chia sẻ (shared weights), tổng hợp (pooling). Trường tiếp nhận cục bộ (local receptive field) Đầu vào của mạng CNN là một ảnh.
Ví dụ như ảnh có kích thước 28x28 thì tương ứng đầu vào là một ma trận có 28x28 và giá trị mỗi điểm ảnh là một ô trong ma trận. Trong CNN chúng ta kết nối trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5x5 tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ học một bias. Mỗi một vùng 5x5 đấy gọi là một trường tiếp nhận cục bộ.
5 do an Hình 2.3: Vùng tiếp nhận cục bộ Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách sau: - Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1 Hình 2.4: Tạo neuron ẩn đầu tiên - Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2. 6 do an Hình 2.5: Tạo neuron ẩn thứ hai Đối với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trưng là shared weight và độ lệch xác định một feature map là shared bias. Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map. Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map.6: Tạo ra nhiều feature map bằng nhiều loại trường tiếp nhận cục bộ 7 do an Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp.
Trọng số chia sẻ (shared weight and bias) Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các nơ-ron trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden layer là một feature map. Vậy mối quan hệ giữa số lượng Feature map với số lượng tham số là gì? Chúng ta thấy mỗi fearture map cần 25 = 5x5 shared weight và 1 shared bias.
Như vậy mỗi feature map cần 5x5+1 = 26 tham số. Như vậy nếu có 10 feature map thì có 10x26 = 260 tham số. Chúng ta xét lại nếu layer đầu tiên có kết nối đầy đủ nghĩa là chúng ta có 28x28=784 neuron đầu vào như vậy ta chỉ có 30 neuron ẩn. Như vậy ta cần 28x28x30 shared weight và 30 shared bias.
Tổng số tham số là 28x28x30+30 tham số lớn hơn nhiều so với CNN. Ví dụ vừa rồi chỉ mô tả để thấy được sự ước lượng số lượng tham số chứ chúng ta không so sánh được trực tiếp vì 2 mô hình khác nhau. Nhưng điều chắc chắn là nếu mô hình có số lượng tham số ít hơn thì nó sẽ chạy nhanh hơn. Tóm lại, một convolutional layer bao gồm các feature map khác nhau.
Mỗi một feature map giúp detect một vài feature trong bức ảnh. Lợi ích lớn nhất của trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN. Lớp tổng hợp (pooling layer) Lớp pooling thường được sử dụng ngay sau lớp convolutional để đơn giản hóa thông tin đầu ra để giảm bớt số lượng neuron. 8 do an Hình 2.7: Ví dụ pooling trong CNN Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất trong vùng đầu vào 2x2.8: Max-pooling 2x2 Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa.
Trong một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi Max Pooling khác nhau. Có thể thấy rằng Max Pooling là cách hỏi xem trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất. Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các neuron với số lượng tùy bài toán. 9 do an Hình 2.9: Ví dụ mô hình CNN Hai lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully connected layer).
Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng ra. Region Proposal Network (RPN) Input của RPN là feature map và output là các region proposal. Ta thấy các region proposal là hình chữ nhật.10: Region proposal Mà một hình chữ nhật được xác định bằng 2 điểm ở 2 góc, ví dụ A(x_min, y_min) và B(x_max, y_max). Vì thế khi RPN dự đoán ta phải rằng buộc x_min < x_max và 10 do an y_min < y_max và các giá trị x,y khi dự đoán có thể ra ngoài khỏi bức ảnh, do thế kĩ thuật Anchor ra đời.
Ý tưởng xây dựng Anchor là thay vì dự đoán 2 góc ta sẽ dự đoán điểm trung tâm (x_center, y_center) và width, height của hình chữ nhật. Như vậy mỗi anchor được xác định bằng 4 tham số (x_center, y_center, width, height). Vì không sử dụng Selective search nên RPN ban đầu cần xác định các anchor box có thể là region proposal, sau đó qua RPN thì chỉ ouput những anchor box chắc chắn chứa đối tượng.11: Vùng anchor Ảnh bên trái kích thước 400 * 600 pixel, tác tâm của anchor box màu xanh, cách nhau 16 pixel => có khoảng (400*600)/(16*16) = 938 tâm. Do các vật trong ảnh có thể có kích thước và tỉ lệ khác nhau nên với mỗi tâm ta định nghĩa 9 anchors với kích thước 64 × 64, 128 × 128, 256×256, mỗi kích thước có 3 tỉ lệ tương ứng: 1 : 1, 1 : 2 và 2 : 1.
Giống như hình bên phải với tâm ở giữa 3 kích thước ứng với màu da cam, xanh lam, xanh lục và với mỗi kích thước có 3 tỉ lệ. Số lượng anchor box giờ là 938 * 9 = 8442 anchors.