Xử lý ảnh và video

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

III.

Thiết kế hệ thống
1. Mô hình hệ thống
Dựa trên mô hình mạng CNN, nhóm tạo thành một chương trình có chức năng chính
là nhân dạng 4 loại hoa quả cơ bản. Mô hình sẽ nhận ảnh bắt từ các frame của camera
và tiến hành xử lý nhận diện và cho ra kết quả.

2. Thực hiện
2.1. Chuẩn bị dữ liệu
Thu thập hình ảnh của 4 loại hoa quả (mỗi loại 100-200 ảnh). Chia các hình ảnh đã
thu thập thành 2 phần: train (chiếm 80%), test (20% còn lại)

Thực hiện gán nhãn cho các ảnh bằng công cụ labelImg
2.2. Training Data
Thực hiện train dữ liệu thông qua Google Colab
 Import các thư viện cần thiết để thực hiện training

 Load các tệp dữ liệu vào mô hình


 Xử lý dữ liệu đầu vào: Tạo một bộ sinh dữ liệu hình ảnh (ImageDataGenerator)
trong TensorFlow, không sử dụng tăng cường dữ liệu (Data Augmentation). Nó
chuẩn bị dữ liệu cho việc huấn luyện và kiểm định mô hình từ thư mục Train và
Test đã chuẩn bị trước đó, với 80% dữ liệu cho huấn luyện và 20% cho kiểm
định. Mỗi hình ảnh sẽ được thay đổi kích thước thành (224, 224) và chuẩn hóa
giá trị pixel từ [0,255] xuống [0,1].
 Kiểm tra dữ liệu đầu vào: chọn bất kì 20 hình ảnh của dữ liệu và in ra màn hình

 Xây dựng một mô hình mạng nơ-ron tích chập (Convolutional Neural Network
- CNN) sử dụng thư viện TensorFlow. Mô hình này bao gồm các: 2 lớp tích
chập Conv2D, 3 lớp MaxPool2D, 1 lớp làm phẳng Flatten, và 5 lớp kết nối đầy
đủ Dense. Mô hình sau cùng được biên dịch với thuật toán tối ưu ‘adam’, hàm
mất mát ‘sparse_categorical_crossentropy’, và đánh giá mô hình dựa trên độ
chính xác.
chi tiết:
o tf.keras.Input(shape = images[0].shape): Định nghĩa đầu vào của mô
hình với kích thước tương ứng với hình ảnh đầu tiên trong tập dữ liệu.
o tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu',
input_shape=[64, 64, 3]): Tạo một lớp tích chập với 32 bộ lọc, kích
thước kernel là 3 và hàm kích hoạt là ‘relu’.
o tf.keras.layers.MaxPool2D(pool_size=2, strides=2): Tạo một lớp gộp
tối đa (Max Pooling) với kích thước pool là 2 và sải bước là 2.
o tf.keras.layers.Flatten(): Làm phẳng tensor đầu vào từ 3D thành 1D.
o tf.keras.layers.Dense(units=32, activation='relu'): Tạo một lớp kết nối
đầy đủ (Fully Connected) với 32 nơ-ron và hàm kích hoạt ‘relu’.
o tf.keras.layers.Dense(units=6, activation='softmax'): Tạo một lớp kết
nối đầy đủ với 6 nơ-ron và hàm kích hoạt ‘softmax’. Đây là lớp đầu ra
của mô hình, với mỗi nơ-ron tương ứng với một lớp phân loại.
o model.compile(optimizer='adam',loss='sparse_categorical_crossentr
opy', metrics=['accuracy']): Biên dịch mô hình với thuật toán tối ưu
‘adam’, hàm mất mát ‘sparse_categorical_crossentropy’ và đánh giá mô
hình dựa trên độ chính xác.
 Thực hiện dữ liệu
 Vẽ biểu đồ kiểm tra độ chính xác sau khi train

 Lưu mô hình sau khi train vào file model.h5 để tiện sử dụng sau này
 Thực hiện kiểm thử với một số hình ảnh mới
2.3. Thiết kế hệ thống bằng ngôn ngữ Python
Hệ thống sẽ load và xử lý các dữ liệu sau khi train thông qua file model.h5, sau đó sẽ
nhận ảnh bắt từ các frame của camera và tiến hành xử lý nhận diện và cho ra kết quả.
3. Kết quả
Link Google Colab:
https://colab.research.google.com/drive/17iI98ssJAHmUtBjbSRfvFecch7ACooGo?
usp=sharing
IV. Kết luận
1. Kết luận
Sau quá trình tìm hiểu và xây dựng, nhóm đã xây dựng được 1 ứng dụng nhận dạng
một số loại trái cây cơ bản như: chuối, dâu tây, dứa, dưa chuột với độ chính xác tương
đối.
Tuy nhiên ứng dụng vẫn còn tồn tại một số hạn chế:
 Tập dự liệu đầu vào còn khá nhỏ
 Độ nhận diện chưa cao
 Chỉ nhận diện được 4 loại trái cây kể trên

2. Hướng phát triển


Sau khi đã đạt được những kết quả trên, nhóm sẽ thực hiện khắc phục các hạn chế kể
trên và nâng cấp hệ thống mạng CNN, cụ thể như sau:
 Mở rộng tập dữ liệu train và test với nhiều loại trái cây hơn
 Xây dựng được một trang web phân loại hoa quả

You might also like