You are on page 1of 35

BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Độc lập – Tự do – Hạnh phúc

*** -------------

ĐỒ ÁN MÔN HỌC

Họ và tên: Lê Đình Hùng - 20181504

Lê Nhật Minh - 20181647

Khóa: 63

Viện: Điện

Ngành: Kĩ thuật điều khiển và tự động hóa

Tên đề tài: Tìm hiểu mô hình phân vùng ảnh Unet và một số mô hình cải tiến của nó

Nội dung đồ án:

 Tìm hiểu khái quát về bài toán phân vùng ảnh (Image Segmentation)
 Tìm hiểu tổng quát các mô hình Image Segmentation cổ điển và hiện đại
 Nghiên cứu mô hình Unet và một số mô hình cải tiến của nó
 Triển khai các mô hình trên các tập dữ liệu 2018 Data Science Bowl.
 Đánh giá, so sánh các kết quả thu được

Giảng viên hướng dẫn: TS. Phạm Văn Trường

Ngày giao đồ án:

Ngày hoành thành đồ án:

Ngày…tháng…năm…

CÁN BỘ HƯỚNG DẪN SINH VIÊN THỰC HIỆN

(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)

Hùng

Lê Nhật Minh Lê Đình Hùng


Mục Lục

Lời cảm ơn và cam kết ...................................................................................................................................... 1


Lời mở đầu ......................................................................................................................................................... 2
Chương 1. Tìm hiểu khái quát về bài toán phân vùng ảnh (Image Segmentation)................................ 3
1.1. Các bài toán trong Xử lí ảnh ............................................................................................................... 3
1.2. Bài toán Image Segmentation và ứng dụng trong cuộc sống .............................................................. 3
1.3. Đầu vào và đầu ra của bài toán Image Segmentation ........................................................................ 4
1.4. Các bài toán segmentation .................................................................................................................. 4
Chương 2. Một số phương pháp Image Segmentation cổ điển ................................................................ 5
2.1. Phương pháp trích xuất đường viền (Edge Detection) ....................................................................... 5
2.2. Phương pháp sử dụng nghưỡng (Thresholding) ................................................................................. 6
2.3. Phân vùng ảnh dựa trên miền (Region Based Segmentation) ............................................................. 6
2.4. Phân vùng ảnh dựa trên phân nhóm đặc trưng (Feature Based Clustering) ........................................ 7
2.5. Nhược điểm của các mô hình Image Segmentation cổ điển ................................................................ 8
Chương 3. Cấu trúc chung của mô hình Image Segmentation hiện đại .................................................. 9
3.1. Phần Encoder ...................................................................................................................................... 9
3.2. Phần Decoder.................................................................................................................................... 11
Chương 4. Nghiên cứu mô hình Unet và một số mô hình cải tiến của nó ............................................. 13
4.1. Khối ASPP và khối Squeeze and excite ............................................................................................. 13
4.1.1. ASPP ......................................................................................................................................... 13
4.1.2. Squeeze and excitation (SE) ...................................................................................................... 15
4.2. Unet ................................................................................................................................................... 17
4.3. Double Unet ...................................................................................................................................... 19
4.4. ResUnet++ ........................................................................................................................................ 20
4.4.1. Encoder block............................................................................................................................ 20
4.4.2. Decoder block ............................................................................................................................... 21
4.4.3. Attention units ........................................................................................................................... 21
4.5. Multi ResUnet và DC Unet................................................................................................................ 21
4.5.1. MultiRes block ........................................................................................................................... 21
4.5.2. Res Path..................................................................................................................................... 22
4.5.3. DC Unet..................................................................................................................................... 23
4.6. Unet ++............................................................................................................................................. 24
4.6.1. Thiết kế lại đường nối giữa encoder và decoder. ...................................................................... 24
4.6.2. Nối tắt Dense ............................................................................................................................. 25
4.6.3. Deep supervision ....................................................................................................................... 25
Chương 5. Triển khai các mô hình trên tập data 2018 bowl và đánh giá kết quả ............................... 26
5.1. Bộ dữ liệu 2018 Data Science Bowl .................................................................................................. 26
5.1.1. Tổng quan.................................................................................................................................. 26
5.1.2. Đánh giá thuật toán................................................................................................................... 26
5.1.3. Mô tả tập data ........................................................................................................................... 27
5.2. Kết quả thực tế .................................................................................................................................. 27
Chương 6. Kết luận và hướng phát triển ................................................................................................. 31
Tài liệu tham khảo .......................................................................................................................................... 32
Lời cảm ơn và cam kết
Chúng em xin cam đoan đồ án: “Tìm hiểu mô hình phân vùng ảnh Unet và các mô hình cải
tiến của nó” là tự thiết kế dưới sự hướng dẫn của thầy Phạm Văn Trường, mọi kết quả và số liệu thu
được là thực tế.

Để hoàn thành được đồ án này, em chỉ sử dụng những tài liệu được ghi trong danh mục tài liệu
tham khảo, không hề có sự sao chép hay sử dụng bất kì tài liệu bên ngoài nào khác. Nếu có phát hiện
sự sao chép nào, em xin chịu hoàn toàn trách nghiệm.

Và để có thể hoàn thành đồ án này, hơn hết phải kể đến sự hướng dẫn tận tình của thầy giáo
TS. Phạm Văn Trường – giảng viên bộ môn Điều khiển tự động. Cùng với đó là sự hỗ trợ từ bạn bè,
anh chị khóa trên đã giúp đỡ và động viên chúng em rất nhiều trong suốt quá trình làm đề tài. Chúng
em xin gửi lời cảm ơn chân thành nhất đến với thầy và mọi người.

Hà Nội, ngày … tháng … năm …

Sinh viên thực hiện

1
Lời mở đầu
Trong thời đại 4.0, khi mà khoa học và công nghệ có những bước phát triển thần tốc thì trí tuệ
nhân tạo (AI) cũng trở nên hết sức gần gũi với mọi người. Trí tuệ nhân tạo được ứng dụng vào nhiều
mặt trong cuộc sống như giao thông vận tải, y tế, quân sự, dịch vụ, … Với những vượt trội của mình,
trí tuệ nhân tạo dần trở thành xu thế của loài người, một công cụ đưa con người tiếp cận nền văn minh
khoa học kĩ thuật mới.

Y tế là một lĩnh vực mà trí tuệ nhân tạo đang được áp dụng khá phổ biến với nhiều bài toán
mà một trong số đó là việc chuẩn đoán bệnh lí. Việc này hết sức quan trọng, quyết định khả năng chữa
trị của bệnh nhân, giảm thiểu chi phí cũng như thời gian chữa bệnh. Tuy nhiên việc chuẩn đoán trong
bệnh viện gặp nhiều khó khăn do sự thiếu hụt về cơ sở vật chất cũnhg như đội ngũ y, bác sĩ lành nghề.
Vì vậy các mô hình Medical Image Segmentation đã được nghiên cứu và ứng dụng nhiều trong việc
chuẩn đoán cho bệnh nhân. Với ý tưởng tìm hiểu các mô hình trên, chúng em đã lựa chọn đề tài: “Tìm
hiểu mô hình Unet và các cải tiến của nó”.

Trong đồ án này, chúng em sẽ trình bày các phần chính như sau:

Chương 1: Tìm hiểu khái quát về bài toán phân vùng ảnh (Image Segmentation)

Chương 2: Một số phương pháp Image Segmentation cổ điển

Chương 3: Cấu trúc chung của các mô hình Image Segmentation hiện đại

Chương 4: Nghiên cứu mô hình Unet và một số mô hình cải tiến của nó

Chương 5: Triển khai các mô hình trên tập 2018 Data Science Bowl

Chương 6: Đánh giá, so sánh các kết quả thu được

