MO DAU 1.Ly do chon dé tai Thuật toán nhận diện là một phần của lĩnh vực trí tuệ nhân tạo và xử lý hình ảnh, được sử dụng để tự động nhận biết và phân loại các đối tượng trong hỉnh ảnh h
Trang 1TRƯỜNG ĐẠI HỌC PHENIKAA
Khoa Điện — Điện tử
oN
BAO CAO GIUA Ki MON HOC SAU
Đề tài: Nhận diện phương tiện ô tô
Giảng viên hướng dẫn: TS.Lê Minh Huy
Sinh viên thực hiện : Bùi Thị Huệ - 21012923
Trần Sơn Dương - 21011224
Hà Nội, tháng 5 năm 2024
Trang 2MUC LUC
1.Lý do chọn để tài à TH n1 11151 n HH HH He 1
2.Mue dich ota dé tai escceccssesssssessssessseeesseeesenescstesecessrnesseeseeneeeneen I
3.Y nghĩa khoa hoc va thực tiỂn ST ng TT HH HH HH HH Hee 1
I TONG QUAN TAI LIEU NGHIEN CUU woo cccccccccsccscssessessessesscssvssvsessrseseneseees 3
1.2 Đặc điểm của Mạng neuraÌL - - 2c 22 2222112111211 1 1511151111811 1 18111158 xk 3 1.3 Kiến trúc mạng 'I€UFAÌL - 2 2: 1 221222011131 11131 1113111111 1111 1111111111111 111112 3 goi on 4
II XÂY DỰNG THUẬT TOÁN ::-222112221111122211111212111112211111 0 c1 8
2.1 Thu thép dt QU cece ccc cctecceececeeseseesesssessssesseesesseeesseessseseenaenas 8 2.2 Loading data ccccccccccccccccsecccsecsseeccseecssessssessseeessessssessseesssessssesssesssaeeess 8 2.3 Parts of alzorithim - 2c 2.1 2201222111211 1121115211121 1 11811122111 181 1111221 k2 13 2.3.1 Hàm sIgmoid - L2 2201121111211 15211 1211118111811 112 0111112211111 x4 13
2.3.2 Ham ReLU oo 13
2.3.3 Ham 1mitialize parameters deep - 52: 22251221222 14 2.3.4 Ham L model_ Íorward - - 22 22221223111 1221 1111155111112 z22 15 2.3.5 Ham compUte_ cOSt - 2 2200022221111 21 111212 1110111111112 221 1111k 16 2.3.6 Hàm L_ model_backward - - 222122222111 1221 1115551111522 z22 16 2.3.7 Hàm update paraimeters L0 220112111211 11221 1111152111112 gá 17 2.3.8 Hàm predIct - - - ccc ccc 2211110111211 1121111111011 11 111101110111 11011111 Hku 17
2.5.Kết quả của mô hình 5s St s1 SE121121211111111111111 1171211111012 g 19 2.6 Thtr nghiém két qua c.cccccccccccsccccscssesessessesecsesscsessesessesevseseesevevsevsesessecerees 20
¡000 S4 24
Trang 3IV TAI LIEU THAM KHAO
Trang 4DANH MUC HINH ANH Hinh 1: Cau trac mang luéi thần kinh 4
00): 0202 uy 00ìi u00 00000008 e 5 Hình 3: Một số hàm Activation phổ biến - 5 S111 1111111151171 11 1x6 6 Hinh 4: Mang Neural có I Hidden Layer - 2 c1 22 2212221121115 21 11182112 x se 7 Hình 5: Tính toán đầu ra của các Hidden Layer bằng hàm Sigmoid 7 Hinh 6: Hàm Forward và Backward c1 211211121 1211121 122128111 512811 11112 7 Hình 7: Kích thước hình ảnh ban đầu 2 - S122 E1221211211211111111 E2 xe 9 Hình 8: Kích thước hình ảnh sau khi chuyên đồi 2 2c Sv2EzE2Etz.zxzx2 10 Hình 9 : Biểu đồ cost theo số lần lặp - L2 1020111211122 1 1211112111221 2811k rà 20
Hình 10: Kết quả đự đoán hình ảnh ô tô 2-52 S12 19E111271221111221 21, x6 21 Hình I1: Kết quả hiển thị không phải xe ô tÔ - 52 11321 EEE1112E22272222xze2 22 Hình 12: Kết quả hiến thị sai với ảnh có ô tô - 2 52c ES2221511 211127211 6 23
Trang 5LOI NOI DAU
Ngày nay, khoa học kĩ thuật, công nghệ thông tin, tự động hóa và phát trién tiến bộ không ngừng Và đang được phát triển mạnh mẽ trên mọi mặt của đời sống của con người Học sâu (deep learning) được coi là một lĩnh vực có tính ứng dụng quan trọng trong đời sống
Hiện nay, các công nghệ liên quan đến hình ảnh ngày càng nhiều, khối lượng xử lý ngày càng lớn, đòi hỏi chúng ta cần phải có cách thứ xử lý lượng ảnh
đó hiệu quả nhất Vì vậy nhóm sinh viên chúng em quyết định thực hiện đự án
“Nhận diện phương tiện ô tô”
Do kiến thức còn hạn hẹp và thời gian chuẩn bị không có nhiều nên bài tập lớn của chúng em còn nhiều thiếu sót Chúng em mong sự ghi nhận đóng góp và sửa chữa của các thay dé dé tai nay đề có thê được hoàn thiện hơn
Chúng em xin chân thành cảm ơn, Thầy Lê Minh Huy đã hướng dẫn giúp chúng
em hoàn thành được đề tài nảy!
Trang 6MO DAU
1.Ly do chon dé tai
Thuật toán nhận diện là một phần của lĩnh vực trí tuệ nhân tạo và xử lý hình ảnh, được sử dụng để tự động nhận biết và phân loại các đối tượng trong hỉnh ảnh hoặc video Có nhiều thuật toán khác nhau được phát triển để giải quyết vấn đề này, từ các phương pháp cơ bản như phát hiện biên đến các mô hình học sâu phức tạp như mạng nơ-ron sâu (deep neural networks) Các thuật toán nhận diện thường được sử dụng trong nhiều ứng dụng như nhận diện khuôn mặt, nhận diện vật thể, nhận diện biến số xe, và nhiều ứng dụng khác trong thực tế
Công nghệ nhận diện hình ảnh đã và đang được áp dụng rộng rãi trong nhiều lĩnh vực như giao thông, an ninh, và thương mại điện tử Việc phân biệt ô tô (car) và không phải ô tô (non-car) là một trong những ứng dụng cơ bản và thiết thực của công nghệ này Với sự gia tăng nhanh chóng của phương tiện giao thông, việc phân biệt và nhận diện ô tô một cách tự động la rất quan trọng Nó giúp cải thiện hiệu quả của các hệ thống giám sát giao thông, quản lý bãi đỗ xe và hỗ trợ trong các hệ thống xe tự lái
2.Mục đích của đề tài
- Phát triển một mô hình hiệu quả đề phân biệt ô tô và không phải ô tô Xây đựng
và huấn luyện một mô hình mạng nơ-ron có khả năng phân loại chính xác hình
ảnh giữa ô tô và các đối tượng khác
- Đánh giá hiệu suất và khả năng ứng dụng thực tế của mô hình Đo lường độ chính xác, độ nhạy, và độ đặc hiệu của mô hình dé dam bao rang nó có thê được triên khai trong các hệ thông thực tế với độ tin cậy cao
- Nâng cao kiến thức và kỹ năng trong lĩnh vực học sâu và xử lý hình ảnh Thông qua việc thực hiện đề tài này, người thực hiện có thể nâng cao kiến thức và kỹ năng trong các công nghệ học sâu (deep learning) và xử lý hình ảnh (image processing)
3.Y nghĩa khoa học và thực tiễn
- Ứng dụng trong các hệ thống giám sát và an ninh: Mô hình phân biệt ô tô và không phải ô tô có thê được sử đụng trong các hệ thông giám sát giao thông, phát hiện và nhận diện phương tiện trong thời gian thực
Trang 7- Hỗ trợ cho các hệ thống xe tự lái và bãi đỗ xe thông minh: Kết quả từ đề tài nay
có thê được áp dụng để cải thiện độ chính xác và hiệu quả của các hệ thống xe tự
lái và quản lý bãi đỗ xe thông minh
- Giảm thiểu chi phí và nâng cao hiệu quả: Việc sử dụng mô hình tự động để phân biệt ô tô giúp giảm thiểu sự phụ thuộc vào lao động thủ công, từ đó giảm thiểu chí phí và nâng cao hiệu quả hoạt động
Trang 8I TONG QUAN TAI LIEU NGHIEN CUU
1.1 Mang neural la gi?
Mạng neural là một mạng lưới thần kinh nhân tạo Đây là một chuỗi các thuật toán tìm kiếm mối quan hệ trong một tập hợp dữ liệu hệ thống dựa trên cách thức hoạt động của bộ não con người"
Mạng nơ-ron nhân tạo được coi là hệ thống kết nối các nơ-ron nhân tạo trong tự nhiên hoặc hữu cơ Mạng nơ-ron thích ứng với mọi điều chỉnh từ đầu vào, mang lại đầu ra tốt nhất Khái niệm này xuất phát từ lĩnh vực trí tuệ nhân tạo, phô biến trong hệ thống giao dịch điện tử hiện nay
1.2 Dac điểm của Mang neural,
Mang neural hoat déng giéng nhw té bao than kinh trong nao ngudi Trong
đó, mỗi nơ-ron là một hàm toán học, có nhiệm vu thu thập, phân loại dữ liệu, thông tin theo một cấu trúc chỉ tiết
Mạng nơ-ron tương tự như phương pháp thống kê theo đồ thị đường cong hoặc phân tích hồi quy Đề giải thích đơn giản nhất, hãy tưởng tượng một mạng nơ-ron bao gồm các nút mạng được kết nối với nhau
° Mỗi nút là một tập hợp các nhận thức, có cấu trúc tương tự như hàm hồi quy đa tuyến tính, được sắp xếp liên kết với nhau Các lớp này sẽ thu thập thông tin, sau đó phân loại và đưa ra tín hiệu đầu ra tương ứng.?
Trang 9Luu y: M6i Mang neural chi co mét Input Layer va Output Layer nhưng sẽ có nhiéu Hidden Layer
Hi
nh |: Cấu trúc của mạng lưới thần kinh
Mỗi nút trong Mạng nơ-ron là một Sipemoid neural Thông thường các nút mạng nay sẽ có chức năng kích hoạt khác nhau nhưng hiện tại đang áp dụng thuật toán thống nhất đề dễ vận hành hơn
Ở mỗi layer, số lượng sigmoid neural khác nhau tùy thuộc vào cách xử lý dữ liệu Trong quá trình hoạt động, mô hình sẽ sử dụng các hidden layer với số lượng khác nhau tùy thuộc nhu cầu của người thiết lập
Các neural ở các layer khác nhau cũng sẽ kết nối với nhau để tạo thành mạng lưới chặt chẽ và hoàn chỉnh nhất Sau đó, người đùng sẽ biết kích thước của network đựa trên số lượng các layer và số lượng neural
Các nút mạng kết hợp theo một hướng duy nhất từ Input Layer vào đến Output Layer Mỗi nút trong một layer sẽ nhận được thông tin về các ghi chu cua layer
Trang 10là hàm Activation xác định xem thông tin mà nơ-ron nhận được có liên quan va nên được truyền đến đầu ra hay không
Y= Activation((weight * input) + bias)
- Weight: la trong số của đường nói
Hinh 2: Activation Function Hàm Activation là một phép biến đổi phi tuyến tính mà chúng ta thực hiện trên tín hiệu đầu vào của nơ-ron Đầu ra đã được biến đổi này sẽ được sử dụng làm đầu vào cho nơ-ron ở lớp tiếp theo Nếu không có hàm kích hoạt, các trọng số và
độ lệch chỉ đơn giản tạo thành một phép biến đổi tuyến tính Mặc dù việc giải một hàm tuyến tính sẽ đơn giản hơn, nhưng nó không đủ khả năng mô hình hóa
và giải quyết các bài toán phức tạp
Mạng nơ-ron không có hàm kích hoạt thực chất chỉ là một mô hình hồi quy tuyến tính, và không thể thực hiện các nhiệm vụ phức tạp như dịch ngôn ngữ hoặc phân loại hình ảnh Do đó, hàm kích hoạt là cần thiết đề mạng nơ-ron có thể học và mô hình hóa các mối quan hệ phi tuyến trong dữ liệu, giúp giải quyết các bài toán phức tạp
Ham Activation hé trợ quá trình lan truyền ngược bằng cách cung cấp các lỗi dé các trọng số và độ lệch có thê được cập nhật, giúp mô hình tự điều chỉnh
, Cac ham kích hoạt
ac ham h a ation fun
(activation function) trong neural network K
Trang 11Cach chon ham activation:
- Ham sigmoid và các kết hợp của chúng thường phù hợp cho các bài toán phân loại
- - Đôi khi nên tránh sử dụng Sigmoid và Tanh vì chúng có thê gây ra hiện tượng mất gradient
- - ReLU là một trong những hàm kích hoạt phô biến và được sử dụng rộng rãi nhất hiện nay Nếu có trường hợp có các nơ-ron chết trong mạng, thì Leaky ReLU là một lựa chọn hoàn hảo
- _ Hàm ReLU chỉ có thê được sử dụng trong các hidden layer.`
Input layer Hidden layer Output layer
Hinh 4: Mang Neural có 1 Hidden Layer
AHl = all) gI1@) al1Jứm)
Hình 5: Tính toán đầu ra của các Hidden Layer bằng hàm Sigmoid
, Cac ham kích hoạt
(activ
6
Trang 12al will, pill al wi2,pl2ì oe al wl, piel _all =?
Cache:z1l zl] z)
wel, pei (dz!?l) (dz!*)) dw), pl?) dw"), dpl?h aw), apt)
w=w"l-eawl
pl = pl ~ gaplll Hinh 6: Ham Forward va Backward
Trang 13II XAY DUNG THUẬT TOÁN
2.1.Thu thập dữ liệu
Tập dữ liệu chúng ta cần tạo bao gồm các thư mục hỉnh anh: train car va
test car Thư mục train car và test car đều chứa 2 tập đữ liệu con gồm car và
non car
Bộ dữ liệu này sẽ được sử dụng trong thuật toán khai thác dữ liệu để nhận diện ô
tô Thuật toán sẽ được đào tạo trên các đặc điểm nhận diện này để có thê đưa ra
dự đoán về phương tiện ô tô
Thư mục test _car cũng chứa 2 thư mục con có tên car và non car, tương tự như
train_car nhưng với kích thước nhỏ hơn vài lần Dữ liệu này sẽ được sử dụng để
kiểm tra độ chính xác của các dự đoán từ thuật toán, giúp chúng tôi thực hiện các
điều chỉnh cần thiết để tăng độ chính xác cho các dự đoán của thuật toán
Trang 14Đọc dữ liệu từ tập dữ liệu:
8 2Ð -path.join(test_car, € img listdir(path):
img_ array = cv2.imread(os.path.join(path,img), cv2.IMREAD COLOR)
pathl = os
cue loi
Trang 15Một bộ DATA được tạo ra bao gồm nhiều hình ảnh và kích thước khác nhau nên
chúng ta phải đưa các hình ảnh về cùng kích thước:
emention = 64
hew img = cv2.resize(img array, (demention, demention) )
Inew_img test=cv2.resize(img array _test,
Trang 16pathl = os.path.join(test car, category);
class num _ test = CATEGORY index (category)
print (class _num_test) img in os.listdir(pathl):
img_ array test = cv2.imread(os.path.join(pathl,img),
cv2 IMREAD COLOR)
new_img_ test = cv2.resize(img array test,
(demention, demention) )
creat testting data()
Xáo trộn dữ liệu trong Data set:
random
random shuffle(trainning data)
random shuffle (testting data)
sample in trainning data:
print(sample[1]) #in ra danh sách label sau khi đã xác trộn
feature sau khi d
Tach di ligu hinh anh va nhan tv hai tap di ligu trainning data va testting data,
sau đó lưu chúng vào các danh sách riêng biệt để chuẩn bị cho việc huấn luyện
và kiêm tra mô hình:
image, label in trainning data:
train.append(image) # tao tap feature của
Trang 17
image, label in testting data:
test.append (image) Y_test.append(label)
Chuyên đôi các danh sach chia dir ligu huan luyén va kiém tra thanh cac mang
NưmPy và In ra kích thước của các mảng nay:
numĐÐy ne H# Chuyén đổi danh sách thanh mang NumPy
np.array(X_ train)
= np.array test)
rint (train shape)
orint (test _ hape)
test_Y = np.array(Y_test)
rint (test_Y.shape)
train Y = np.array(Y_ train)
yrint (train Y.shape)
Thay đôi hình dạng của các mảng nhãn “ train Y” và “test Y”:
train y = train Y.reshape((1, -1))
yrint (train_y.shape) # (1,292)
A i ee ee Ee ee eee ee ee eve ES 22 22:23
_y = test_Y.reshape((1,-1)) yrint (test y.shape) #(1, 63)
ena bb ena nee
‘train x shape + str(train
‘train _y shape: + str(train_y.shape) )
"test_x shape: " + str(test_X.shape) )
"test_y shape: " + str(test_y.shape) )