5. Ý nghĩa khoa học và thực tiễn của đề tài
2.2. Cơ sở lý thuyết và một số mô hình học sâu
2.2.1. Cơ sở lý thuyết học sâu
Đằng sau sự phát triển vƣợt bậc và đƣợc ứng dụng thành công một cách rộng rãi hiện nay của AI là học sâu. Học sâu sử dụng các mạng nơ-ron nhân tạo nhƣ một mô hình cơ bản cho AI: dựa trên mạng nơ-ron sinh học nhƣ não con ngƣời, mạng nơ-ron nhân tạo có lẽ đƣợc xem là tốt nhất nhƣ là một cách tiếp cận giải quyết các bài toán đòi hỏi chỉ định một tập linh hoạt các hàm, đƣợc xây dựng dựa trên nhiều khối tính toán đƣợc gọi là các nơ-ron. Thay vì nhà phát triển phải lập trình ra các tập chuyên dụng các luồng hƣớng dẫn để
giải quyết vấn đề, các mô hình học sâu sẽ đƣợc huấn luyện trên tập dữ liệu thực tế và từ đó học cách để tự động giải quyết các vấn đề tƣơng tự.
Sức mạnh thật sự của các mô hình học sâu đến từ các mạng nơ-ron sâu (hình 2.2), với rất nhiều các nơ-ron thần kinh đƣợc sắp xếp song song thành các lớp tính toán tuần tự, các biểu diễn học tập hữu ích. Các biểu diễn học tập này chuyển đổi dữ liệu thành các dạng ngày càng đƣợc tinh chỉnh để phục vục cho việc giải quyết một nhiệm vụ đặc thù, và đƣợc xem là dấu hiệu thành công của cả trí tuệ nhân tạo và sinh học.
Trong khi các mô hình học sâu hiện đại đƣợc xây dựng từ vô số các thành phần tính toán cơ bản, nguyên tắc đầu tiên trong mô tả vi mô mô tả làm thế nào một mạng nơ-ron đã đƣợc đào tạo thực hiện tính toán một chức năng từ các thành phần cấp thấp này là hoàn toàn hiển thị. Mô tả vi mô này chỉ là tập hợp các hƣớng dẫn để chuyển đổi một đầu vào qua nhiều lớp thành phần thành một đầu ra. Điều quan trọng là trong quá trình đào tạo, các thành phần này trở nên rất cần đƣợc điều chỉnh và kiến thức về các điều chỉnh cụ thể là cần thiết để một hệ thống tạo ra đầu ra hữu ích.
Mô hình mạng trên thể hiện cách giá trị đầu vào đƣợc biến đổi thông qua một thứ tự các tín hiệu tức thì gồm , sau đó trở thành giá trị đầu ra . Các hình tròn màu trắng trên từng tầng đại diện cho các nút nơron, nốt màu đen ở trên cùng biểu thị giá trị đầu ra . là một vector của một lƣợng lớn các tham số chịu trách nhiệm điều khiển hình dạng của hàm chức năng. Ta xem một mạng học sâu đơn giản nhƣ một hàm tham số:
(2.1)
Để hàm trở nên hữu ích, chúng ta cần bằng cách nào đó điều chỉnh vector tham số không gian cao tầng . Trong thực tế, công việc này đƣợc thực hiện theo hai bƣớc, lần lƣợt là:
- Đầu tiên, chúng ta khởi tạo một mạng bằng cách lấy mẫu ngẫu nhiên vector tham số từ một tính toán phân phối xác suất đơn giản:
(2.2)
đƣợc gọi là giá trị phân phối khởi tạo, và rất cần thiết phải có đối với chiến lƣợc khởi tạo mạng học sâu.
- Tiếp theo, chúng ta điều chỉnh vector tham số , sao cho kết quả của hàm mạng gần giống nhất có thể với kết quả đầu ra mục tiêu của hàm :
(2.3)
đƣợc gọi là hàm xấp xỉ. Để tìm đƣợc các giá trị sao cho chính xác nhất, ta khớp hàm với tập dữ liệu đào tạo, bao gồm nhiều cặp có dạng đƣợc quan sát từ hàm mục tiêu mong muốn – nhƣng chỉ quan sát một phần - . Nhìn chung, việc thực hiện các điều chỉnh này đối với các tham số đƣợc gọi là quá trình đào tạo, và thủ tục cụ thể đƣợc sử dụng để điều chỉnh chúng đƣợc gọi là các thuật toán học tập.
Mục đích của chúng ta là xác định và tìm ra hàm huấn luyện:
2.2.2. Một số mô hình học sâu trong phân tích ảnh X-Quang phổi
2.2.2.1. Mạng nơ-ron tích chập (CNN)
Một mạng nơ-ron tích chập CNN là một mạng nơ-ron nhiều lớp bao gồm một hoặc nhiều lớp kết nối đầy đủ nhƣ một mạng nơ-ron nhiều lớp chuẩn. Mạng CNN đƣợc giới thiệu lần đầu vào những năm 1960, với ý tƣởng nhƣ nhận thức cục bộ, trọng lƣợng của chia sẻ, và lấy mẫu trong không gian hoặc thời gian. Vào năm 2012, Krizhevsky và cộng sự [45] đã giúp mô hình CNN đƣợc biết đến rộng rãi với cộng đồng khi ứng dụng CNN vào bài toán phân loại hình ảnh.
Sự ra đời của mạng CNN là dựa trên ý tƣởng cải tiến cách thức các mạng nơ-ron nhân tạo truyền thống học thông tin trong ảnh. Do sử dụng các liên kết đầy đủ giữa các điểm ảnh vào node, các mạng nơ-ron nhân tạo truyền thẳng (Feed forward Neural Network) bị hạn chế rất nhiều bởi kích thƣớc của ảnh, ảnh càng lớn thì số lƣợng liên kết càng tăng nhanh, kéo theo sự bùng nổ khối lƣợng tính toán. Ngoài ra, sự liên kết đầy đủ này cũng là sự dƣ thừa với mỗi bức ảnh, các thông tin chủ yếu thể hiện qua sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà không quan tâm nhiều đến các điểm ảnh ở cách xa nhau. Mạng CNN với kiến trúc thay đổi, có khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ trong ảnh kết nối đến node trong lớp tiếp theo thay vì toàn bộ ảnh nhƣ trong mạng nơ-ron truyền thẳng.
Mạng CNN là một phƣơng thức rất hay đƣợc sử dụng để nhận dạng hình ảnh, phân loại ảnh, nhận diện đối tƣợng, nhận diện khuôn mặt,… . Mạng CNN thực hiện phân loại ảnh bằng các bƣớc nhận ảnh đầu vào, xử lý và phân loại nó dƣới dạng các nhãn. Máy tính nhìn nhận dữ liệu đầu vào nhƣ một mảng các điểm ảnh (pixel) dựa trên độ phân giải của ảnh. Dựa vào nó máy
tính nhìn nhận ảnh dƣới dạng
(hình 2.3) nghĩa là ảnh có kích thƣớc và có 3 kênh màu (RGB) còn ảnh là ảnh có kích thƣớc và có một kênh màu xám (grayscale).
Hình 2.3: Mảng ma trận RGB của ảnh
Để mạng CNN thực hiện huấn luyện và kiểm tra, mỗi ảnh đầu vào sẽ thông qua một số lớp tích chập với bộ lọc, Pooling, các lớp kết nối toàn vẹn (fully connected layers) và thực hiện hàm softmax để phân loại đối tƣợng (hình 2.4).
Hình 2.4: Mô hình mạng CNN
Nói chung, mạng nơ-ron tích chập CNN bao gồm một chồng các lớp tích chập khác nhau đƣợc học tƣơng ứng với mục đích tự động trích xuất thông tin hữu ích từ dữ liệu đầu vào mà không liên quan đến bất kỳ quy trình kỹ thuật tính năng hoặc tiền xử lý nào. Các thành phần quan trọng của CNN bao gồm lớp tích chập, lớp gộp (pooling), lớp kết nối toàn vẹn và lớp softmax.
a) Lớp tích chập (Convolutional Layer)
Tích chập là lớp đầu tiên để nhận dạng các đặc điểm nổi bật từ một bức ảnh đầu vào. Tích chập nhận ra mối tƣơng quan giữa các điểm ảnh bằng cách học các đặc trƣng cảu ảnh thông qua những ô nhỏ trong dữ liệu đầu vào. Quá trình này khá đơn giản bằng cách thực hiện phép toán tích chập. Trong phép toán tích chập, từng ô nhỏ trong ảnh đƣợc nhân với một bộ lọc (hình 2.5).
Hình 2.5: Ma trận ảnh nhân ma trận bộ lọc
Đầu vào là một ma trận hình ảnh 3 chiều có kích thƣớc ( )
Một bộ lọc
Kết quả đầu ra là thể tích 3 chiều là Ví dụ trong hình 2.6: Xét một phần ảnh có kích cỡ 5 5 và một ma trận bộ lọc có kích cỡ 3 3. Sau đó thực hiện tích chập nhân ma trận 5 5 với ma trận bộ lọc 3 3 và ra đƣợc bản đồ đặc trƣng.
Thực hiện tích chập một ảnh với các bộ lọc khác nhau có thể tạo ra các kết quả khác nhau nhƣ phát hiện các đƣờng biên, làm mờ hay làm nét hơn các chi tiết của ví dụ một số bộ lọc phổ biến trong hình 2.7 gồm : xác nhận (identity), phát hiện biên (edge detection), làm nét (sharpen), làm mờ (box
blur/ gaussian blur).
Hình 2.7: Một số bộ lọc phổ biến
b) Lớp chuyển đổi (ReLU Layer)
Lớp ReLU sử dụng hàm kích hoạt (activation function), ở đây là hàm . Hàm kích hoạt ReLU có tác dụng đƣa các giá trị âm về 0. Mục đích của lớp này là đƣa ảnh về một ngƣỡng để loại bỏ các giá trị âm không
cần thiết có thể ảnh hƣởng cho các bƣớc tính toán sau này. Hoạt động của lớp ReLU đƣợc biểu diễn ở hình 2.8:
Hình 2.8: Hoạt động của lớp ReLU
c) Lớp tổng hợp (Pooling Layer)
Các lớp pooling sẽ giảm kích cỡ hình ảnh sau khi thực hiện tích chập giúp giữ lại các đặc trƣng nổi trội nhất của ảnh. Điều này cho phép giảm mức độ tính toán xuống dần khi ảnh quá lớn đồng thời không làm mất đi các đặc điểm quan trọng của ảnh. Pooling có ba loại chính nhƣ sau:
- Max pooling: Lấy phần tử lớn nhất. - Average pooling: Lấy nhóm trung bình.
- Sum pooling: Tổng của tất cả các node trong bản đồ đặc trƣng. Trong đó, Max pooling (hình 2.9) là kiểu thƣờng đƣợc sử dụng nhất. Nó nhận giá trị lớn nhất trong một khoảng nào đó đƣợc quy định.
d) Lớp kết nối đầy đủ (Fully-Connected Layer)
Đến bƣớc này, ma trận nhận đƣợc sau các bƣớc tích chập và pooling đƣợc đƣa vào mạng kết nối đầy đủ nhƣ mạng nơ-ron bình thƣờng:
Tại lớp này, mỗi nơ-ron sẽ liên kết với các nơ-ron của các lớp khác. Để đƣa ảnh từ các lớp trƣớc vào lớp kết nối đầy đủ, ta phải dàn phẳng bức ảnh ra thành 1 vector. Cuối cùng là sử dụng hàm softmax để thực hiện phân loại đối tƣợng.
e) Các bƣớc thực hiện nhận dạng đối tƣợng bằng mạng CNN
Hình 2.10: Kiến trúc mạng CNN hoàn chỉnh
- Đƣa ảnh đầu vào vào trong lớp tích chập
- Chọn các tham số, áp các bộ lọc với stride, padding nếu cần thiết. Thực hiện tích chập trên ảnh và thực hiện hàm ReLU.
- Thực hiện pooling để giảm kích cỡ ảnh.
- Thêm các lớp tích chập nữa cho đến khi đạt đƣợc kết quả phù hợp. - Dàn phẳng kết quả và đƣa vào lớp kết nối đầy đủ.
- Thực hiện các hàm activation và phân loại ảnh.
2.2.2.2. YOLO
Tất cả các thuật toán phát hiện đối tƣợng nhƣ CNN hay Faster-CNN, R-CNN đều sử dụng xác định vùng để khu vực hóa đối tƣợng cần xác định trong hình. Các mạng sử dụng thuật toán nhƣ vậy không có cái nhìn tổng quát hết cả toàn bộ ảnh, thay vào đó, các phần của ảnh mà có khả năng cao chứa đối tƣợng sẽ đƣợc quan tâm. YOLO (You Only Look Once) là một thuật toán
xác định đối tƣợng khác với các thuật toán dựa trên vùng nhƣ đã đề cập. Trong YOLO, một mạng tích chập đơn lẻ sẽ dự đoán các bounding box và các lớp khả năng cho các box này.
Hình 2.11: Ý tƣởng các bƣớc của YOLO
Kiến trúc mạng YOLO bao gồm: Mạng cơ sở (base network) là các mạng tích chập làm nhiệm vụ trích xuất đặc trƣng. Phần phía sau là những lớp bổ sung (Extra layers) đƣợc áp dụng để phát hiện đối tƣợng trên bản đồ đặc trƣng của mạng cơ sở. Mạng cơ sở của YOLO sử dụng chủ yếu là các lớp tích chập và các lớp kết nối đầy đủ. Các kiến trúc YOLO cũng khá đa dạng và có thể tùy biến thành các phiên bản cho nhiều hình dạng đầu vào khác nhau.
Hình 2.12: Sơ đồ kiến trúc mạng YOLO
DarkNet đƣợc gọi là mạng cơ sở có tác dụng trích xuất đặc trƣng. Đầu ra của mạng cơ sở là một bản đồ đặc trƣng có kích thƣớc sẽ đƣợc sử dụng làm đầu vào cho các lớp bổ sung có tác dụng dự đoán nhãn và tọa độ khung giới hạn của vật thể.
Hiện tại YOLO hỗ trợ hai đầu vào chính là và . Mỗi một đầu vào sẽ có một thiết kế các lớp riêng phù hợp với hình dạng của đầu vào. Sau khi đi qua các lớp tích chập thì hình dạng giảm dần theo cấp số nhân là 2. Cuối cùng, chúng ta thu đƣợc một bản đồ đặc trƣng có kích thƣớc tƣơng đối nhỏ để dự báo vật thể trên từng ô của bản đồ đặc trƣng.
Kích thƣớc của bản đồ đặc trƣng sẽ phụ thuộc vào kích thƣớc của ảnh đầu vào. Đối với ảnh đầu vào thì bản đồ đặc trƣng có các kích thƣớc là , và . Và khi đầu vào là sẽ tạo ra bản đồ đặc trƣng là , và .
Đầu ra của mô hình YOLO là một vector bao gồm các thành phần:
〈 〉 〈 〉 (2.5)
Trong công thức (2,5):
- là xác suất dự báo vật thể xuất hiện trong bouding box.
- 〈 〉 giúp xác định bouding box. Trong đó là tọa độ tâm và là kích thƣớc rộng, dài của khung giới hạn. - 〈 〉 là vector phân phối xác suất dự báo của các class. Việc hiểu đầu ra rất quan trọng để có thể cấu hình tham số chuẩn xác khi huấn luyện mô hình qua các cấu trúc nhƣ DarkNet. Nhƣ vậy đầu ra sẽ đƣợc xác định theo số lƣợng classs theo công thức ( ), ví dụ, nếu huấn luyện 80 class thì sẽ có đầu ra là 85. Trƣờng hợp áp dụng 3 anchors/cell thì số lƣợng tham số đầu ra sẽ là: .
Trong hình 2.13 dƣới đây, hình ảnh gốc là một bản độ đặc trƣng kích thƣớc . Trên mỗi một ô của bản đồ đặc trƣng, chúng ta lựa chọn ra 3
hộp neo với kích thƣớc khác nhau lần lƣợt là Box 1, Box 2 và Box 3 sao cho tâm của các hộp neo trùng với ô. Khi đó, đầu ra của YOLO là một vector kết hợp của 3 khung giới hạn. Các thuộc tính của một khung giới hạn đƣợc mô tả nhƣ dòng cuối cùng trong hình.
Hình 2.13: Kiến trúc của một output của mô hình YOLO
a) Dự báo trên nhiều bản đồ đặc trƣng
YOLO dự báo trên nhiều bản đồ đặc trƣng. Những bản đồ đặc trƣng ban đầu có kích thƣớc nhỏ giúp dự báo đƣợc các đối tƣợng kích thƣớc lớn. Những bản đồ sau có kích thƣớc lớn hơn trong khi hộp neo đƣợc giữ cố định kích thƣớc nên sẽ giúp dự báo các vật thể kích thƣớc nhỏ.
Hình 2.14 thể hiện các bản đồ đặc trƣng của mạng YOLO với hình dạng đầu vào là , đầu ra là 3 bản đồ đặc trƣng có kích thƣớc lần lƣợt là , , .
Hình 2.14: Các bản đồ đặc trƣng của mạng YOLO
Trên mỗi một ô của các bản đồ đặc trƣng, chúng ta sẽ áp dụng 3 hộp neo để dự đoán vật thể. Nhƣ vậy, số lƣợng các hộp neo khác nhau trong một mô hình YOLO sẽ là 9 (3 bản đồ đặc trƣng x 3 hộp neo).
Đồng thời trên một bản đồ đặc trƣng hình vuông , mô hình YOLO sẽ sinh ra một số lƣợng hộp neo là : . Nhƣ vậy số lƣợng hộp neo trên một bức ảnh sẽ là: (hộp neo).
Đây là một số lƣợng rất lớn và là nguyên nhân khiến quá trình huấn luyện mô hình YOLO vô cùng chậm bởi chúng ta cần dự báo đồng thời nhãn và khung giới hạn trên đồng thời 10647 khung giới hạn.
Một số lƣu ý khi huấn luyện YOLO:
- Khi huấn luyện YOLO sẽ cần phải có RAM dung lƣợng lớn hơn để lƣu đƣợc 10647 khung giới hạn nhƣ trong kiến trúc này.
- Không thể thiết lập các batch size quá lớn nhƣ trong các mô hình classification nhƣ CNN vì rất dễ dẫn đến đầy bộ nhớ. Gói DarkNet của YOLO đã chia nhỏ một batch thành các subdivisions cho vừa với RAM.
- Thời gian xử lý của một bƣớc trên YOLO lâu hơn rất nhiều lần so với các mô hình classification. Do đó nên thiết lập các bƣớc giới hạn huấn luyện cho YOLO nhỏ. Đối với các tác vụ nhận diện dƣới 5 class, dƣới 5000 bƣớc là có thể thu đƣợc nghiệm tạm chấp nhận đƣợc. Các mô hình có nhiều clas hơn có thể tăng số lƣợng các bƣớc theo cấp số nhân.
b) Hộp neo (Anchor box)
Để tìm đƣợc khung giới hạn cho đối tƣợng, YOLO sẽ cần các hộp neo làm cơ sở ƣớc lƣợng. Những hộp neo này sẽ đƣợc xác định trƣớc và sẽ bao