2
Chương 1. Tìm hiểu khái quát về bài toán phân vùng ảnh (Image Segmentation)
1.1. Các bài toán trong Xử lí ảnh

Ảnh 1: Khái quát các bài toán xử lí ảnh [3]

Xử lí ảnh là một lĩnh vực với nhiều bài toán đa dạng, ta có thể kể đến như Classification,
Segmetation hay Object Dectection. Các bài toán phát hiện hoặc nhận dạng khuôn mặt như Face
Detection hay Face recognition ngày càng được ứng dụng phổ biến trong các tác trong hệ thống giám
sát, chấm công,… Segmentation cũng là một bài toán quan trọng và phổ biến, đặc biệt là hướng
semantic đang được nghiên cứu ứng dụng trong các lĩnh vực y sinh.

1.2. Bài toán Image Segmentation và ứng dụng trong cuộc sống

Image Segmentation trong tiếng Việt nghĩa là phân vùng ảnh, hàm ý là phân chia hình ảnh đầu
vào thành nhiều vùng ảnh khác nhau. Cụ thể hơn, nhiệm vụ của bài toán là gắn nhãn cho toàn bộ các
pixels của ảnh.

Image Segmentation được ứng dụng trong nhiều lĩnh vực như xe tự hành, xử lí ảnh vệ tinh, phun
thuốc nông nghiệp, cảnh báo cháy rừng, … Đặc biệt trong lĩnh vực y sinh khi độ chính xác là yêu cầu
bắt buộc. Thuật ngữ Medical Image Segmentation được sử dụng để chỉ các bài toán phân vùng ảnh sử

3
dụng các tập dữ liệu y sinh. Và trong giới hạn của đồ án này, chúng em chỉ phân tích các mô hình
nhằm mục đích xử lí ảnh y sinh.
1.3. Đầu vào và đầu ra của bài toán Image Segmentation

Theo như định nghĩa ở trên, ta thấy đầu vào của bài toán là hình ảnh còn đầu ra sẽ là một ma
trận mask mà giá trị của từng pixel đã được gắn nhãn trên đó.

Ảnh 2: Ví dụ về Input image và mask của nó [1]

Như trong hình ảnh minh họa trên, ta thấy mỗi vật thể được gắn một loại nhãn với màu sắc khác
nhau. Màu xanh nhạt là nền, màu vàng là đường viền của đối tượng và màu xanh đậm là hình ảnh đối
tượng.
1.4. Các bài toán segmentation

Có 2 bài toán Image Segmentation chính như sau:

 Semantic Segmentation: Hình ảnh sẽ được phân thành các vùng với nhãn khác nhau, tuy nhiên
không có sự phân biệt khác nhau giữa các đối tượng trong cùng một nhãn.
 Instance Segmentation: Hình ảnh sẽ được phân vùng chi tiết đến từng đối tượng trong mỗi nhãn.

Ảnh 3: Phân biệt Sematic và Instance segmentation [1]


4
Như trên cả hai hình ta sẽ phân biệt giữa người và nền. Tuy nhiên hình bên trái không phân biệt từng
pixel thuộc về người nào còn hình bên phải thì từng người một sẽ được gắn nhãn chi tiết.

Chương 2. Một số phương pháp Image Segmentation cổ điển

2.1. Phương pháp trích xuất đường viền (Edge Detection)

Đường viền (cạnh) biểu thị đường bao của các vật thể trong ảnh, được cấu tạo bởi các pixel liên
kết với nhau tạo thành đường phân cách giữa vật và các vùng xung quanh. Các pixel này được gọi là
các pixel cạnh (Edge pixel).

Có nhiều loại cạnh hay gặp trong ảnh như là cạnh bước (Step edge), cạnh dốc (Ramp edge),
cạnh nhọn (Spike edge) và cạnh mái (Roof Edge). Cạnh bước thể hiện sự thay đổi đột ngột về cường
độ của các pixel, trong khi cạnh dốc đại diện cho sự thay đổi dần dần về cường độ. Cạnh nhọn biếu
diễn sự thay đổi đột ngột về cường độ nhưng nhanh chóng trở về cường độ ban đầu. Còn cạnh mái
biểu diễn sự thay đổi không lập tức trong một khoảng cách ngắn.

Ảnh 4: Các loại cạnh thường gặp

.
Việc trích xuất đường viền cũng tương tự việc phát hiện sự thay đổi nhanh chóng của cường độ
sáng của ảnh cũng như sự thay đổi đột ngột giá tị các pixel. Từ ý tưởng đó, nhiều thuật toán dò cạnh
đã ra đời, có thể kể đến như là: Sobel detector, Canny detector, Fuzzy Inference System (FIS), Active
Contour, …Tuy rằng khá đơn giản trong việc thực hiện, không đòi hỏi quá tình huấn luyện nhưng độ
chính xác của các phương pháp phụ thuộc vào nhiều yếu tố như độ rõ ràng của đường viền, hình dạng
của vật thể, sự tương phản của vật thể với nền, … Không chỉ vậy, do phải tính toán vòng lặp, hàm cực
5
tiểu nên các phương pháp đều rất tốn thời gian. Do những nhược điểm trên nên hiện nay các phương
pháp ít khi được sử dụng.

2.2. Phương pháp sử dụng nghưỡng (Thresholding)

Phương pháp sử dụng ngưỡng là một kĩ thuật đơn giản và hữu dụng trong việc phân vùng đối
tượng có sự tương phản rõ nét với nền. Một cách đơn giản để thực hiện phương pháp này đối với ảnh
xám là lựa chọn một ngưỡng T, các pixel có giá trị cao hơn T sẽ được chuyển về trắng (tức là 1) và
các pixel còn lại sẽ được chuyển về đen (tức mức 0).

Ảnh 5: Phương pháp threshold

Một số phương pháp sử dụng ngưỡng có thể kể đến như là Otsu thresholding, Balanced
Histogram Thresholding (BHT), … Sử dụng ngưỡng trong phân vùng ảnh nhìn chung khá đơn giản,
không yêu cầu nhiều thông tin về ảnh, khối lượng tính toán ít hơn. Tuy nhiên, như đã nói ở trên,
phương pháp này chỉ hiệu quả với ảnh có sự tương phản giữa các vật thể lớn, không áp dụng với ảnh
có biểu đồ tần suất bằng phẳng hay sự sai khác về cường độ không lớn.

2.3. Phân vùng ảnh dựa trên miền (Region Based Segmentation)

Phân vùng ảnh dựa trên miền là xác định các tập hợp pixel được kết nối với nhau mà có cùng
các thuộc tính tương tự. Mấu chốt của phương pháp này là sự tương đồng về giá trị và khoảng các
giữa các pixel. Các pixel có sự tương đồng với nhau theo một tiêu chuẩn định trước sẽ được nhóm lại
thành 1 nhóm. Từ nguyên tắc trên, người ta đã nghiên cứu hai phương pháp chính đó là Lan vùng
(Region Growing) và Phân tách và xác nhập vùng (Region Splitting and Merging).

6
Đối với Lan vùng, từ những điểm đã định trước trên ảnh (seed), vùng sẽ lan rộng ra các pixel
xung quanh nếu chúng có mức cường độ sáng tương đồng với cường độ điểm ban đầu. Từ đó ta thu
được ảnh gồm các vùng tương tự nhau.

Ảnh 6 Phương pháp phân vùng ảnh

Đối với Phân tách và xác nhập vùng, ta sẽ thực hiện chia ảnh ra làm các vùng đồng nhất và sau
đó là hợp nhất các vùng lại một cách thích hợp. Việc này chủ yếu dựa trên lí thuyết về cây dữ liệu.

Ảnh 7 Phương pháp phân tách và xác nhập vùng

