Chọn mơ hình đào tạo

Một phần của tài liệu Phân loại phong cách thiết kế nội thất dùng học sâu và ứng dụng thực tế đồ án tốt nghiệp khoa đào tạo chất lượng cao ngành công nghệ thông tin (Trang 128 - 133)

CHƯƠNG 4 THỰC NGHIỆM VÀ KẾT QUẢ

4.5. Quy trình thực nghiệm lần 2

4.5.4. Chọn mơ hình đào tạo

4.5.4.1. Các mơ hình SOTAs với phương pháp học tập chuyển giao

Sau q trình thực nghiệm lần 1, nhóm thấy một số mơ hình đạt hiệu quả khá tốt trên tập dữ liệu. Chính vì vậy nhóm sẽ sử dụng lại các mơ hình đó và áp dụng thêm các kỹ thuật để cải thiện độ chính xác cho mơ hình. Cụ thể hơn nhóm sẽ sử dụng lại các SOTAs mơ hình sau:

• InceptionV3.

• DenseNet201.

• Xception.

Khi sử dụng các SOTAs, nhóm áp dụng kỹ thuật học tập chuyển giao (tranfer

learning) để tăng tốc q trình huấn luyện cũng như hiệu năng của mơ hình.

4.5.4.2. Các mơ hình tự tạo

Sau khi thực hiện quá trình huấn luyện nhiều lần và cũng mất rất nhiều thời gian để lựa chọn mơ hình tốt, nhóm đã thực hiện theo phương pháp tiếp cận như sau:

• Nhóm chia ra hai hướng với mỗi thành viên sẽ đảm nhiệm tạo mơ hình CNN với cấu trúc ban đầu có số lượng lớp (layers) và số lượng tham số (parameters) lớn, lớn đến gần đạt giới hạn mà nền tảng Kaggle cho phép hoặc cũng có thể cho ở một mức giới hạn nào đó.

• Mỗi thành viên sẽ tự huấn luyện mơ hình đã tạo trên mơ hình đã tạo trong số kỷ nguyên (epochs) nhất định và đánh giá xem độ hiệu quả cũng như tính khả thi khi áp dụng vào bài tốn phân loại.

• Khi mơ hình bị tốt q tốt trên tập huấn luyện nhưng lại khơng tốt đối với tập thẩm định lúc đó ta có thể đánh giá rằng mơ hình đã bị “overfiting” và khi đó ta sẽ bắt đầu thử giảm số lượng lớp (layers) hoặc số lượng tham số (parameters) xuống và thử huấn luyện đến khi nào đạt chỉ số tin cậy trên cả hai tập huấn luyện và thẩm định thì chuyển sang bước tiếp theo.

• Lưu ý: khi ta huấn luyện cần để ý đến vấn đề overfiting và underfiting. Và gần như tránh hoàn toàn với underfiting bởi vì đó là trường hợp xấu nhất. Nếu mơ hình ta rơi vào tình trạng overfiting q mức ta có thể giúp nó cải thiện cịn đối với underfiting thì khơng.

Trang | 112 Ngồi kinh nghiệm bản thân về các mơ hình CNN thì may mắn cũng là một phần giúp cho thời gian tìm ra được mơ hình phù hợp với dữ liệu ta hiện có. Nhóm cũng đã thực hiện phương pháp đề ra như trên và đã tìm ra được 2 mơ hình khác nhau có độ chính xác khá tốt có cấu trúc như sau:

Mơ hình thứ nhất (xem Hình 4.52):

Đầu tiên khởi tạo một mơ hình, với các lớp Convolutional, BatchNormalization, MaxPooling2D, Dropout, Flatten, Dense xếp chồng lên nhau:

• Lớp Convolution đầu tiên với 𝐼𝑛𝑝𝑢𝑡 𝑆ℎ𝑎𝑝𝑒 = (𝑁𝑜𝑛𝑒, 224, 224, 3) ứng với None là số lượng hình ảnh đưa vào huấn luyện, hai số kế tiếp là kích thước của ảnh (224, 224) , số cuối cùng là số kênh của ảnh ứng với 3 kênh RGB. Ngoài ra, lớp được tạo với 32 filters, với kích thước của mỗi filter là (3 × 3) và sử dụng hàm kích hoạt là ′𝑟𝑒𝑙𝑢′, paddding = ′𝑠𝑎𝑚𝑒′

• Lớp Convolution thứ 2 và 3 tương tự như lớp thứ nhất được tạo với 32 filters, với kích thước của mỗi filter là (3 × 3) và sử dụng hàm kích hoạt là ′𝑟𝑒𝑙𝑢′, paddding = ′𝑠𝑎𝑚𝑒′.

• Lớp kế tiếp sử dụng MaxPooling, lớp này có tác dụng giảm kích thước của ma trận input, với các pooling size (3 × 3)

