Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Tạo mô hình phân loại ảnh chó mèo với TensorFlow
Hướng Dẫn Đồ ÁnLập Trình AI

Tạo mô hình phân loại ảnh chó mèo với TensorFlow

Chia sẻ
Chia sẻ

Phân loại hình ảnh là một bài toán cơ bản nhưng đóng vai trò quan trọng trong lĩnh vực trí tuệ nhân tạo. Một ví dụ phổ biến là phân loại ảnh chó mèo, nơi một mô hình học sâu sẽ được huấn luyện để nhận biết và phân loại chính xác các bức ảnh thành hai nhóm. Đây là một bài tập lý tưởng để làm quen với mạng nơ-ron tích chập (CNN) và xử lý dữ liệu hình ảnh trước khi tiến đến các bài toán thị giác máy tính phức tạp hơn.

Nếu bạn mới bắt đầu với Machine Learning, có thể tham khảo thêm bài viết Hướng dẫn xây dựng mô hình dự đoán điểm thi bằng Machine Learning để nắm vững các kiến thức nền tảng về xử lý dữ liệu và huấn luyện mô hình. Bài viết này sẽ tiếp tục đưa bạn vào thế giới học sâu bằng cách hướng dẫn xây dựng mô hình CNN phân loại ảnh chó mèo với TensorFlow, từ tải dữ liệu đến huấn luyện và kiểm tra kết quả trên Google Colab.

Chuẩn bị môi trường và cài đặt thư viện

Google Colab giúp bạn bắt đầu nhanh mà không cần cài đặt phức tạp. Truy cập https://colab.research.google.com và tạo một notebook mới.

TensorFlow đã được cài sẵn trên Colab, nhưng nếu bạn dùng Jupyter Notebook thì cần chạy lệnh sau để cài đặt:

!pip install tensorflow matplotlib numpy

Các thư viện sử dụng trong bài viết bao gồm:

  • TensorFlow: xây dựng và huấn luyện mô hình học sâu

  • Matplotlib: vẽ đồ thị kết quả

  • NumPy: xử lý dữ liệu số

Tải và xử lý dữ liệu

Chúng ta sẽ sử dụng bộ dữ liệu Dogs vs Cats của Kaggle. Bộ dữ liệu này chứa hàng nghìn hình ảnh chó và mèo đã được gắn nhãn.

Để tải dữ liệu từ Kaggle, bạn cần:

  1. Đăng nhập vào https://www.kaggle.com
  2. Vào phần Account > API > Create New API Token. Tải file kaggle.json.
  3. Tải file lên Colab và thiết lập Kaggle API:
from google.colab import files
files.upload()  # chọn kaggle.json
!mkdir -p ~/.kaggle
!mv kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json
!kaggle competitions download -c dogs-vs-cats
!unzip dogs-vs-cats.zip -d dataset
!unzip dataset/train.zip -d dataset/train

Tiền xử lý dữ liệu hình ảnh

Khi làm việc với ảnh, chúng ta cần chuẩn hóa kích thước và tỷ lệ pixel để phù hợp với mô hình. Keras có sẵn công cụ ImageDataGenerator giúp thực hiện dễ dàng.

from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)

train_generator = train_datagen.flow_from_directory(
    'dataset/train',
    target_size=(150, 150),
    batch_size=32,
    class_mode='binary',
    subset='training'
)

validation_generator = train_datagen.flow_from_directory(
    'dataset/train',
    target_size=(150, 150),
    batch_size=32,
    class_mode='binary',
    subset='validation'
)

Xây dựng mô hình CNN bằng TensorFlow

Chúng ta sẽ xây dựng một mô hình CNN đơn giản gồm các lớp Conv2D và MaxPooling2D, sau đó là các lớp Dense để phân loại nhị phân.

import tensorflow as tf
from tensorflow.keras import layers, models

model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
    layers.MaxPooling2D(2, 2),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D(2, 2),
    layers.Conv2D(128, (3, 3), activation='relu'),
    layers.MaxPooling2D(2, 2),
    layers.Flatten(),
    layers.Dense(512, activation='relu'),
    layers.Dense(1, activation='sigmoid')  # Phân loại nhị phân
])

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

Huấn luyện mô hình

Tiến hành huấn luyện mô hình trên tập dữ liệu đã chuẩn bị.

history = model.fit(
    train_generator,
    steps_per_epoch=train_generator.samples // 32,
    epochs=10,
    validation_data=validation_generator,
    validation_steps=validation_generator.samples // 32
)

Đánh giá và trực quan hóa kết quả

Sau khi huấn luyện, bạn có thể kiểm tra độ chính xác của mô hình và vẽ đồ thị để theo dõi quá trình học.

import matplotlib.pyplot as plt

acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
loss = history.history['loss']
val_loss = history.history['val_loss']

epochs = range(len(acc))

plt.plot(epochs, acc, label='Training accuracy')
plt.plot(epochs, val_acc, label='Validation accuracy')
plt.title('Accuracy')
plt.legend()
plt.show()

plt.plot(epochs, loss, label='Training loss')
plt.plot(epochs, val_loss, label='Validation loss')
plt.title('Loss')
plt.legend()
plt.show()

Kiểm tra mô hình với ảnh mới

Để kiểm tra, hãy thử tải một ảnh chó hoặc mèo bất kỳ từ máy bạn lên Colab và dự đoán.

from tensorflow.keras.preprocessing import image
import numpy as np

img_path = 'path_to_your_image.jpg'
img = image.load_img(img_path, target_size=(150, 150))
img_array = image.img_to_array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)

prediction = model.predict(img_array)
print('Đây là một', 'chó' if prediction[0][0] > 0.5 else 'mèo')

Kết luận

Mô hình CNN bạn vừa xây dựng đã có thể phân loại ảnh chó và mèo với độ chính xác khá cao trên bộ dữ liệu Dogs vs Cats. Đây là một bước khởi đầu tuyệt vời để khám phá các bài toán phức tạp hơn trong lĩnh vực Computer Vision như nhận diện nhiều lớp, phát hiện đối tượng (Object Detection), hoặc phân đoạn ảnh (Image Segmentation).

Bạn có thể nâng cấp mô hình bằng cách sử dụng mạng sâu hơn, áp dụng kỹ thuật Transfer Learning với các mô hình nổi tiếng như VGG16 hoặc ResNet50 để đạt kết quả tốt hơn.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!