Ưu điểm của phương pháp trên là hoạt động tốt với những ảnh mà vùng có sự đồng nhất, dễ
phân biệt, hơn nữa ít bị ảnh hưởng bởi nhiễu như phương pháp trích xuất đường viền. Tuy nhiên
nhược điểm của phương pháp này là khối lượng tính toán lớn dẫn đến tiêu tốn thời gian, bộ nhớ.

2.4. Phân vùng ảnh dựa trên phân nhóm đặc trưng (Feature Based Clustering)

Ý tưởng của phương pháp là xác định một số lượng nhóm (cluster) nhất định trước trong ảnh,
mỗi nhóm sẽ có một đại diện (centroid), sau đó phân chia từng pixel vào các nhóm qua việc xác định
7
nó gần centroid nào nhất. Các phương pháp được sử dụng nhiều có thể kể đến là K-means Clutering,
Fuzzy C Means, Mean Shift Clustering, …

Figure 1: Bộ lọc K-means Cluster

Phương pháp này nhìn chung khá dễ hiểu, cách thực hiện cũng khá đơn giản, tuy nhiên nó lại
gặp phải một số vấn đề như sau. Đầu tiên, hiệu quả của việc phân vùng ảnh hưởng nhiều bởi việc khởi
tạo giá trị Centroid ban đầu. Tiếp đó nhiều thuật toán yêu cầu xác định số lượng Cluster mà điều này
là khá khó trong thực tế. Hơn nữa, độ chính xác ở các pixel nằm ở biên các vùng là không cao.

2.5. Nhược điểm của các mô hình Image Segmentation cổ điển

Mặc dù khá đơn giản trong việc thực hiện, tuy nhiên với sự phát triển của công nghệ cũng như
những thách thức trong vấn đề phân vùng ảnh, các mô hình Image cổ điển bộc lộ những điểm yếu
nhất định. Một trong số đó có thể kể đến là việc độ chính xác phụ thuộc nhiều vào đối tượng cần phân
vùng. Lấy ví dụ với tập dữ liệu CVC-ClinicDB về nội soi đại tràng, các khối u (polyp) có hình dạng,
kích thước và đường viền khác nhau. Một số khối u có đường viền rất mơ hồ, không có sự sai khác
nhiều so với nền xung quanh, điều đó làm cho các phương pháp phân vùng truyền thống không phát
hiện được chúng.

Chính vì vậy, đối với các nhiệm vụ phân vùng ảnh y tế đòi hỏi độ chính xác cao, các phương
pháp truyền thống không còn được sử dụng nhiều.

Ngày nay, khi kĩ thuật học sâu (Deep learning) ngày càng phát triển, các phương pháp học sâu
cũng chứng minh được tính ưu việt vượt trội so với các phương pháp truyền thống. Do đó, nó được
sử dụng nhiều trong các bài toán phân vùng và ngày càng được cải tiến.

8
Chương 3. Cấu trúc chung của mô hình Image Segmentation hiện đại
Các kiến trúc Image Segmentation hiện đại thường bao gồm 2 phần chính đó là Encoder và Decoder.

Ảnh 8 Tổng quan mô hình Image Segmentation hiện đại [1]

3.1. Phần Encoder

Về cơ bản phần encoder có cấu trúc gần giống với mạng CNNs nhưng bỏ đi phần Fully
connected layer. Chúng thông thường sẽ bao gồm 2 lớp chính là lớp tích chập (Convolutional Layer)
và lớp giảm chiều (Downsampling Layer) với nhiệm vụ trích xuất các đặc trưng từ ảnh đầu vào (Input
Image). Ngoài ra trong một số mô hình mới, người ta còn thêm vài các khối như khối Squezee and
Excite và khối ASPP có chức năng đặc biệt giúp phần encoder hoạt động tốt hơn.

Tầng tích chập

Tầng tích chập (CONV) sử dụng các bộ lọc để thực hiện phép tích chập khi đưa chúng đi qua
đầu vào II theo các chiều của nó. Các siêu tham số của các bộ lọc này bao gồm kích thước bộ lọc F
và độ trượt (stride) S. Kết quả đầu ra O được gọi là feature map hay activation map.

Ảnh 9 Minh họa cách hoạt động của tầng tích chập [4]

9
Tầng Pooling

Tầng pooling (POOL) là một phép downsampling, thường được sử dụng sau tầng tích chập,
giúp tăng tính bất biến không gian. Cụ thể, max pooling và average pooling là những dạng pooling
đặc biệt, mà tương ứng là trong đó giá trị lớn nhất và giá trị trung bình được lấy ra.

Kiểu Max Pooling Average Pooling


Từng phép pooling chọn giá trị lớn nhất Từng phép pooling tính trung bình các giá
Chức năng
trong khu vực mà nó đang được áp dụng trị trong khu vực mà nó đang được áp dụng

Minh họa
[4]

• Bảo toàn các đặc trưng đã phát hiện • Giảm kích thước feature map
Nhận xét
• Được sử dụng thường xuyên • Được sử dụng trong mạng LeNet

Các tham số mô hình

 Stride Đối với phép tích chập hoặc phép pooling, độ trượt S ký hiệu số pixel mà cửa sổ sẽ di
chuyển sau mỗi lần thực hiện phép tính.
 Zero-padding là tên gọi của quá trình thêm P số không vào các biên của đầu vào. Giá trị này
có thể được lựa chọn thủ công hoặc một cách tự động bằng một trong ba những phương pháp
là Valid (Không sử dụng padding), Same (Đầu ra có kích thước I/S) và Full (Padding tối đa
cho các phép tích chập).

Công thức biểu diễn quan hệ kích thước đầu ra và đầu vào có thể được biểu diễn như sau:
𝐼 − 𝐹 + 𝑃𝑠𝑡𝑎𝑟𝑡 + 𝑃𝑒𝑛𝑑
𝑂 = + 1 (1)
𝑆
Trong đó O là kích thước đầu ra và I là kích thước đầu vào, F là kích thước bộ lọc. Trong
nhiều trường hợp, 𝑃𝑠𝑡𝑎𝑟𝑡 = 𝑃𝑒𝑛𝑑 𝑛ê𝑛 𝑡𝑎 𝑐ó 𝑡ℎể 𝑡ℎ𝑎𝑦 𝑐ô𝑛𝑔 𝑡ℎứ𝑐 𝑡𝑟ê𝑛 𝑏ằ𝑛𝑔:

𝐼 − 𝐹 + 2𝑃
𝑂 = + 1
𝑆 (2)

10
Hiểu về độ phức tạp của các khối

Conv Pool

Mô hình
lớp

Kt đầu vào I×I×C I×I×C


Kt đầu ra O×O×K O×O×C
Số lượng
(F×F×C+1)⋅K 0
tham số
• Một tham số bias với mỗi bộ lọc • Phép pooling áp dụng lên từng kênh
Lưu ý
• Trong đa số trường hợp, S < FS<F • Trong đa số trường hợp, S = FS=F

Ngoài ra còn một số khối đặc biệt được tác giả của các bài báo giới thiệu. Chúng sẽ được trình
bày ở những mục sau.

3.2. Phần Decoder

Phần decoder sẽ có nhiệm vụ lấy thông tin từ ảnh đầu vào cũng như các feature map có được sau
phần encoder, tái tạo lại kích thước và thông tin của ảnh để thu được mask dự đoán của mô hình
segmentation. Để làm được điều này, bên cạnh các lớp Conv như phần encoder, khối decoder cần có
các lớp có chức năng lấy mẫu từ feature map có kích thước nhỏ thành các feature có kích thước lớn
hơn và cuối cùng là thu được mask. Các lớp này có thể là Upsampling và Transposed convolution hay
còn gọi là deconvolutional.

