Chương 3

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

Chương 3: Kết quả thực nghiệm

3.1 Môi trường thực nghiệm


Để thực hiện một chương trình phân loại bệnh ngoại da bằng Python, bạn cần
chuẩn bị các phần sau:
+ Dữ liệu huấn luyện: Bạn cần có một tập dữ liệu gồm các hình ảnh của các bệnh
ngoại da có nhãn (label). Tập dữ liệu này sẽ được sử dụng để huấn luyện mô hình
phân loại.
+ Mô hình học máy: Bạn có thể sử dụng các mô hình học máy khác nhau như
Mạng nơ-ron gia đình (Neural Networks), Học sâu (Deep Learning), Máy vector
hỗ trợ (Support Vector Machines), Rừng ngẫu nhiên (Random Forest), v.v. Bạn có
thể xây dựng mô hình từ đầu hoặc sử dụng mô hình đã được huấn luyện sẵn.
+ Thư viện hỗ trợ: Bạn cần import các thư viện cần thiết trong Python để xử lý
hình ảnh và huấn luyện mô hình. Một số thư viện phổ biến là NumPy (xử lý mảng
và ma trận), OpenCV (đọc và xử lý hình ảnh), scikit-learn (huấn luyện và đánh giá
mô hình), TensorFlow hoặc Keras (thiết kế và huấn luyện mô hình học sâu), v.v.
+ Tiền xử lý dữ liệu: Bạn cần thực hiện các bước tiền xử lý dữ liệu trước khi đưa
vào mô hình. Điều này có thể bao gồm: chuyển đổi kích thước hình ảnh thành kích
thước đầu vào của mô hình, chuẩn hóa dữ liệu, chia tập dữ liệu thành tập huấn
luyện và tập kiểm tra, v.v.
+ Huấn luyện mô hình: Bạn cần huấn luyện mô hình trên tập dữ liệu huấn luyện.
Điều này bao gồm việc đưa dữ liệu vào mô hình, cài đặt các tham số huấn luyện,
chạy quá trình huấn luyện và lưu lại mô hình đã được huấn luyện.
+ Đánh giá mô hình: Sau khi huấn luyện xong, bạn cần đánh giá hiệu suất của mô
hình trên tập dữ liệu kiểm tra. Điều này giúp bạn đánh giá khả năng phân loại và
hiệu suất của mô hình.
+ Phân loại dữ liệu mới: Khi mô hình đã được huấn luyện và đánh giá, bạn có thể
sử dụng nó để phân loại các hình ảnh bệnh ngoại da mới. Bạn cần đưa hình ảnh
mới vào mô hình đã huấn luyện và sau đó nhận được kết quả phân loại.
3.2 Xử lý dữ liệu và hình ảnh
Khi xử lý chương trình phân loại bệnh ngoại da bằng Python, bạn cần thực hiện
các bước xử lý dữ liệu và xử lý hình ảnh sau:
+ Đọc và xử lý hình ảnh: Sử dụng thư viện OpenCV hoặc Pillow để đọc và xử lý
hình ảnh. Bạn có thể thay đổi kích thước hình ảnh, chuyển đổi hình ảnh sang định
dạng phù hợp cho mô hình (ví dụ: RGB, grayscale), hoặc thực hiện các phép biến
đổi khác như cắt, xoay, lật, v.v.
+ Tiền xử lý dữ liệu: Trước khi đưa dữ liệu vào mô hình, bạn có thể cần thực hiện
các bước tiền xử lý như chuẩn hóa dữ liệu, chuyển đổi dữ liệu về định dạng phù
hợp, loại bỏ nhiễu hoặc các thông tin không cần thiết khác.
+ Chia tập dữ liệu: Phân chia tập dữ liệu thành tập huấn luyện và tập kiểm tra. Tập
huấn luyện sẽ được sử dụng để huấn luyện mô hình và tập kiểm tra được sử dụng
để đánh giá hiệu suất của mô hình. Thông thường, tập huấn luyện chiếm một phần
lớn dữ liệu (ví dụ: 80%) và tập kiểm tra chiếm phần còn lại (ví dụ: 20%).
+ Chuẩn bị dữ liệu đầu vào cho mô hình: Mô hình học máy thường yêu cầu đầu
vào có cùng kích thước. Vì vậy, bạn cần đảm bảo rằng tất cả các hình ảnh trong tập
dữ liệu được chuyển đổi về kích thước đầu vào của mô hình. Bạn có thể sử dụng
thư viện OpenCV hoặc Pillow để thực hiện việc này.
+ Huấn luyện mô hình: Sử dụng tập dữ liệu huấn luyện đã được chuẩn bị, bạn cần
huấn luyện mô hình. Điều này bao gồm đưa dữ liệu vào mô hình, cài đặt các tham
số huấn luyện (ví dụ: số lượng epoch, kích thước batch, tốc độ học, v.v.), và chạy
quá trình huấn luyện.
+ Đánh giá mô hình: Sau khi huấn luyện xong, bạn cần đánh giá hiệu suất của mô
hình trên tập dữ liệu kiểm tra. Đánh giá có thể được thực hiện bằng cách tính toán
các độ đo như độ chính xác (accuracy), độ phân loại chính xác (precision), độ phủ
(recall), và f1-score. Các thư viện như scikit-learn cung cấp các công cụ để tính
toán các độ đo này.
+ Phân loại dữ liệu mới: Khi mô hình đã được huấn luyện và đánh giá, bạn có thể
sử dụng nó để phân loại các hình ảnh bệnh ngoại da mới. Bạn đưa hình ảnh mới
vào mô hình và sau đó nhận được kết quả phân loại.
3.3 Kết quả chương trình
3.3.1 Huấn luyện
Chương trình huẩn luyện được viết bằng thư viện Keras để tạo và huấn luyện một
mô hình mạng nơ-ron tích chập (CNN) cho việc phân loại hình ảnh. Kiến trúc mô
hình bao gồm các lớp tích chập, lớp gộp cực đại, lớp dropout, lớp làm phẳng và
các lớp kết nối đầy đủ.
3.3.1.1 Nhập các thư viện cần thiết

