Sử dụng Keras Sequential API để xây dựng mô hình CNN phân loại hình ảnh dạng stack các layer tuần tự.
Mã ví dụ
print("Đang tạo Sequential model...")
num_classes = 5
model = Sequential([
layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
layers.Conv2D(16, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(64, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(num_classes)
])
Kết quả
Đang tạo Sequential model
Giải thích
- Rescaling(1./255): Chuẩn hóa pixel từ [0,255] về [0,1]. Đặt ở layer đầu tiên đơn giản hóa deployment.
- 3 Conv2D blocks: Mỗi block có Conv2D (filters: 16→32→64, kernel 3x3, padding same, relu) + MaxPooling2D.
- Flatten: Chuyển tensor 3D (H,W,C) thành vector 1D.
- Dense(128, relu): Fully connected layer ẩn.
- Dense(5): Output layer 5 classes (không activation, logits).
- input_shape=(180,180,3): Hình ảnh 180x180 RGB.
- Tổng params: ~4 triệu (chủ yếu từ Dense 30976*128).
Mô hình này cơ bản, chưa tối ưu độ chính xác cao (cần data augmentation, dropout, transfer learning).