Upsampling

Những kĩ thuật chủ yếu được sử dụng cho lớp Upsampling gồm

 Nearest Neighbors : Đúng như tên gọi của nó, chúng ta lấy giá trị của 1 pixel đầu vào và sao
chép nó cho K pixel gần nhất. Giá trị của K phụ thuộc vào kích thước đầu ra mình mong muốn
so với đầu vào.
 Nội suy Bi-Linear : Trong thuật toán nội suy Bi-Linear, chúng ta lấy 4 giá trị của 4 pixel gần
nhất và biểu diễn các pixel còn lại bằng công thức tính trung bình có trọng số dựa trên khoảng
cách của những pixel đó đến các pixel đầu vào ban đầu.
11
Ảnh 10: Nearest Neighbor [6] Ảnh 11: Bi-linear Interpolation [6]

 Bed of Nails : Với Bed of Nails, chúng ta sao chép giá trị của ảnh đầu vào với vị trí tương ứng.
Những chố trống còn lại đc phủ kín bởi giá trị 0 (hoặc có thể giá trị khác).

Tất cả các kĩ thuật được đề cập ở trên đều không phụ thuộc vào data, thứ khiến chúng kém linh
hoạt và chỉ thực hiện được những nhiệm vụ cụ thể và vì vậy không có tính tổng quát.

Transposed Convolution

Transposed Convolutions được sử dụng để biến đổi feature map đầu vào thành các feature
map có kích thước lớn hơn, đáp ứng yêu cầu thông qua một vài tham số có thể học được qua quá trình
huấn luyện.

Xét 1 feature map có kích thước 2x2 và cần upsampled lên feature map 3x3 thông qua 1 kernel
2x2. Chúng ta nhân lần lượt giá trị của từng pixel trong feature input với kernel rồi gán chúng trong 1
ma trận 3x3 với vị trí tương ứng. kế đó cộng tất cả ma trận 3x3 vừa thu được lại và t có output feature.

Ảnh 12: Qúa trình thực hiện Tranposed convolutional [6]

Một cách khác mà người ta vẫn gọi là Dilation Convolution là việc chúng ta thêm các cột và hàng
0 vào giữa input feature xong đó thông qua các kernel, thực hiện lớp convolutional như giới thiệu ở
trên để thu được output feature. Thông thường người ta không thực sự phân biệt cách làm này với
Transposed Convolution được đề cập ở trên.

12
Chương 4. Nghiên cứu mô hình Unet và một số mô hình cải tiến của nó

Chương này sẽ lần lượt đi qua cấu trúc của Unet và một số mô hình cải tiến của nó như là Double
Unet, ResUnet++, Unet++, Multi ResUnet hay là DC Unet.

4.1. Khối ASPP và khối Squeeze and excite

Trước khi đi vào kiến trúc của các mô hình cụ thể, chúng ta cần tìm hiểu về cấu trúc cũng như công
dụng của các khối ASPP và Squeeze and excite đang ngày càng được sử dụng nhiều trong các mô
hình gần đây.

4.1.1. ASPP
a) Atrous Convolution
Đầu tiên ta nói đến Atrous Convolution. Nội dung của nó tương tự như Dilation Convolution
đã đề cập ở trước đó nhưng trong thuật toán Image Segmetation hiện đại thì đa phần đều sử dụng
Atrous Convolution thay cho Dilation Convolution. Tích chập atrous cho phép chúng ta trích lọc được
các đặc trưng ở mật đồ dày hơn khi thông tin được bảo toàn tốt hơn cho các đối tượng ở những kích
thước khác nhau. Ta có thể khái quát nó bằng công thức:
𝐾

𝑦[𝑖] = ∑ 𝑥[𝑖 + 𝑟. 𝑘]𝑤[𝑘] (3)


𝑖=1

Ý nghĩa của công thức trên là: Với mỗi một cell 𝑖 trên output 𝑦 , tích chập atrous sẽ tính toán
bằng cách nhân tích chập bộ lọc 𝑤 với feature map 𝑥. Ở đây atrous rate 𝑟 tương ứng với khoảng cách
mà ta giãn cách giữa các dòng và cột bằng các giá trị 0, nếu atrous rate bằng 𝑟 thì giãn cách các dòng
và cột liên tiếp là 𝑟 − 1 dòng, cột.

Như vậy tích chập Atrous có tác dụng tăng kích thước output so với input và mở rộng tầm
nhìn của bộ lọc. Đối với tích chập austrous ta quan tâm tới các chỉ số:

 rate: Ký hiệu là 𝑅, là khoảng cách giữa các dòng hoặc cột liên tiếp nhau sau khi chèn thêm các
dòng và cột 0. Nếu rate = 𝑟 thì cứ cách một dòng hoặc cột là 𝑟 − 1 dòng hoặc cột 0.
 kernel: Ký hiệu là 𝐾, kích thước bộ lọc.
 padding: Ký hiệu 𝑃, kích thước zero padding bao ngoài ảnh.
 stride: Ký hiệu 𝑆, số bước di chuyển của mỗi lượt tích chập.

13
Ảnh 13: Tích chập thông thường (bên trên) và tích chập atrous (bên dưới) với cùng một bức ảnh 3 x 3. Các ô màu xám là ảnh gốc,
màu trắng là padding và dòng, cột 0 được thêm vào và màu xanh nước biển là các vùng nhận thức (receptive field) khi nhân tích chập.
Bên phải ngoài cùng là mô tả phép chiếu của lát cắt theo width quá trình thực hiện tích chập ở mỗi bước. Ta thấy đối với tích chập
atrous thì các vị trí của receptive field giãn cách nhau một cell mặc dù về bản chất vẫn là tích chập với bộ lọc 3 x 3 nhưng được thực
hiện trên một vùng rộng hơn là 5 x 5. Tích chập thông thường thì kích thước receptive field bằng với kích thước bộ lọc và bằng 3 x 3.
Kết quả output cho thấy tích chập astrous đã tăng kích thước feature map từ 3x3 lên 5x5. [3]

b) Atrous Spatial Pyramid Pooling (ASPP)

ASPP thực chất phiên bản sử dụng tích chập Atrous cửa SPPnet. Trong ASPP, các lớp tích
chập Atrous được sử dụng một cách song song với nhiều R (rate) khác nhau cho cùng 1 đầu đầu vào
là feature map. Các kết quả của các nhánh sau đó được nối với nhau rồi cho qua một lớp tích chập
atrous để thu được đầu ra.

Ảnh 14: ASPP - source: internet

14
4.1.2. Squeeze and excitation (SE)
a) Định nghĩa
Khối Squeeze and excitation nhằm mục đích cải thiện chất lượng của các mạng convolutional
neural network bằng cách cho nó thực hiện việc hiệu chỉnh lại các tính năng của từng kênh, tăng cường
thông tin giữa các kênh và nhấn mạnh có chọn lọc với những kênh chứa feature quan trọng hơn. Với
bất kì lớp convolution nào chúng ta đều có thể xây dựng một khối SE tương ứng để hiệu chỉnh lại các
feature maps.
′× 𝑊′ ×𝐶 ′
Xét một ảnh đầu vào 𝑋 ∈ ℝ𝐻 với chiều cao 𝐻 ′ , chiều rộng 𝑊 ′ và số channel 𝐶 ′ . Gọi
tập s là tập chứa các chỉ số về các channel của X. Ví dụ nếu X là ảnh màu RGB thì 𝑠 = 1,2,3. Ta
định nghĩa một lớp convolutional 𝐹𝑡𝑟 chứa các filters V trong đó 𝑉 = [𝑣1 , 𝑣2 , . . , 𝑣𝐶 ]. Có tổng cộng C
filter tất cả và 𝑣𝑠 là tham số của bộ filter thứ s.

