Professional Documents
Culture Documents
Chương 3
Chương 3
Chương 3
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.
Đ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 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.
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.
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.
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