1. Trang chủ
  2. » Giáo Dục - Đào Tạo

bài báo cáo này trình bày về việc xây dựng và huấn luyện một mạng nơ ron tích chập cnn để phân loại 5 loại hoa hoa cúc bồ công anh hoa hồng hoa hướng dương và tulip

10 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Mô hình được huấn luyện trên tập dữ liệu gồm 150 ảnh mỗi loại, với các kỹ thuật tăng cường dữ liệu.. Kỹ thuật tăng cường dữ liệu được sử dụng để tăng kích thước tập dữ liệu và cải thiện

Trang 1

BỘ GIÁO DỤC & ĐÀO TẠO

TRƯỜNG ĐẠI HỌC KINH TẾ TP.HCMViện 3I

 BÁO CÁO

MÔN HỌC: TRÍ TUỆ NHÂN TẠO

Giảng viên hướng dẫn: PGSTS - Nguyễn Trường ThịnhSinh viên thực hiện: Đinh Văn Quảng

Lớp: RA0001 MSSV:31231027412

TP.HCM, ngày 12 tháng 04 năm 2024

Trang 2

Tóm tắt:

Bài báo cáo này trình bày về việc xây dựng và huấn luyện một mạng nơ-ron tích chập (CNN) để phân loại 5 loại hoa: hoa cúc, bồ công anh, hoa hồng, hoa hướng dương và tulip Mô hình được huấn luyện trên tập dữ liệu gồm 150 ảnh mỗi loại, với các kỹ thuật tăng cường dữ liệu Sau khi huấn luyện, mô hình đạt độ chính xác 95% trên tập dữ liệu xác thực.

Mô hình:

Mô hình CNN được sử dụng trong bài báo cáo này có kiến trúc sau:Lớp 1: Tích chập với 32 bộ lọc kích thước 3x3, kích hoạt ReLU.Lớp 2: Max pooling 2x2.

Lớp 3: Dropout 0.2.

Lớp 4: Tích chập với 64 bộ lọc kích thước 3x3, kích hoạt ReLU.Lớp 5: Max pooling 2x2.

Lớp 6: Dropout 0.2.Lớp 7: Làm phẳng.

Lớp 8: Mật độ 224, kích hoạt ReLU.Lớp 9: Mật độ 5, kích hoạt softmax.

Huấn luyện:

Mô hình được huấn luyện trên tập dữ liệu gồm 150 ảnh mỗi loại hoa, chia thành 80% huấn luyện và 20% xác thực Kỹ thuật tăng cường dữ liệu được sử dụng để tăng kích thước tập dữ liệu và cải thiện khả năng khái quát của mô hình Các kỹ thuật tăng cường dữ liệu bao gồm:

Xoay ảnh ngẫu nhiên trong khoảng ±20 độ.

Cắt xéo ảnh theo tỷ lệ ngẫu nhiên trong khoảng ±0.2.Phóng to hoặc thu nhỏ ảnh ngẫu nhiên trong khoảng ±0.2.Lật ảnh theo chiều ngang với xác suất 50%.

Dịch chuyển kích thước ảnh gốc theo chiều ngang và dọc trong khoảng ±0.1 lần.Mô hình được huấn luyện trong 15 epochs với optimizer Adam và loss function categorical crossentropy.

Kết quả:

Sau khi huấn luyện, mô hình đạt độ chính xác khoảng 60% trên tập dữ liệu xác thực Mô hình có thể phân loại chính xác các loại hoa trong các điều kiện ánh sáng và góc chụp khác nhau.

Kết luận:

Mô hình CNN được trình bày trong bài báo cáo này có thể phân loại 5 loại hoa với độ chính xác không cao lắm Mô hình có thể được sử dụng để phân loại những hình ảnh đơn giản nổi bật dễ nhận dạng của các loài hoa.

Phần code:

import tensorflow as tf

from tensorflow.keras.preprocessing.image import ImageDataGenerator

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout

from tensorflow.keras.optimizers import Adam

# Tăng cường dữ liệu