Cho ảnh đầu vào đi qua lớp 𝐹𝑡𝑟 ta được sản phẩm đầu ra là 𝑈 ∈ ℝ𝐻× 𝑊 ×𝐶 . Ta có thể viết lại
feature map U dưới dạng 𝑈 = [𝑢1 , 𝑢2 , . . , 𝑢𝐶 ] trong đó
𝐶′

𝑢𝑐 = 𝑣𝑐 ∗ 𝑋 = ∑ 𝑣𝑐𝑠 ∗ 𝑥 𝑠 (4)
𝑠=1
′ ′
Ở đây * chính là phép toán tích chập, 𝑣𝑐 = [𝑣𝑐𝑠 = 1 , 𝑣𝑐𝑠 = 2 , … , 𝑣𝑐𝑠 = 𝐶 ], X = [𝑥 𝑠 = 1 , 𝑥 𝑠 =2 , … , 𝑥 𝑠 =𝐶 ]
và 𝑢𝑐 ∈ ℝ𝐻× 𝑊 .

Bây giờ ta có thể thấy rằng với chỉ một output, ví dụ như 𝑢1 thì nó đã là một tổng mà đi qua
tất cả channel của ảnh (s = 1, s = 2,.. s = 𝐶 ′ ). Sự phụ thuộc của các channel được ngầm nhúng vào 𝑣𝑐 .
Các mối quan hệ giữa các channel được mô hình hóa bởi phép tích chập vốn được ngầm định và cục
bộ. Các tác giả hi vọng có thể mô hình hóa rõ ràng sự phụ thuộc lẫn nhau giữa các channel với nhau.

b) Squeeze

Squeeze trong SE block có nhiệm vụ nén thông tin về mặt không gian của các feature thành
một bộ mô tả kênh. Để làm được điều này cần sử dụng lớp global average pooling trên các chiều
không gian của feature, công thức cụ thể như sau:
𝐻 𝑊
1
𝑧𝑐 = 𝐹𝑠𝑞 (𝑢𝑐 ) = ∑ ∑ 𝑢𝑐 (𝑖, 𝑗) (5)
𝐻𝑥𝑊
𝑖=1𝑗=1

15
Các scalar 𝑧𝑖 kết hợp lại thành 1 vector Z = [𝑧1 , 𝑧2 ,…, 𝑧𝐶 ] ( C là số lượng các filter để tạo ra các
feature từ lớp 𝐹𝑡𝑟 .

Ảnh 15: squeeze step

c) Excitation

Bước Excitation nhằm mục đich nắm bắt đầy đủ các yếu tố phụ thuộc của các channel. Bước
excitation xử lí đầu ra của bước squeeze (vector z) để tạo ra vector kích hoạt s, cái mà sẽ được sử dụng
để tái tạo lại các feature maps (lưu ý là s này không giống với s đại diện cho tập các chiều của ảnh đầu
vào đã đề cập trước đó). Vector s được tính toán từ vector z thông qua 2 lớp fully connected layers
với một nút thắt cổ chai làm giảm chiều đi C/r lần.

s = 𝐹𝑒𝑥 (𝑧, 𝑊) = 𝜎(𝑊2 𝑅𝑒𝐿𝑈(𝑊1 𝑧)) (6)


𝐶 𝐶
Trong đó 𝑊1 𝜖 ℝ𝑟 × 𝐶 và 𝑊2 𝜖 ℝ𝐶 × 𝑟 . 𝜎 là hàm sigmoid.

Siêu tham số r được gọi là "tỷ lệ giảm". Nếu r càng lớn, thì biểu diễn trung gian càng nhỏ. Mục
tiêu của việc giảm kích thước của biểu diễn xuống C / r và sau đó mở rộng nó trở lại C là để thứ nhất
hạn chế độ phức tạp của mô hình và thứ hai hỗ trợ tổng quát hóa. Như các tác giả đã nói, tỷ lệ giảm r
"cho phép chúng tôi thay đổi dung lượng và chi phí tính toán của các khối SE trong mạng."

Khi mà s đã được tính, các thành phần của s được sử dụng để tái tạo lại các feature map từ U
và thu được đầu ra của khối SE, kí hiệu là 𝑋̃.

𝑥̃𝑐 = 𝐹𝑠𝑐𝑎𝑙𝑒 (𝑢𝑐 , 𝑠𝑐 ) = 𝑠𝑐 𝑢𝑐 (7)


Trong đó 𝑋̃ = [𝑥̃1 , 𝑥̃2 , … , 𝑥̃𝑐 ] và 𝐹𝑠𝑐𝑎𝑙𝑒 là phép toán nhân channel-wise giữa hệ số 𝑠𝑐 và 𝑢𝑐 𝜖 ℝ𝐻 × 𝑊 .

16
Ảnh 16: Excitation Ảnh 17: Final step

Có thể thấy rằng s1 được chạy dọc hết các chiều H x W của feature u1 và thực hiện phép toán
element-wise trên toàn bộ u1 để thu được 𝑥̃1 . Chúng chính là đầu ra của khối SE, có cùng kích thước
với khối đầu vào và sẽ được tiếp tục đi qua phần còn lại của mạng. Có thể tóm tắt các bước của khối
SE bao gồm:

 Feature X được cho qua phép biến đổi Ftr trích xuất ra các bản đồ đặc trưng U
 Các feature map U đi qua hàm squeeze (thường là global avg pooling) sinh ra một ma trận
miêu tả đặc trưng của từng kênh.
 Hàm excitation được thêm ngay sau đó, lấy đầu vào là các ma trận tổng hợp ở trên, cho qua
các bước tính toán để tính các trọng số S miêu tả sự phụ thuộc giữa các kênh. Các trọng số này
sau đó được đem nhân với feature U để cho ra các feature thực sự quan trọng với bài toán.

Ảnh 18: SE block [13]

4.2. Unet

Mô hình Unet được giới thiệu lần đầu vào năm 2015 bởi Olaf Ronneberger và các đồng nghiệp
của ông là một nghiên cứu đột phá trong lĩnh vực phân đoạn ảnh y sinh lúc bấy giờ. Tương tự như

17
FCN hay SegNet, Unet sử dụng các lớp convolutional để biểu diễn semantic segmentation. Mạng
Unet có cấu trúc đối xứng và được chia làm 2 phần là encoder và decoder.

Phần encoder tuân theo cấu trúc mạng CNN truyền thống với công dụng trích xuất các thông tin
từ ảnh thành các feature. Một convolutional block bao gồm hai lớp Conv 3x3 liên tiếp, theo sau đó là
1 lớp pooling giảm chiều với kernel 2x2 và strides bằng 2. Khối này được lặp lại 4 lần và sau mỗi lần
thì số kernel lại được nhân đôi. Ở giữa 2 phần encoder và decoder là 2 lớp convolution 3x3 có tác
dụng kết nối 2 nhánh lại.

Ảnh 19: Cấu trúc mạng Unet [7]

Phần decoder được sử dụng để tái tạo lại segmentation map từ các feature thu được ở phần
encoder. Ở đây tác giả sử dụng các lớp 2x2 transposed convolution để tăng kích thước của các feature
map và đồng thơi giảm chiều của chúng đi 1 nửa. Theo sau đó là 2 lớp convolution 3x3 liên tiếp.
Tương tự như phần encoder, cấu trúc 1 lớp transposed convolution và 2 lớp convolution được lặp lại
4 lần và giảm một nửa số kernel mỗi lần. Cuối cùng là một lớp convolution 1x1 để thu được đầu ra là
segmentation map. Tất cả các lớp convolution đều có hàm kích hoạt là hàm ReLU ngoại trừ lớp cuối
cùng cho ra kết quả thì sử dụng hàm Sigmoid.