Dòng mã này import các lớp và hàm từ module Keras để sử dụng trong việc xây
dựng mô hình CNN.

3.3.1.2 Định nghĩa một lớp Model và phương thức createAndSaveModel:

Đoạn mã này định nghĩa một lớp Model và phương thức createAndSaveModel để
tạo và lưu mô hình.
3.3.1.3 Tạo cấu trúc và mô hình:

Đoạn mã này tạo và cấu hình mô hình Sequential, một dạng mô hình tuyến tính
trong Keras.
- Các lớp Conv2D được sử dụng để thêm các lớp tích chập vào mô hình. Các lớp
MaxPooling2D được sử dụng để thêm các lớp gộp cực đại.
- Lớp Dropout được sử dụng để áp dụng kỹ thuật dropout để tránh overfitting.
- Lớp Flatten được sử dụng để làm phẳng đầu ra của các lớp trước đó thành một
vector 1D trước khi đưa vào các lớp kết nối đầy đủ.
- Các lớp Dense được sử dụng để thêm các lớp kết nối đầy đủ vào mô hình.
- Cuối cùng, mô hình được biên dịch bằng cách chọn optimizer là 'adam', loss
function là 'categorical_crossentropy' và metrics là 'accuracy'.
3.3.1.4 Tiền xử lý dữ liệu sử dụng ImageDataGenerator:

- Đoạn mã này sử dụng ImageDataGenerator để tiền xử lý dữ liệu hình ảnh.


- Dữ liệu huấn luyện và kiểm tra được tạo ra từ các thư mục chứa các hình ảnh
trong định dạng nhất định.
- Các tham số của ImageDataGenerator như rescale, shear_range, zoom_range và
horizontal_flip được sử dụng để mở rộng dữ liệu và chuẩn hóa dữ liệu hình ảnh.

3.3.1.5 Huấn luyện mô hình:

- Đoạn mã này sử dụng phương thức fit_generator để huấn luyện mô hình.


- Dữ liệu huấn luyện và kiểm tra đã được tạo ra từ ImageDataGenerator và được
truyền vào phương thức fit_generator.
- steps_per_epoch và epochs chỉ định số lần lặp và số epoch khi huấn luyện mô
hình.
- validation_data và validation_steps được sử dụng để đánh giá mô hình trên dữ
liệu kiểm tra.
3.3.1.6 Lưu kiến trúc mô hình và trọng số:

- Đoạn mã này lưu kiến trúc của mô hình dưới dạng file JSON và lưu trọng số của
mô hình dưới dạng file H5.
- Hàm to_json được sử dụng để chuyển đổi kiến trúc mô hình thành chuỗi JSON.
- Sau đó, kiến trúc mô hình được lưu vào file 'my_model.json'.
- Hàm save_weights được sử dụng để lưu trọng số của mô hình vào file
'weights.h5'.
3.3.2 Sử dụng mô hình để phân loại bệnh sau khi huấn luyện
3.3.2.1 Import các thư viện cần thiết

Đoạn này import các thư viện cần thiết cho việc phân loại bệnh da, bao
gồm operator, numpy, keras, image từ keras.preprocessing.

3.3.2.2 Định nghĩa lớp Disease:

Lớp Disease chứa một phương thức classify để phân loại bệnh da dựa trên một tệp
hình ảnh đầu vào.

3.3.2.3 Đọc mô hình từ tệp JSON và tải trọng số:

Trong đoạn này, mô hình được đọc từ tệp JSON (my_model.json) và tải trọng số
của mô hình (weights.h5). Mô hình được tạo ra bằng cách sử
dụng model_from_json, và sau đó trọng số được tải lên bằng load_weights.
3.3.2.4 Tải hình ảnh kiểm tra và chuẩn bị cho việc phân loại:

Hình ảnh kiểm tra được tải bằng image.load_img từ đường dẫn testImageFile và
được chuyển đổi thành mảng NumPy bằng image.img_to_array. Sau đó, hình ảnh
được mở rộng bằng np.expand_dims để phù hợp với kích thước đầu vào mong
muốn của mô hình.

3.3.2.5 Biên dịch và dự đoán bệnh ngoài da

Trước khi dự đoán, mô hình được biên dịch bằng cách chỉ định bộ tối ưu
hóa adam, hàm mất mát categorical_crossentropy và các độ đo accuracy. Sau đó,
mô hình được sử dụng để dự đoán bệnh da trên hình ảnh kiểm tra và kết quả được
lưu trong biến result.
3.3.2.6 Xếp hạng các dự đoán và trả về kết quả

Trong phần này, kết quả dự đoán được gán cho mỗi lớp bệnh da thông qua một từ
điển prediction. Kết quả được sắp xếp theo thứ tự giảm dần của xác suất dự đoán
bằng cách sử dụng sorted và operator.itemgetter. Cuối cùng, kết quả được trả về
dưới dạng danh sách các cặp

You might also like