Trong thế giới hiện đại, trí tuệ nhân tạo (Artificial Intelligence - AI) được coi là một trong những lĩnh vực nghiên cứu phát triển mạnh mẽ nhất. Trong đó, mạng lưới thần kinh nhân tạo (Artificial Neural Network - ANN) đóng vai trò quan trọng để giải quyết nhiều vấn đề của thế giới thực, trong đó có việc nhận diện hình ảnh.
Keras và Tensorflow là hai công cụ quan trọng được sử dụng để xây dựng mô hình ANN. Trong bài viết này, chúng ta sẽ tìm hiểu cách xây dựng một mô hình ANN để nhận diện hình ảnh sử dụng Keras và Tensorflow.
#1. Keras và Tensorflow
Keras là một thư viện mã nguồn mở cung cấp các công cụ để xây dựng mô hình ANN. Nó được viết bằng ngôn ngữ Python và được tối ưu hóa để sử dụng với thư viện Tensorflow. Tensorflow là một thư viện mạnh mẽ để xây dựng mô hình học sâu được phát triển bởi Google.
Keras là một thư viện rất đơn giản và dễ sử dụng, nhưng cũng rất mạnh mẽ. Nó cung cấp cho người sử dụng nhiều tính năng như mô hình hoá dữ liệu, tối ưu hóa mô hình, chạy mô hình và kiểm tra kết quả.
#2. Xây dựng mô hình ANN để nhận diện hình ảnh
Chúng ta sẽ sử dụng tập dữ liệu MNIST để xây dựng mô hình ANN. MNIST là tập dữ liệu chứa 70.000 hình ảnh chữ số viết tay từ 0 đến 9 và được sử dụng để kiểm tra hiệu suất của các mô hình nhận diện hình ảnh.
Bước 1: Import thư viện
Chúng ta sẽ bắt đầu bằng việc nhập thư viện cần thiết như sau:
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
Bước 2: Chuẩn bị dữ liệu
Chúng ta sẽ tải tập dữ liệu MNIST từ keras.datasets và chuẩn bị chúng để đưa vào mô hình ANN như sau:
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#Reshape và tiêu chuẩn hóa dữ liệu
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
input_shape = (28, 28, 1)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
#Chuyển đổi label thành one-hot vector
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
Bước 3: Xây dựng mô hình ANN
Chúng ta bắt đầu xây dựng mô hình ANN cho việc nhận diện hình ảnh như sau:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
Ở đây, chúng ta sử dụng hai lớp Conv2D để trích xuất đặc trưng từ các hình ảnh và một lớp MaxPooling2D để giảm kích thước của các đặc trưng. Sau đó chúng ta sử dụng hai lớp Dropout để tránh overfitting và một lớp Flatten để chuyển đổi các đặc trưng thành một vector. Cuối cùng, chúng ta sử dụng hai lớp Dense để đưa ra dự đoán và sử dụng hàm softmax để đưa ra xác suất của mỗi lớp.
Bước 4: Compile và huấn luyện mô hình
Chúng ta sẽ compile và huấn luyện mô hình ANN như sau:
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=128,
epochs=10,
verbose=1,
validation_data=(x_test, y_test))
Ở đây, chúng ta sử dụng hàm loss là categorical_crossentropy và tối ưu hóa bằng phương pháp Adadelta. Sau đó chúng ta huấn luyện mô hình trong 10 epoch và kiểm tra hiệu suất trên tập dữ liệu x_test.
Bước 5: Đánh giá và kiểm tra mô hình
Cuối cùng, chúng ta sẽ đánh giá và kiểm tra mô hình ANN như sau:
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
Kết quả sẽ cho thấy độ chính xác của mô hình ANN trên tập dữ liệu kiểm tra.
#3. Kết luận
Như vậy, chúng ta đã xây dựng một mô hình ANN để nhận diện hình ảnh sử dụng Keras và Tensorflow. Keras là một thư viện mã nguồn mở rất mạnh mẽ để xây dựng mô hình ANN và sử dụng TensorFlow để tối ưu hóa mô hình. Chúng ta đã sử dụng tập dữ liệu MNIST để huấn luyện và kiểm tra hiệu suất của mô hình ANN. Mô hình ANN là một công cụ quan trọng để giải quyết các vấn đề phức tạp trong thế giới thực, đặc biệt là vấn đề nhận diện hình ảnh.
- Mật khẩu giải nén: tailieuhay.download (nếu có)