Điểm đặc biệt làm nên cấu trúc của Unet chính là việc sử dụng các đường nối tắt để truyền
thông tin từ đầu ra của encoder đến phần decoder tương ứng, mục đích để bảo toàn tính thông tin về
vị trí của các điểm ảnh. Phần encoder chứa các thông tin chi tiết và cục bộ trong khi phần encoder lại
chứa các thông tin giàu ngữ nghĩa và mang tính toàn cục. Bằng cách nối chúng lại với nhau sẽ tạo nên
một kết quả đầu ra chính xác hơn. Các feature đó được nối với đầu ra của các lớp transposed
convolution tương ứng. Cấu trúc này được thể hiện rõ trong hình trên.

18
4.3. Double Unet

Double Unet, như tên gọi của nó, sử dụng 2 mạng có cấu trúc gần giống với Unet.

Ảnh 20: Cấu trúc mạng Double Unet [8]

Như đã thấy trong hình trên, Double Unet bắt đầu với mạng pretrained VGG19 với weight được
trên từ bộ Image Net. Theo sau nó là cầu ASPP để nối giữa các phần encoder và decoder của 1 mạng.
Phần decoder của mạng thứ nhất cũng như mạng thứ 2 sử dụng 4 decoder block như cách Unet sử
dụng, tuy nhiên cấu trúc của các khối này có đôi chút khác biệt và ta sẽ nói rõ chúng ở phần dưới. Ở
cả 2 mạng của Double Unet đều sử dụng các đường nối tắt giữa phần decoder và encoder như Unet.

Đầu ra của phần decoder mạng thứ nhất cho qua 1 lớp convolution 1x1 với hàm activation là
sigmoid để thu được output1. Output1 được đem nhân với input1 và kết quả của chúng trở thành
input2 tức đầu vào của mạng thứ 2. Mạng thứ 2 có cấu trúc tương tự như mạng thứ nhất, chỉ khác
phần encoder gồm 4 encoder block thay vì pretrained VGG19 như trước. Ở phần decoder2, sau mỗi
block, kết quả được nối với đầu ra của các encoder block tương ứng ở cả mạng thứ 1 và thứ 2. Sau
khi thu được output2 thì nối nó với output1 và cho qua 1 lớp convolution 1x1 để thu được kết quả
cuối cùng. Thực tế cho thấy cách làm này đạt hiệu quả và cho ra segmentation mask tốt hơn. Đó cũng
là động lực cho sự ra đời của Double Unet.

Cấu trúc khối encoder block và decoder block của Double Unet có sự khác biệt so với Unet.
Encoder block bao gồm 2 lớp convolution 3x3 và theo ngay sau mỗi lớp là một lới batch nornalization

19
có tác dụng chính quy hóa lại model. Hàm ReLU được áp dụng cho từng lớp. Các lớp này được theo
sau bởi một khối Squeeze and excite, thứ giúp tăng chất lượng của các features map. Cuối cùng, như
những khối encoder khác, max-pooling được sử dụng để giảm kích thước.

Phần decoder block bao gồm 1 lớp Bi-linear Upsampling để tăng kích thước các feature map. Các
feature này được nối với các feature skip connection(nối tắt) tương ứng, rồi cho qua một cấu trúc
tương tự như encoder block (chỉ không có phần giảm chiều).

4.4. ResUnet++

Được giới thiệu vào cuối năm 2019, tác giả Debesh Jha cùng các cộng sự đã giới thiệu một mô
hình kết hợp những điểm mạnh của các mô hình Deep Residual Unet (ResUnet) và Unet. Mục đích
của việc kết hợp này là tận dụng những điểm mạnh của residual block, squeeze and excite block,
ASPP và phương pháp nối tắt tương tự Unet nhằm đạt được kết quả tốt hơn trong các tác vụ
segmentation liên quan đến ảnh y sinh.

Khối Residual truyền thông tin qua


các layer, cho phép xây dựng một mạng
nơ-ron sâu hơn có thể giải quyết vấn đề
suy thoái về mặt thông tin trong mỗi
phần encoder. Điều này làm tăng sự phụ
thuộc giữa các kênh, đồng thời giảm
khối lượng tính toán.

Kiến trúc ResUNet ++ như thấy trên


hình gồm 4 khối encoder, 1 cầu nối
ASPP và 3 khối decoder. Cuối cùng, kết
quả đầu ra của khối decoder cuối cùng
được cho qua một khối ASPP và một lớp
convolution 1x1 với hàm kích hoạt
sigmoid để thu được segmentation
Ảnh 21: Kiến trúc ResUnet++[9]
mask.

4.4.1. Encoder block

20
Mỗi khối encoder block trong phần encoder chứa 2 khối convolution liên tiếp mà mỗi khối đó
gồm có các lớp batch normalization, ReLU activation và cuối cùng là một lớp convolution 3x3. Tại
lớp convolution đầu tiên của mỗi encoder block, strided được gắn bằng 2 để giảm kích thước các
feature map đi còn một nửa. Đầu ra của lớp convolution thứ 2, cộng với đầu vào của encoder block,
cho ra đầu ra của block đó. Cấu trúc này được gọi là Residual Unit [10]. Ở giữa các encoder block,
tác giả thêm các khối Squeeze and excite nhằm tăng sự nhạy cảm đối với các feature quan trọng.

Khối ASPP được thêm vào như là cầu nối giữa phần encoder và decoder.

4.4.2. Decoder block

Mỗi khối decoder block cũng bao gồm một cấu trúc tương tự như encoder block (Residual
Unit). Tuy nhiên trước mỗi unit, tác giả sử dụng thêm attention block làm tăng hiệu quả của các feature
map. Theo sau đó là lớp tăng kích thước các feature map sử dụng kĩ thuật nearest neighbor. Kết quả
thu được đem nối với phần encoder tương ứng rồi mới cho vào Residual Unit.

4.4.3. Attention units

Cơ chế attention được sử dụng chủ yếu trong lĩnh vực NLP. Gần đây nó còn được thêm vào
để phục vụ cho 1 vài bài toán segmentation. Cơ chế này nhằm xác định phần nào là phần cần được
chú ý nhiều hơn trong mạng nơ-ron. Nó cũng giúp giảm khối lượng tính toán đi đáng kể. Và một ưu
điểm nữa là chúng khá đơn giản, có thể áp dụng được cho bất kì kích thước đầu vào nào, nâng cao
chất lượng của các feature map. Chính vì lí do đó, việc đưa attention unit vào trước mỗi input của
decoder block khiến cho mô hình đạt được hiệu quả hơn so với những mô hình trước đó như ResUnet
hay Unet.

4.5. Multi ResUnet và DC Unet

Được giới thiệu vào cuối năm 2019, mô hình Multi ResUnet của tác giả Nabil Ibtehaz, M.
Sohel Rahman như là một cải tiến cho Unet trong việc xử lí các hình ảnh y sinh ở nhiều kích thước
khác nhau. Để làm được điều này, các tác giả đã giới thiệu một số khái niệm mới như là MultiRes
block và Res Path.

4.5.1. MultiRes block

Lấy ý tưởng từ inception block khi sử dụng các bộ lọc khác có kích thước khác nhau (3x3,
5x5,7x7) một cách song song rồi nối chúng lại với nhau nhằm mục đích dung hòa về mặt không gian
của các đầu vào có kích thước khác nhau, Multi ResUnet sử dụng chuỗi các bộ lọc 3x3 để thay thế
21
cho các bộ lọc có kích thước 5x5 và 7x7, thứ sẽ khiến cho khối lượng tính toán trở nên lớn hơn. Một
vấn đề nữa đó là việc nếu đặt 2 lớp convolution 3x3 liên tiếp thì sự phụ thuộc của mô hình vào layer
đầu tiên sẽ trở nên lớn hơn. Để tránh hiện tượng này, tác giả sắp xếp các layer theo chiều số filter tăng
dần. Ngoài ra nhóm tác giả còn thêm vào đó một residual connection từ đầu vào đến đầu ra, thứ đã
chứng tỏ được sự hiệu quả đối với ảnh y sinh. Kiến trúc trên được gọi là MultiRes block, được minh
họa cụ thể trong hình dưới đây.