train_datagen = ImageDataGenerator(

rescale=1./255, # Chuẩn hóa pixel của ảnh để có giá trị trong khoảng [0, 1]

rotation_range=20, # Xoay ảnh ngẫu nhiên trong khoảng ±20 độ

shear_range=0.2, # Cắt xéo ảnh theo tỷ lệ ngẫu nhiên trong khoảng ±0.2

zoom_range=0.2, # Phóng to hoặc thu nhỏ ảnh ngẫu nhiên trong khoảng±0.2

Trang 3

horizontal_flip=True, # Lật ảnh theo chiều ngang với xác suất 50%

width_shift_range=0.1, # Dịch chuyển kích thước ảnh gốc theo chiều ngang trong khoảng ±0.1 lần

height_shift_range=0.1) # Dịch chuyển kích thước ảnh gốc theo chiềudọc trong khoảng ±0.1 lần

test_datagen = ImageDataGenerator(rescale=1./255)

# Tạo trình tạo dữ liệu huấn luyện và xác thực

train_generator = train_datagen.flow_from_directory( '/content/drive/MyDrive/5loaihoa-train',

target_size=(224, 224), batch_size=32,

class_mode='categorical',)

validation_generator = test_datagen.flow_from_directory( '/content/drive/MyDrive/5loaihoa-test',

target_size=(224, 224), batch_size=32,

model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D((2, 2)))

model.add(Dense(224, activation='relu'))model.add(Dense(5, activation='softmax'))

# Huấn luyện mô hình

model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy'])

