
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 12
NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG CHẨN ĐOÁN BỆNH GAN NHIỄM MỠ
RESEARCH AND BUILDING A SYSTEM FOR DIAGNOSIS OF FATTY LIVER DISEASE
Đặng Văn Khánh1,*, Chu Quốc Khánh1,
Thái Quốc Khánh1, Ngô Thị Thanh Hòa2
1Lớp CNTT 04 - K16, Khoa Công nghệ thông tin, Trường Đại học Công nghiệp Hà Nội
2Khoa Công nghệ thông tin, Trường Đại học Công nghiệp Hà Nội
*Email: dangvankhanh09022003@gmail.com
TÓM TẮT
Trong bài báo này, chúng tôi đã tìm cách để có thể xây dựng một ứng dụng phát hiện và chẩn đoán bệnh gan nhiễm
mỡ. Sau quá trình sàng lọc tất cả các mô hình truyền thống và mô hình học sâu, cuối cùng chúng tôi xác định chọn mô
hình CNN. CNN cho thấy hiệu suất tốt trong việc phân loại hình ảnh. Cụ thể ở đây là phân loại ảnh siêu âm gan, từ đó xác
định xem bệnh nhân có mắc bệnh gan nhiễm mỡ không. Mô hình có kết quả tương đối tốt, nó đã xác định thành công các
đối tượng mắc bệnh dựa trên mô hình đã được huấn luyện.
Từ khóa: Chẩn đoán bệnh gan nhiễm mỡ; Học sâu; CNN.
ABSTRACT
In this paper, we have found a method to build an application for detecting and diagnosing fatty liver diseases. After
screening all traditional models and deep learning models, we finally determined the selection of CNN models. CNN
performs well in image classification. Specifically, here is the classification of ultrasound liver to determine whether the
subjects have fatty liver diseases. The model had relatively good results, it successfully identified diseased subjects based
on the trained model.
Keywords: diagnosing fatty liver diseases; deep learning; CNN.
CHỮ VIẾT TẮT
AI Artificial intelligence Trí tuệ nhân tạo
CNN Convolutional Neural Networks Mạng nơ-ron tích chập
ANN Artificial Neural Network Mạng nơ-ron nhân tạo
1. GIỚI THIỆU
Bài báo này trình bày việc sử dụng mô hình mạng neural
tích chập (CNN) để phát hiện và chẩn đoán bệnh gan nhiễm
mỡ. Mô hình này đã cho thấy hiệu suất tốt xác định được
đối tượng có mắc bệnh gan nhiễm mỡ hay không. Việc sử
dụng các kỹ thuật học sâu để nhận dạng gan nhiễm mỡ được
coi là rất cần thiết vì trên thế giới số lượng người mắc bệnh
gan nhiễm mỡ rất lớn trong khi đó bệnh gan nhiễm mỡ có
thể dẫn đến xơ gan và chuyển biến thành ung thư gan vô
cùng nguy hiểm. Cùng với sự phát triển của phần cứng
mạnh mẽ cho phép tính toán hàng tỷ phép tính trong một
giây, mạng CNN trở nên phổ biến hơn và được áp dụng vào
nhiều lĩnh vực khác nhau của đời sống như lĩnh vực thị giác
máy tính, lĩnh vực tự động nhận dạng giọng nói, xử lý ngôn
ngữ tự nhiên, lĩnh vực y khoa,...
2. CÁC NGHIÊN CỨU LIÊN QUAN
Hệ thống phát hiện và phân loại bệnh gan nhiễm mỡ đã
và đang được phát triển bởi nhiều nhóm nghiên cứu từ nhiều
nơi trên thế giới bởi lợi ích mà nó mang lại trong việc sàng
lọc những người bị bệnh cũng như giảm áp lực cho các bác
sĩ chuyên khoa. Đã có rất nhiều bài toán được ứng dụng
trong hệ thống này, tuy nhiên hầu hết đều phát triển dựa trên
bài toán nhận diện hình ảnh.
Liver disease classification from ultrasound using multi-
scale CNN được thực hiện bởi Brown, L.G., Foran, D.J. và
cộng sự vào năm 2021. Mô hình sử dụng kiến trúc mạng
nơ-ron tích chập để phân loại bệnh gan nhiễm mỡ từ dữ liệu
của Hoa Kỳ. Mô hình được huấn luyện trên bộ dữ liệu được
thu thập từ 55 đối tượng và cho thấy độ chính xác phân loại
trung bình trên 90% sau 10 lần xác thực chéo. Mô hình sử

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 13dụng kiến trúc multi-scale đạt được những cải tiến đáng kể
so với kiến trúc mono-feature CNN.
Combined CNN and Pixel Feature Image for Fatty Liver
Ultrasound Image Classification được nghiên cứu bởi
Haijiang Zhu, Yutong Liu, Xiaoyu Gao và Lei Zhang. Kiến
trúc mạng được sử dụng chứa hai lớp tích chập, một lớp gộp
và một lớp được kết nối hoàn toàn. Nghiên cứu đã lấy dữ
liệu từ 16 người bao gồm 4 gan bình thường, 4 gan nhiễm
mỡ cấp thấp, 4 gan nhiễm mỡ cấp độ trung bình và 4 gan
nhiễm mỡ nặng. Từ đó chia thành 4 lớp để đào tạo model.
Mỗi lớp có khoảng 500 hình ảnh và con số này lên tới
khoảng 2000 hình ảnh đào tạo. Khi so sánh với một số mô
hình khác thì mô hình này đạt kết quả tương đối tốt với
Accuracy dao động từ 80% đến 90%.
Classification of Nonalcoholic Fatty Liver Texture
Using Convolution Neural Networks được nghiên cứu bởi
D Santhosh Reddy; R Bharath; P Rajalakshmi. Sử dụng
mạng thần kinh tích chập để phân loại kết cấu nhu mô gan
siêu âm thành bốn loại. Nghiên cứu sử dụng 1000 ảnh kết
cấu bao gồm 250 ảnh thuộc mỗi lớp gồm cấp độ 1, cấp độ
2, cấp độ 3 và mức độ Bình thường. Phân tích hiệu suất cho
thấy khung đề xuất phân loại kết cấu với độ chính xác
93,5% khi 80% và 20% dữ liệu được sử dụng cho đào tạo
và kiểm tra tương ứng.
3. PHƯƠNG PHÁP VÀ TƯ LIỆU
Trong phần này, báo cáo sẽ trình bày chi tiết việc xây
dựng mạng tích chập CNN. CNN là thuật toán xử lý ảnh
nên mục tiêu của mô hình là phát hiện và phân loại bệnh
gan nhiễm mỡ. CNN có thể xử lý ảnh với kích thước lớn và
chất lượng hình ảnh cao rất phù hợp với dữ liệu của chúng
ta là ảnh siêu âm. Ngoài ra, CNN còn có thể được huấn
luyện bằng GPU giúp tăng tốc độ huấn luyện lên rất nhiều
lần, với lượng dữ liệu đầu vào lớn thì điều này rất hữu ích.
3.1. Kiến trúc 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.
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. Trong
mô hình mạng truyền ngược (feedforward neural network)
thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra
trong các lớp tiếp theo.
Mô hình này gọi là mạng kết nối đầy đủ (fully connected
layer) hay mạng toàn vẹn (affine layer). Còn trong mô hình
CNNs thì ngược lại. 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à 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 đó.
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 (training) 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. Ví dụ trong tác vụ phân lớp ảnh, CNN sẽ cố
gắng tìm ra thông số tối ưu cho các filter tương ứng theo
thứ tự raw pixel > edges > shapes > facial > high-level
features. Layer cuối cùng được dùng để phân lớp ảnh.
3.1.1. 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 28×28 thì tương ứng đầu vào là một ma trận có
28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận. Trong
mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các
nơron đầu vào vào tầng ảnh.
Tuy nhiên trong CNN chúng ta không làm như vậy mà
chúng ta chỉ kết nối trong một vùng nhỏ của các nơ-ron đầu
vào như một filter có kích thước 5×5 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 nơ-ron ẩn sẽ học một bias. Mỗi một vùng 5×5 đấy
gọi là một trườ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:
Bước 1: Tạo ra nơ-ron ẩn đầu tiên trong lớp ẩn 1.
Hình 1. Tạo nơ-ron ẩn đầu tiên
Bước 2: Dịch filter qua bên phải một cột sẽ tạo được
nơ-ron ẩn thứ 2.
Hình 2. Feature map

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 14Vớ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, 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.
3.1.2. 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 nơ-ron.
Hình 3. Mô tả pooling layer
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 2×2.
Như vậy qua lớp Max Pooling thì số lượng nơ-ron 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. Chúng ta 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. Ngoài Max Pooling còn có L2 Pooling.
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 nơ-ron với số lượng tùy bài toán.
Hình 4. Mô tả 1 mạng tích chập CNN
2 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.
3.2. Tăng cường dữ liệu trong CNN
Để tăng cường dữ liệu chuẩn bị cho việc học sâu của mô
hình CNN, chúng tôi sử dụng lớp ImageDataGenerator của
thư viện Keras để tạo ra các phiên bản tăng cường của dữ
liệu hình ảnh trong quá trình huấn luyện. Việc tăng cường
dữ liệu như xoay, dịch chuyển, thu phóng, lật ngang,... giúp
tăng khả năng tổng quát hóa của mô hình, giảm thiểu hiện
tượng overfitting và cải thiện độ chính xác của mô hình khi
áp dụng vào dữ liệu mới.
3.3. Phương pháp triển khai
Để triển khai mô hình CNN để phân loại bệnh gan nhiễm
mỡ từ ảnh siêu âm. Đầu tiên chúng tôi sẽ chuẩn bị bộ dữ
liệu gồm hai tập ảnh siêu âm gan nhiễm mỡ và ảnh siêu âm
gan không nhiễm mỡ với số lượng khoảng 1500 ảnh với
mỗi tập, tổng cộng có hơn 3000 ảnh. Tất cả các ảnh đều có
độ chất lượng tốt. Tiếp theo, chúng tôi cài đặt các thư viện
như Tensorflow, OpenCV, Numpy, Pandas,… Sau đó sử
dụng ImageDataGenerator để tăng cường dữ liệu ảnh. Cụ
thể, các hàm chúng tôi tạo ra như: zoom_image,
rotate_image, flip_image, shear_image, shift_image để tạo
ra những biến thể mới từ các ảnh gốc. Hàm generation tạo
ra các biến thể mới của ảnh đầu vào và thêm vào tập dữ liệu
list_x, list_y tham số đầu vào. Sau đó, Chúng tôi dùng hàm
generation để tạo ra các biến thể của từng ảnh và sau đó
thêm chúng vào tập dữ liệu y_test, x_test, y_train, x_train,
x_val, y_val tương ứng. Chúng tôi sử dụng tensorboard để
trực quan hóa giá trị val_accuracy và val_loss để có thể
chọn ra model phù hợp với tập dữ liệu chúng tôi thu thập
được. Sau khi đã train qua nhiều model từ tini đến large thì
chúng tôi đã chọn được model phù hợp và có độ chính xác
và độ ổn định cao. Model gồm 3 lớp tích chập và 3 lớp max
pooling tiếp theo là lớp flattend và sau cùng là 3 lớp fully
connected.
● Lớp tích chập đầu tiên gồm 16 kernels kích thước 3 *
3 với hàm kích hoạt ‘relu’ với tham số input_shape = (200,
200, 1)
● Lớp thứ 2 là lớp maxpooling (2 * 2)
● Lớp thứ 3 là tích chập 32 kernels kích thước 3 * 3 với
hàm kích hoạt ‘relu’
● Lớp thứ 4 là lớp maxpooling (2 * 2)
● Lớp thứ 5 là tích chập 16 kernels kích thước 3 * 3 với
hàm kích hoạt ‘relu’
● Lớp thứ 6 là lớp maxpooling (2 * 2)
● Lớp thứ 7 là lớp flatten để dàn phẳng dữ liệu
● Tiếp theo là 3 lớp fully connected lớp đầu gồm 64 đơn
vị với hàm kích hoạt ‘relu’, lớp thứ 2 gồm 16 đơn vị và hàm
kích hoạt ‘relu’ và cuối cùng gồm 2 đơn vị và hàm kích hoạt
‘softmax’. Đồng thời model sử dụng thuật toán tối ưu hóa
“adam” và sử dụng hàm mất mát(loss) là “mse”.
Đồng thời chúng tôi cũng triển khai mô hình khử nhiễu
Autoencoder giúp tăng độ chính xác cho chương trình nhận
diện gan nhiễm mỡ qua ảnh siêu âm với những ảnh đầu vào
bị nhiễu.
Mô hình Autoencoder (AE): Mô hình này bao gồm hai
phần chính: phần encoder và phần decoder. Encoder: Phần
này ánh xạ ảnh đầu vào vào một không gian latent có số
chiều thấp hơn, giảm chiều dữ liệu và trích xuất các đặc
trưng quan trọng. Decoder: Phần này nhận các biểu diễn
trong không gian latent và tái tạo lại ảnh gốc từ các đặc
trưng đã học.

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 15Đầu vào và đầu ra:
● input_img: Đầu vào của mô hình là một ảnh xám
(grayscale) có kích thước (image_size, image_size, 1) với
image_size = 200.
● x: Đầu ra của mô hình là ảnh được tái tạo, có cùng kích
thước và cấu trúc với ảnh đầu vào.
Encoder:
● Sử dụng 2 lớp convolutional (Conv2D) với 128 filter
để trích xuất các đặc trưng phức tạp của ảnh.
● Sử dụng các lớp pooling (MaxPooling2D) xen kẽ với
các lớp convolutional để giảm kích thước của ảnh.
Decoder:
● Sử dụng các lớp convolutional để tái tạo ảnh từ các đặc
trưng đã học.
● Sử dụng các lớp upsampling (UpSampling2D) xen kẽ
các lớp convolutional với để tăng kích thước của ảnh tái tạo.
● Lớp convolutional cuối cùng với 1 filter, kích thước
filter là 3x3, hàm kích hoạt là sigmoid. Đây là lớp cuối cùng
của mô hình autoencoder và đưa ra dự đoán về ảnh đã được
phục hồi.
Tạo mô hình và biên dịch:
● model = Model(inputs=input_img, outputs=x): Tạo
mô hình từ đầu vào và đầu ra đã được xác định.
● model.compile(optimizer='adam',
loss='binary_crossentropy'): Biên dịch mô hình với trình tối
ưu hóa là Adam và hàm mất mát là binary cross-entropy,
phù hợp với bài toán tái tạo ảnh nhị phân.
4. THỰC NGHIỆM
4.1. Cơ sở dữ liệu
Hiện nay có rất nhiều dữ liệu về huấn luyện các tác vụ
khác nhau liên quan đến đối tượng là con người, cụ thể ở
đây là ảnh siêu âm gan. Ở đây chúng tôi dùng ảnh sưu tầm
từ trên Internet, dữ liệu từ kaggle.
https://www.kaggle.com/datasets/ignaciorlando/ussima
ndsegm/data
https://www.kaggle.com/search?q=fatty+liver+dataset
FileTypes%3Ajpg
4.2. Huấn luyện
Mô hình đều được huấn luyện trên Google Colab. Mô
hình huấn luyện trên một tập dữ liệu chuẩn bị sẵn các file
train, test, validation riêng. Thay đổi chu kỳ sau mỗi lần
train để kiểm tra độ fit của mô hình.
4.3. Đánh giá trên tập thực nghiệm
Sau nhiều lần huấn luyện thì hệ thống đã được nâng cao
độ chính xác lên đến 97,7%.
Hình 5. Độ chính xác của hệ thống.
4.4. Triển khai hệ thống
Sau khi đã hoàn thiện việc huấn luyện và thử nghiệm
các mô hình của các bài toán con, chúng tôi sẽ thực hiện
triển khai chạy hoàn chỉnh trên Google Colab. Yêu cầu về
phần cứng, chỉ cần máy tính đáp ứng tác vụ văn phòng một
cách mượt mà là được (CPU 2-4 nhân, GPU,…).
Truyền vào một ảnh từ máy tính để hiển thị kết quả chẩn
đoán.
Hình 6. Kết quả dự đoán
5. KẾT LUẬN
Nghiên cứu đã đưa ra một phương pháp sử dụng mạng
nơ ron tích chập CNN phát hiện và phân loại bệnh gan
nhiễm mỡ thông qua ảnh chụp siêu âm gan của bệnh nhân
áp dụng các kiến thức về trí tuệ nhân tạo và học sâu. Đồng
thời cũng đã tích hợp thêm khử nhiễu ảnh siêu âm. Đây sẽ
là cơ sở để các nghiên cứu về phân loại ảnh và AI nói chung
có thể được phát triển trong tương lai với những cải tiến về
tốc độ và độ chính xác cao.
TÀI LIỆU THAM KHẢO
[1]. Nguyễn Phương Nga, Trần Hùng Cường, 2021. Giáo trình trí tuệ nhân tạo. NXB Thống kê.
[2]. Nguyễn Hoàng Thái, Phù Trí Nghĩa, Dương Quốc Thanh, Nguyễn Thanh Hùng, Mai Quốc Trường, Trần Thị Bích
Phương, Cao Tấn Phát, Huỳnh Đăng Khoa, 2023. Nghiên cứu mô hình học sâu faster r-cnn để phát hiện và phân loại các
tổn thương khu trú thường gặp ở gan trên ảnh chụp cắt lớp vi tính. Tạp chí Y dược học Cần Thơ, số 57.
[3]. Hui Che, Lloyd G. Brown, David J. Foran, John L. Nosher, Iiker Hacihalilogluk, 2021. Liver disease classification
from ultrasound using multi-scale CNN. International Journal of Computer Assisted Radiology and Surgery, Volume 16,
pages 1537–1548.

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 16[4]. Haijiang Zhu, Yutong Liu, Xiaoyu Gao, Lei Zhang, 2022. Combined CNN and Pixel Feature Image for Fatty Liver
Ultrasound Image Classification. https://onlinelibrary.wiley.com/doi/10.1155/2022/9385734.
[5]. Lei Zhang, Haijiang Zhu and Tengfei Yang, 2019. Deep Neural Networks for fatty liver ultrasound images
classification. Chinese Control And Decision Conference (CCDC).
[6]. Trong N. Nguyen, Anthony S. Podkowa, Trevor H. Park, Rita J. Miller, Minh N. Do, Michael L. Oelze, 2021. Use
of a convolutional neural network and quantitative ultrasound for diagnosis of fatty liver. Ultrasound in Medicine &
Biology, Volume 47, Issue 3, Pages 556-568
[7]. D Santhosh Reddy, R Bharath, P Rajalakshmi, 2018. A Novel Computer-Aided Diagnosis Framework Using Deep
Learning for Classification of Fatty Liver Disease in Ultrasound Imaging. IEEE 20th International Conference on e-Health
Networking, Applications and Services (Healthcom).
[8]. Chou Tsung-Hsien, Yeh,Hsing-Jung, Chang Chun-Chao, Tang Jui-Hsiang, Kao Wei-Yu, Su I-Chia, Li Chien-
Hung, Chang Wei-Hao, Huang Chun-Kai, Sufriyana Herdiantri, Su Emily Chia-Yu, 2021. Deep learning for abdominal
ultrasound: A computer-aided diagnostic system for the severity of fatty liver. Journal of the Chinese Medical Association.