Ảnh 22 : Minh họa quá trình hình thành MultiRes block : a) Inception block đơn giản b) Thay thế các lớp 5x5 và 7x7 tốn nhiều khối
lượng tính toán bằng các chuỗi 2 và chuỗi 3 các lớp 3x3 c) cấu trúc hoàn thiện của MultiRes block với thêm residual connection. [11]

4.5.2. Res Path


Một trong những sự khéo léo trong cách xây dựng kiến trúc Unet chính là việc xây dựng đường
nối tắt giữa các feature trước lớp max-pooling trong phần encoder với phần sau lớp transposed conv
trong phần decoder với nhau. Mặc dù cách làm này bảo tồn được sự tan rã không gian của các feature
tuy nhiên nó lại có thể gây ra sự mất cân bằng trong các feature được nối tắt ( các feature đơn giản ở
đầu encoder lại được nối với các feature ở cuối decoder). Chính vì lẽ đó mà tác giả đề xuất việc thay
vì nối trực tiếp như vậy thì sẽ cho qua chuỗi các residual connections unit. Mô hình cụ thể được biểu
diễn như hình dưới.

Ảnh 23: Cấu trúc của Res Path [11]

22
Một vấn đề nữa mà tác giả đề cập đến trong mô hình của mình đó chính là số lượng filter được
sử dụng. Ở đây ông định nghĩa một tham số là W = 𝛼U trong đó U chính là số lượng filter của mạng
kiến trúc Unet tương ứng với từng tầng của kiến trúc. 𝛼 là hệ số tỉ lệ, thưởng được chọn là 5/3 để số
lượng tham số của Multi ResUnet tương đương với Unet. Số lượng filter của các lớp convolution 3x3
tăng dần và chúng lần lượt bằng [W/6],[W/3] và [W/2].

Sau đây là kiến trúc cụ thể của Multi ResUnet sau khi đã tìm hiểu về Res Path và MultiRes block.

Ảnh 24: Cấu trúc mạng MultiRes Unet [11]

4.5.3. DC Unet

Lấy ý tưởng chính từ MultiRes Unet, DC Unet giới thiệu một cấu trúc có tên là DC block để
thay thế có MultiRes block, cái mà theo như tác giả bài báo là trích xuất được nhiều thông tin về mặt
không gian hơn. Cấu trúc của DC block là thay thế đường nối residual connection được tạo nên bởi 1
lớp convolution 1x1 như trong MultiRes Unet bằng chính nhánh còn lại. Cấu trúc cụ thể có thể được
biểu diễn dưới hình sau.

Ảnh 25: Cấu trúc DC block [12]

23
4.6. Unet ++

Được giới thiệu lần đầu vào năm 2018 và có lần chỉnh sửa vào năm 2020, Unet++ kết hợp ý
tưởng từ DenseNet và Unet để tạo ra một mô hình hoàn toàn mới có kết quả tốt hơn hẳn Unet và
một số mạng trước trong lĩnh vực ảnh y sinh.

Ảnh 26: Cấu trúc mạng Unet++[15]

Bằng cách thêm vào giữa phần encoder và decoder của Unet các khối Dense và lớp
convolution, Unet++ đã cải thiện được đáng kể độ chính xác, một yếu tố cực kì quan trọng trong ảnh
y sinh. Sau đây chính là 3 sự bổ sung quan trọng của Unet++ dựa trên Unet.

4.6.1. Thiết kế lại đường nối giữa encoder và decoder.

Trong mô hình Unet++, tác giả sử dụng các convolution layers để kết nối các feature từ encoder
đến decoder thay vì nối trực tiếp như Unet. Mục đích của chúng là làm giảm khoảng cách về chất
lượng của các feature được nối với nhau. Trong Unet, việc nối trực tiếp vô hình chung kết nối các
feature có sự khác nhau về mặt ngữ nghĩa lại với nhau. Điều đó thực sự làm giảm đi chất lượng của
segmentation mask đầu ra. Tuy nghiên với Unet ++, các convolution layer đã đem khoảng cách về
mặt ngữ nghĩa giữa các feature từ encoder và decoder lại gần nhau hơn, do đó việc tối ưu hóa dễ dàng
hơn.

24
Tất cả các convolution layer đều được thiết kế với các kernel kích thước 3x3.

4.6.2. Nối tắt Dense

Trong Unet++, đường nối tắt giữa các feature encoder và decoder tương ứng không chỉ được
cho qua các lớp convolution như đã nói ở trên, các layer đó còn bổ sung thêm các đương nối tắt giữa
chính các layer đó dựa trên ý tưởng của dense block trong DenseNet.

Nối tắt Dense đảm bảo rằng tất cả các feature maps trước đó đều được tích lũy và chuyển đến
nút đang xét. Điều này tạo ra các feature maps có độ phân giải đầy đủ ở nhiều cấp độ ngữ nghĩa khác
nhau.

4.6.3. Deep supervision

 Trong Unet++, deep supervision được thêm vào để


model có thể tùy biến điều chỉnh độ phức tạp, cân
bằng giữa tốc độ và hiệu suất của mô hình.

 Ở chế độ chính xác, output được lấy trung bình từ tất


cả nhánh output của mô hình.

 Ở chế độ nhanh, output được lấy từ một trong những


nhánh output.

Ảnh 27: Deep super vision[15]

25
Chương 5. Triển khai các mô hình trên tập data 2018 bowl và đánh giá kết quả
5.1. Bộ dữ liệu 2018 Data Science Bowl
5.1.1. Tổng quan

Bộ dữ liệu 2018 Data Science Bowl đã đưa ra một sứ mệnh đầy tham vọng rằng: Tạo ra một
thuật toán có thể phát hiện được nhân của tế bào một các chính xác. Bằng việc tự động phát hiện được
nhân của các tế bào, chúng ta có thể tìm ra được phương pháp chữa trị nhanh hơn, từ bệnh cảm cúm
thông thường cho đến các chứng rối loạn hiếm gặp. Cuộc thi 2018 Data Science bowl được tạo nên
từ động lực như thế.

Xác định nhân tế bào là điểm khởi đầu cho hầu hết các phân tích vì hầu hết trong số 30 nghìn
tỷ tế bào của cơ thể con người chứa một nhân đầy DNA, mã di truyền lập trình cho mỗi tế bào. Việc
xác định hạt nhân cho phép các nhà nghiên cứu xác định từng tế bào riêng lẻ trong một mẫu và bằng
cách đo lường cách tế bào phản ứng với các phương pháp điều trị khác nhau, nhà nghiên cứu có thể
hiểu được các quá trình sinh học cơ bản đang hoạt động.

5.1.2. Đánh giá thuật toán

Cuộc thi đưa ra quy chuẩn đánh giá thuật toán dựa trên chỉ số IoU. Chỉ số này giữa ground
truth và kết quả dự đoán của mô hình được tính theo công thức:

𝐴 ∩ 𝐵
𝐼𝑜𝑈(𝐴, 𝐵) = (8)
𝐴 ∪ 𝐵
Chỉ số này sẽ quét qua hầu hết các ngưỡng, tại mỗi điểm sẽ tính một giá trị chính xác trung bình. Giá
trị của các ngưỡng này dao động từ 0.5 đến 0.95 với bước nhảy 0.05. Nói cách khác, nếu giá trị ngưỡng
là 0.5 thì các ảnh dự đoán gọi là một “hit” nếu giá trị IoU của nó so với ground truth lớn hơn 0.5.