• Sau đó 4 lớp Convolutional có số filters lần lượt là (180, 140, 100, 50) và có cùng kích thước của mỗi filter là (3 × 3) và sử dụng hàm kích hoạt là ′𝑟𝑒𝑙𝑢′, paddding = ′𝑠𝑎𝑚𝑒′ rồi sau đó qua lớp MaxPooling như trên.

• Lớp kế tiếp sử dụng Flatten để chuyển dữ liệu 2D sang 1D trước khi cho vào khối Fully Connected

• Trong khối Fully Connected bao gồm 4 lớp Dense ứng với số units lần lượt là (180, 100, 50, 5) sử dụng hàm kích hoạt ′𝑟𝑒𝑙𝑢′. Lớp Dense cuối cùng có số units = 5 ứng với 5 classes của bài toán đưa ra.

Trang | 113

Mơ hình thứ hai (xem Hình 4.53):

Với mơ hình thứ hai được chia làm 4 khối xếp chồng lên nhau theo thứ tự. Trong 3 khối đầu tiên bao gồm các lớp Convolutional, BatchNormalization, MaxPooling và Dropout, khối cuối cùng là khối Fully Connected bao gồm các lớp Flatten, Dense, BatchNormalization:

• Khối thứ nhất với lớp Convolutional đầu tiên với 𝐼𝑛𝑝𝑢𝑡 𝑆ℎ𝑎𝑝𝑒 = (𝑁𝑜𝑛𝑒, 224, 224, 3) ứng với None là số lượng hình ảnh đưa vào huấn luyện,

hai số kế tiếp là kích thước của ảnh (224, 224) , số cuối cùng là số kênh của ảnh ứng với 3 kênh RGB. Ngồi ra, lớp được tạo với 32 filters, với kích thước của mỗi filter là (3 × 3) và sử dụng hàm kích hoạt là ′𝑟𝑒𝑙𝑢′, paddding = ′𝑠𝑎𝑚𝑒′. Sau đó kết nối với lớp BatchNormalization, MaxPooling có tác dụng

giảm kích thước của ma trận input, với các pooling size (2 × 2) và cuối cùng là lớp Dropout với hệ số là 0.25

• Khối thứ hai tương tự như khối thứ nhất nhưng được tạo với 64 filters trong lớp Convolution, khơng có sử dụng 𝐼𝑛𝑝𝑢𝑡 𝑆ℎ𝑎𝑝𝑒 vì lấy đầu vào từ khối phía trước đó.

• Khối thứ ba tương tự khối thứ hai nhưng được tạo với 128 filters trong lớp Convolution

• Khối cuối cùng sử dụng lớp Flatten để chuyển dữ liệu 2D sang 1D trước khi cho vào lớp Dense. Lớp Dense có số units là 512 ứng với 512 node trong mạng NN, sau đó qua lớp BatchNormalization được kết nối với lớp Dropout với hệ số 0.5, cuối cùng kết nối với lớp Dense với số units là 5 ứng với 5 classes theo bài toán.

Trang | 114

Hình 4.52: Mơ hình đề xuất tự tạo thứ nhất.

Trang | 115 Code thực hiện trên ngôn ngữ pyhon:

Mơ hình thứ nhất model = Sequential() # Convolutional layer model.add(Conv2D(200,kernel_size=(3,3),activation='relu',input_shape=(224,224,3))) model.add(Conv2D(180,kernel_size=(3,3),activation='relu')) model.add(MaxPool2D(5,5)) model.add(Conv2D(180,kernel_size=(3,3),activation='relu')) model.add(Conv2D(140,kernel_size=(3,3),activation='relu')) model.add(Conv2D(100,kernel_size=(3,3),activation='relu')) model.add(Conv2D(50,kernel_size=(3,3),activation='relu')) model.add(MaxPool2D(5,5)) # FC layer model.add(Flatten()) model.add(Dense(180,activation='relu')) model.add(Dense(100,activation='relu')) model.add(Dense(50,activation='relu')) model.add(Dropout(rate=0.5)) model.add(Dense(5,activation='softmax')) model.summary() Mơ hình thứ hai model = Sequential() # Convolutional layer model.add(Conv2D(32,(3,3),activation='relu',input_shape=(224, 224, 3))) model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.25)) model.add(Conv2D(64,(3,3),activation='relu')) model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.25)) model.add(Conv2D(128,(3,3),activation='relu')) model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.25)) # FC layer model.add(Flatten()) model.add(Dense(512,activation='relu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense(5,activation='softmax')) model.summary()

Trang | 116

Một phần của tài liệu Phân loại phong cách thiết kế nội thất dùng học sâu và ứng dụng thực tế đồ án tốt nghiệp khoa đào tạo chất lượng cao ngành công nghệ thông tin (Trang 128 - 133)