model.fit_generator(train_generator, epochs=15,

Epoch 2/15

24/24 [==============================] - 108s 4s/step - loss: 1.4716 - accuracy: 0.3267 - val_loss: 1.4438 - val_accuracy: 0.3133

Epoch 3/15

24/24 [==============================] - 102s 4s/step - loss: 1.2641 - accuracy: 0.4453 - val_loss: 1.4157 - val_accuracy: 0.4400

Epoch 4/15

24/24 [==============================] - 102s 4s/step - loss: 1.1811 - accuracy: 0.4880 - val_loss: 1.3905 - val_accuracy: 0.4600

Trang 4

Epoch 5/15

24/24 [==============================] - 103s 4s/step - loss: 1.1138 - accuracy: 0.5360 - val_loss: 1.3187 - val_accuracy: 0.4400

Epoch 6/15

24/24 [==============================] - 102s 4s/step - loss: 1.1087 - accuracy: 0.5533 - val_loss: 1.3523 - val_accuracy: 0.4400

Epoch 7/15

24/24 [==============================] - 102s 4s/step - loss: 1.0438 - accuracy: 0.5840 - val_loss: 1.2730 - val_accuracy: 0.4733

Epoch 8/15

24/24 [==============================] - 108s 4s/step - loss: 0.9447 - accuracy: 0.6213 - val_loss: 1.1968 - val_accuracy: 0.5333

Epoch 9/15

24/24 [==============================] - 103s 4s/step - loss: 0.8784 - accuracy: 0.6587 - val_loss: 1.2132 - val_accuracy: 0.5733

Epoch 10/15

24/24 [==============================] - 101s 4s/step - loss: 0.8678 - accuracy: 0.6467 - val_loss: 1.2207 - val_accuracy: 0.5467

Epoch 11/15

24/24 [==============================] - 101s 4s/step - loss: 0.8358 - accuracy: 0.6667 - val_loss: 1.1548 - val_accuracy: 0.5800

Epoch 12/15

24/24 [==============================] - 100s 4s/step - loss: 0.7792 - accuracy: 0.6933 - val_loss: 1.1114 - val_accuracy: 0.5533

Epoch 13/15

24/24 [==============================] - 109s 5s/step - loss: 0.7858 - accuracy: 0.6747 - val_loss: 1.2075 - val_accuracy: 0.5400

Epoch 14/15

24/24 [==============================] - 106s 4s/step - loss: 0.7153 - accuracy: 0.7293 - val_loss: 1.0629 - val_accuracy: 0.6267

Epoch 15/15

24/24 [==============================] - 107s 5s/step - loss: 0.6702 - accuracy: 0.7387 - val_loss: 1.0630 - val_accuracy: 0.5800

Kết quả test:

Trang 5

Tóm tắt:

Bài báo cáo này trình bày về việc xây dựng và huấn luyện một mạng nơ-ron tích chập (CNN) để phân loại 5 món ăn: bún bò, xôi, bánh xeo, bánh lọc và bánh mì Mô hình được huấn luyện trên tập dữ liệu gồm 70 ảnh mỗi loại, với các kỹ thuật tăng cường dữ liệu Sau khi huấn luyện, mô hình đạt độ chính xác khoảng 50% trên tập dữ liệu xác thực.

Mô hình:

Mô hình CNN được sử dụng trong bài báo cáo này có kiến trúc sau:Lớp 1: Tích chập với 32 bộ lọc kích thước 3x3, kích hoạt ReLU.Lớp 2: Max pooling 2x2.

Lớp 3: Dropout 0.2.

Lớp 4: Tích chập với 64 bộ lọc kích thước 3x3, kích hoạt ReLU.Lớp 5: Max pooling 2x2.

Lớp 6: Dropout 0.2.Lớp 7: Làm phẳng.

Lớp 8: Mật độ 224, kích hoạt ReLU.Lớp 9: Mật độ 5, kích hoạt softmax.

Huấn luyện:

Mô hình được huấn luyện trên tập dữ liệu gồm 70 ảnh mỗi món ăn, chia thành 50 ảnh để huấn luyện và 20 ảnh xác thực Kỹ thuật tăng cường dữ liệu được sử dụng để tăng kích thước tập dữ liệu và cải thiện khả năng khái quát của mô hình Các kỹ thuật tăng cường dữ liệu bao gồm:

Xoay ảnh ngẫu nhiên trong khoảng ±20 độ.

Cắt xéo ảnh theo tỷ lệ ngẫu nhiên trong khoảng ±0.2.Phóng to hoặc thu nhỏ ảnh ngẫu nhiên trong khoảng ±0.2.Lật ảnh theo chiều ngang với xác suất 50%.

Dịch chuyển kích thước ảnh gốc theo chiều ngang và dọc trong khoảng ±0.1 lần.Mô hình được huấn luyện trong 30 epochs với optimizer Adam và loss function categorical crossentropy.

Kết quả:

Sau khi huấn luyện, mô hình đạt độ chính xác khoảng 50% trên tập dữ liệu xác thực Mô hình có thể phân loại chính xác các món ăn trong các điều kiện ánh sáng và góc chụp khác nhau.

Kết luận:

Mô hình CNN được trình bày trong bài báo cáo này có thể phân loại 5 món ăn với độ chính xác không cao lắm Mô hình có thể được sử dụng để phân loại những hình ảnh đơn giản nổi bật dễ nhận dạng của các món ăn.

Phần code:

import tensorflow as tf

from tensorflow.keras.preprocessing.image import ImageDataGenerator

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout

from tensorflow.keras.optimizers import Adam

# Tăng cường dữ liệu

train_datagen = ImageDataGenerator(

rescale=1./255, # Chuẩn hóa pixel của ảnh để có giá trị trong khoảng [0, 1]

rotation_range=20, # Xoay ảnh ngẫu nhiên trong khoảng ±20 độ

shear_range=0.2, # Cắt xéo ảnh theo tỷ lệ ngẫu nhiên trong khoảng ±0.2

zoom_range=0.2, # Phóng to hoặc thu nhỏ ảnh ngẫu nhiên trong khoảng±0.2

Trang 6

horizontal_flip=True, # Lật ảnh theo chiều ngang với xác suất 50%

width_shift_range=0.1, # Dịch chuyển kích thước ảnh gốc theo chiều ngang trong khoảng ±0.1 lần

height_shift_range=0.1) # Dịch chuyển kích thước ảnh gốc theo chiềudọc trong khoảng ±0.1 lần

test_datagen = ImageDataGenerator(rescale=1./255)

# Tạo trình tạo dữ liệu huấn luyện và xác thực

train_generator = train_datagen.flow_from_directory( '/content/drive/MyDrive/5 món ăn/train',

target_size=(224, 224), batch_size=32,

class_mode='categorical',)

validation_generator = test_datagen.flow_from_directory( '/content/drive/MyDrive/5 món ăn/test',

target_size=(224, 224), batch_size=32,

model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D((2, 2)))

model.add(Dense(224, activation='relu'))model.add(Dense(5, activation='softmax'))

# Huấn luyện mô hình

model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy'])

model.fit_generator(train_generator, epochs=30,

Epoch 2/30

8/8 [==============================] - 31s 4s/step - loss: 2.0405 - accuracy: 0.2000 - val_loss: 1.6096 - val_accuracy: 0.1800

Epoch 3/30

8/8 [==============================] - 31s 4s/step - loss: 1.6108 - accuracy: 0.2480 - val_loss: 1.6095 - val_accuracy: 0.2000

Epoch 4/30

8/8 [==============================] - 33s 4s/step - loss: 1.6087 - accuracy: 0.2760 - val_loss: 1.6094 - val_accuracy: 0.2000

Trang 7

Epoch 5/30

8/8 [==============================] - 31s 4s/step - loss: 1.6041 - accuracy: 0.2520 - val_loss: 1.6086 - val_accuracy: 0.2000

Epoch 6/30

8/8 [==============================] - 31s 4s/step - loss: 1.6006 - accuracy: 0.1720 - val_loss: 1.6045 - val_accuracy: 0.2400

Epoch 7/30

8/8 [==============================] - 31s 4s/step - loss: 1.5686 - accuracy: 0.3000 - val_loss: 1.5901 - val_accuracy: 0.2100

Epoch 8/30

8/8 [==============================] - 31s 4s/step - loss: 1.4192 - accuracy: 0.3760 - val_loss: 1.3902 - val_accuracy: 0.3400

Epoch 9/30

8/8 [==============================] - 31s 4s/step - loss: 1.4639 - accuracy: 0.3440 - val_loss: 1.4426 - val_accuracy: 0.4100

Epoch 10/30

8/8 [==============================] - 31s 4s/step - loss: 1.3991 - accuracy: 0.3880 - val_loss: 1.4948 - val_accuracy: 0.3100

Epoch 11/30

8/8 [==============================] - 30s 4s/step - loss: 1.3630 - accuracy: 0.3960 - val_loss: 1.3747 - val_accuracy: 0.3300

Epoch 12/30

8/8 [==============================] - 31s 4s/step - loss: 1.3237 - accuracy: 0.4360 - val_loss: 1.3676 - val_accuracy: 0.4100

Epoch 13/30

8/8 [==============================] - 32s 4s/step - loss: 1.2530 - accuracy: 0.4720 - val_loss: 1.3983 - val_accuracy: 0.3200

Epoch 14/30

8/8 [==============================] - 34s 4s/step - loss: 1.2039 - accuracy: 0.4720 - val_loss: 1.4362 - val_accuracy: 0.3800

Epoch 15/30

8/8 [==============================] - 31s 4s/step - loss: 1.1679 - accuracy: 0.5200 - val_loss: 1.3018 - val_accuracy: 0.3900

Epoch 16/30

8/8 [==============================] - 31s 4s/step - loss: 1.2174 - accuracy: 0.5160 - val_loss: 1.2863 - val_accuracy: 0.4000

Epoch 17/30

8/8 [==============================] - 31s 4s/step - loss: 1.2085 - accuracy: 0.4720 - val_loss: 1.3153 - val_accuracy: 0.4700

Epoch 18/30

8/8 [==============================] - 31s 4s/step - loss: 1.1483 - accuracy: 0.5560 - val_loss: 1.2312 - val_accuracy: 0.4700

Epoch 19/30

8/8 [==============================] - 31s 4s/step - loss: 1.1854 - accuracy: 0.5320 - val_loss: 1.2872 - val_accuracy: 0.4600

Epoch 20/30

8/8 [==============================] - 31s 4s/step - loss: 1.1144 - accuracy: 0.5840 - val_loss: 1.4077 - val_accuracy: 0.4000

Epoch 21/30

8/8 [==============================] - 31s 4s/step - loss: 1.1417 - accuracy: 0.5280 - val_loss: 1.2884 - val_accuracy: 0.4300

Epoch 22/30

8/8 [==============================] - 31s 4s/step - loss: 1.0640 - accuracy: 0.5600 - val_loss: 1.2153 - val_accuracy: 0.4900

Epoch 23/30

8/8 [==============================] - 33s 4s/step - loss: 1.0879 - accuracy: 0.5480 - val_loss: 1.2543 - val_accuracy: 0.4600

Epoch 24/30

8/8 [==============================] - 31s 4s/step - loss: 1.0060 - accuracy: 0.6120 - val_loss: 1.2250 - val_accuracy: 0.4900

Epoch 25/30

8/8 [==============================] - 31s 4s/step - loss: 1.0074 - accuracy: 0.6080 - val_loss: 1.2634 - val_accuracy: 0.5000

Epoch 26/30

Trang 8

8/8 [==============================] - 32s 4s/step - loss: 0.9486 - accuracy: 0.6280 - val_loss: 1.2168 - val_accuracy: 0.5300

Epoch 27/30

8/8 [==============================] - 31s 4s/step - loss: 0.8312 - accuracy: 0.6600 - val_loss: 1.3095 - val_accuracy: 0.4900

Epoch 28/30

8/8 [==============================] - 31s 4s/step - loss: 1.0551 - accuracy: 0.5680 - val_loss: 1.2568 - val_accuracy: 0.4800

Epoch 29/30

8/8 [==============================] - 34s 4s/step - loss: 0.9473 - accuracy: 0.6160 - val_loss: 1.2170 - val_accuracy: 0.4900

Epoch 30/30

8/8 [==============================] - 31s 4s/step - loss: 0.8895 - accuracy: 0.6680 - val_loss: 1.2197 - val_accuracy: 0.4900

Kết quả test:

Trang 9

Tóm tắt:

Bài báo cáo này trình bày về việc xây dựng và huấn luyện một mạng nơ-ron tích chập (CNN) để phân loại 5 mệnh giá tiền Việt Nam: 5 nghìn đồng, 10 nghìn đồng, 50 nghìnđồng, 100 nghìn đồng và 200 nghìn đồng Mô hình được huấn luyện trên tập dữ liệu gồm 10 ảnh mỗi loại, với các kỹ thuật tăng cường dữ liệu Sau khi huấn luyện, mô hình đạt độ chính xác khoảng 50% trên tập dữ liệu xác thực.

Mô hình: ( Tương tự như trên )Huấn luyện:

Mô hình được huấn luyện trong 15 epochs với optimizer Adam và loss function categorical crossentropy.

Epoch 2/15

2/2 [==============================] - 6s 3s/step - loss: 61.7114 - accuracy: 0.1750 - val_loss: 21.7954 - val_accuracy: 0.1111

Epoch 3/15

2/2 [==============================] - 5s 2s/step - loss: 38.3014 - accuracy: 0.2250 - val_loss: 7.9967 - val_accuracy: 0.1111

Epoch 4/15

2/2 [==============================] - 7s 2s/step - loss: 15.4688 - accuracy: 0.2000 - val_loss: 1.6862 - val_accuracy: 0.1111

Epoch 5/15

2/2 [==============================] - 5s 3s/step - loss: 2.8107 - accuracy: 0.2500 - val_loss: 1.5632 - val_accuracy: 0.1111

Epoch 6/15

2/2 [==============================] - 7s 4s/step - loss: 2.6029 - accuracy: 0.2000 - val_loss: 1.5505 - val_accuracy: 0.3889

Epoch 7/15

2/2 [==============================] - 5s 3s/step - loss: 1.7788 - accuracy: 0.2000 - val_loss: 1.5773 - val_accuracy: 0.6667

Epoch 8/15

2/2 [==============================] - 6s 2s/step - loss: 1.6080 - accuracy: 0.3250 - val_loss: 1.5935 - val_accuracy: 0.6667

Epoch 9/15

2/2 [==============================] - 7s 4s/step - loss: 1.5892 - accuracy: 0.2000 - val_loss: 1.6002 - val_accuracy: 0.5556

Epoch 10/15

2/2 [==============================] - 5s 2s/step - loss: 1.5854 - accuracy: 0.2250 - val_loss: 1.5998 - val_accuracy: 0.4444

Epoch 11/15

2/2 [==============================] - 7s 2s/step - loss: 1.5799 - accuracy: 0.2500 - val_loss: 1.5931 - val_accuracy: 0.3889

Epoch 12/15

2/2 [==============================] - 5s 3s/step - loss: 1.5540 - accuracy: 0.2250 - val_loss: 1.5769 - val_accuracy: 0.6111

Epoch 13/15

2/2 [==============================] - 7s 5s/step - loss: 1.5510 - accuracy: 0.2250 - val_loss: 1.5508 - val_accuracy: 0.5556

Epoch 14/15

2/2 [==============================] - 6s 2s/step - loss: 1.5350 - accuracy: 0.2750 - val_loss: 1.5387 - val_accuracy: 0.5556

Epoch 15/15

Trang 10

2/2 [==============================] - 5s 2s/step - loss: 1.5041 - accuracy: 0.3750 - val_loss: 1.4193 - val_accuracy: 0.5556

Kết quả test:

Ngày đăng: 22/07/2024, 12:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w