Tại mỗi giá trị ngưỡng t (thường chọn 0.5) thì giá trị chính xác được tính dựa trên các chỉ số
true positive (TP), false negative (FN) và false positve (FP) được tính từ việc so sanh kết quả giữa đầu
ra mô hình và ảnh mask thật được cung cấp.

𝑇𝑃(𝑡)
(9)
𝑇𝑃(𝑡) + 𝐹𝑃(𝑡) + 𝐹𝑁(𝑡)
Một giá trị true positive được tính khi một ảnh hoặc pixel được dự đoán là đúng ( có giá trị IoU vượt
hơn ngưỡng) và thực tế là nó đúng. Giá trị false positive là khi một ảnh hoặc pixel nó được mô hình
phân loại đúng nhưng thực tế lại không như vậy. Còn giá trị false negative là khi khi một ảnh hoặc

26
vật thể được mô hình dự đoán sai nhưng thực tế nó lại là đúng. Độ chính xác trung bình của một ảnh
sau đó được tính là giá trị trung bình của các giá trị độ chính xác ở trên ở mỗi ngưỡng IoU:

1 𝑇𝑃(𝑡)
∑ (10)
|𝑡ℎ𝑟𝑒𝑠ℎℎ𝑜𝑙𝑑𝑠| 𝑇𝑃(𝑡) + 𝐹𝑃(𝑡) + 𝐹𝑁(𝑡)
𝑡

5.1.3. Mô tả tập data

Bộ dữ liệu này chứa một số lượng lớn các hình ảnh hạt nhân được phân đoạn. Hình ảnh thu
được trong nhiều điều kiện khác nhau và khác nhau về loại tế bào, độ phóng đại và phương thức
hình ảnh (trường sáng so với huỳnh quang). Tập dữ liệu được thiết kế để thách thức khả năng tổng
quát hóa của thuật toán đối với các biến thể này.

Mỗi hình ảnh được đại diện bởi một ImageId riêng. Các tệp thuộc về hình ảnh này được chứa
trong một thư mục có ImageId đó. Trong thư mục đó có hai thư mục con:

 Images : chứa tệp hình ảnh.


 Mask chứa các mask được phân đoạn của mỗi hạt nhân. Thư mục này chỉ được bao gồm trong
tập huấn luyện. Mỗi mask chứa một hạt nhân. Mask không được phép chồng lên nhau (không
có pixel nào thuộc hai mask).

Tập dữ liệu thứ hai sẽ chứa các hình ảnh từ các điều kiện thử nghiệm không nhìn thấy (không
bao gồm mask). Để ngăn chặn việc ghi nhãn bằng tay, nó cũng sẽ chứa những hình ảnh bị bỏ qua khi
cho điểm.

5.2. Kết quả thực tế

Số lượng ảnh trong tập huấn luyện là 670 ảnh có mask. Ta chia tập này thành 2 phần là tập
train và tập test. Tập test chiếm khoảng 10% (70 ảnh) để đánh giá kết quả mô hình. Tập train lại được
chia thành 2 phần gồm tập train trong qua trình huấn luận và tập val đánh giá kết quả trong suốt quá
trình train.

Các mô hình được áp dụng có số lượng tham số khác nhau, mô hình Double Unet và Unet plus
plus backbone VGG19 sử dụng các pretrained model nên số lượng tham số nhiều hơn hẳn. Unet là
mô hình đơn giản hơn cả.

27
Ảnh 28: Số lượng tham số của các mô hình

Kết quả trên tập test của các mô hình được biểu diễn trong đồ thị dưới. Về cơ bản các chỉ số
đều khá sát với con số các tác giả đưa ra, ngoại trừ mô hình Unet plus plus chưa được train đúng cách
(kết quả lệch khá nhiều so với tác giả bài báo).

Ảnh 29: Chỉ số Dice và IoU của các mô hình trên tập test

Sau đây là kết quả của một số ảnh được trích ra từ tập test

28
Ảnh 30: Ảnh test 24

Ảnh 31: Ảnh test 43

29
Ảnh 32: Ảnh test 60

Ảnh 33:Ảnh test 20

30
Chương 6. Kết luận và hướng phát triển

Có thể thấy rằng mặc dù đạt được hệ số Dice cũng như IoU khá cao nhưng đối với một số ảnh
bị mờ, kết quả vẫn còn rất thấp và nó là điều đáng lo ngại đối với xử lí ảnh y sinh. Việc không áp dụng
data augmentation cũng là một phần nguyên nhân dẫn đến việc kết quả bị kém đi đôi chút. Trong quá
trình training, ở những epoch cuối còn xảy ra hiện tượng overfitting. Trong các mô hình trên thì
Double Unet và ResUnet++ đạt kết quả tốt hơn cả. Trong khi Double Unet trình bày một ý tưởng đơn
giản với pretrained VGG19 nhưng đạt kết quả tốt thì ResUnet++ lại cho ta thấy một phương án tiếp
cận gọn gàng, ít tham số nhưng vẫn đảm bảo chất lượng. Ngoài ra, ResUnet block và Res Path trong
Multi Res Unet cũng là một điểm thú vị, hứa hẹn sẽ có nhiều ứng dụng sau này, đặc biệt là thêm các
khối vốn nằm trong lĩnh vực NLP. Trong tương lai, nếu có thể em sẽ đề xuất một mô hình kết hợp
những điểm mạnh của những mô hình trên để làm nên một mô hình tốt hơn.

31
Tài liệu tham khảo
1. Blog https://nttuan8.com/
2. Forum Machine learning cơ bản
3. Blog Khoa học dữ liệu
4. CS230 Standford
5. CS231 Standford
6. https://towardsdatascience.com/transposed-convolution-demystified-84ca81b4baba
7. Olaf Ronneberger, Philipp Fischer, Thomas Brox. U-Net: Convolutional Networks for
Biomedical Image Segmentation. 18 May 2015.
8. Debesh Jha, Michael A. Riegler, Dag Johansen, Pål Halvorsen, Håvard D. Johansen. DoubleU-
Net: A Deep Convolutional Neural Network for Medical Image Segmentation. 8 Jun 2020
9. Debesh Jha, Pia H. Smedsrud, Michael A. Riegler, Dag Johansen, Thomas de Lange, Pal
Halvorsen, Havard D. Johansen. ResUNet++: An Advanced Architecture for Medical Image
Segmentation. 16 Nov 2019.
10. Zhengxin Zhang, Qingjie Liu, Yunhong Wang. Road Extraction by Deep Residual U-Net. 29
Nov 2017.
11. Nabil Ibtehaz, M. Sohel Rahman. MultiResUNet : Rethinking the U-Net Architecture for
Multimodal Biomedical Image Segmentation. 11 Feb 2019
12. Ange Lou, Shuyue Guan, Murray Loew. DC-UNet: Rethinking the U-Net Architecture with
Dual Channel Efficient CNN for Medical Images Segmentation. 31 May 2020
13. Jie Hu, Li Shen, Samuel Albanie, Gang Sun, Enhua Wu. Squeeze-and-Excitation Networks. 5
Sep 2017 (v1), last revised 16 May 2019.
14. Zongwei Zhou, Md Mahfuzur Rahman Siddiquee, Nima Tajbakhsh, and Jianming Liang.
UNet++: A Nested U-Net Architecture for Medical Image Segmentation.
15. Zongwei Zhou, Md Mahfuzur Rahman Siddiquee, Nima Tajbakhsh, Jianming Liang. UNet++:
Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation. 28 Jan
2020.

32

You might also like