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

NHẬN DIỆN HÌNH ẢNH PHƯƠNG TIỆN GIAO THÔNG tại lối lên CAO tốc VÀNH ĐAI 3 NGUYỄN XIỂN

72 12 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhận Diện Hình Ảnh Phương Tiện Giao Thông Tại Lối Lên Cao Tốc Và Vành Đai 3 Nguyễn Xiển
Người hướng dẫn PTS. Ngô Thùy Linh
Trường học Học Viện Ngân Hàng
Chuyên ngành Quản lý và Công Nghệ Thông Tin
Thể loại Bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 72
Dung lượng 3,5 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phát biểu bài toán Xây dựng ứng dụng nhận diện các phương tiện giao thông dựa trênComputer Vision bằng việc sử dụng hình ảnh kỹ thuật số từ các máy ảnh vànhững đoạn phim cũng như các mô

Trang 1

HỌC VIỆN NGÂN HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ

 BÀI TẬP LỚN

ĐỀ TÀI:

NHẬN DIỆN HÌNH ẢNH PHƯƠNG TIỆN GIAO THÔNG TẠI

LỐI LÊN CAO TỐC VÀNH ĐAI 3 NGUYỄN XIỂN

Trang 2

Thành viên nhóm

Lê Nguyên Ngọc 22A4050124

Nguyễn Công Anh 22A4050330

Nguyễn Vũ Bảo 22A4050036

Quách Cẩm Anh 22A4050173

Phạm Thị Ngọc Tuyền 22A4050356

Trang 3

Mở đầu

Trong kỷ nguyên công nghiệp 4.0 phát triển nở rộ, trí tuệ nhân tạo (Artificial Intelligence)

là vấn đề không thể không nhắc đến Ngày nay, AI được coi là một trong những ngànhcông nghệ quan trọng hàng đầu, giúp con người giải quyết nhiều vấn đề trong cuộc sống

Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con người như: biết suynghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, tiếng nói, biết học

và tự thích nghi, nhận diện hình ảnh, vật thể, …

Thị giác máy tính là một lĩnh vực đã và đang phát triển mạnh mẽ trên thế giới Khái niệmthị giác máy tính có liên quan tới nhiều ngành học và có nhiều hướng nghiên cứu khácnhau Kể từ những năm 70 của thế kỷ 20 khi mà khả năng tính toán của máy tính trở nênmạnh mẽ hơn, nó có thể giải quyết được các công việc yêu cầu tốc độ cao xử lí các tệpảnh hay đoạn video mà thị giác máy tính được nhắc đến, nghiên cứu và phát triển đếnnay

Thị giác máy tính là một vấn đề rất mới mẻ đối với các nhà nghiên cứu tại Việt Nam.Việcnghiên cứu và phát triển các ứng dụng thị giác máy tính mở ra nhiều tiềm năng và khảnăng ứng dụng thực tiễn mạnh mẽ cho chặng đường nghiên cứu tại Việt Nam Nhận thấyđược tính ứng dụng mạnh mẽ này nhóm 4 đã quyết định lựa chọn cho bài nghiên cứu vớichủ đề “Nhận diện hình ảnh phương tiện giao thông tại nút giao cao tốc vành đai 3Nguyễn Xiển”

I Giới thiệu đơn vị sử dụng, phát biểu bài toán và lý do chọn bài toán

Trang 4

Sở giao thông vận tải thành phố Hà Nội là cơ quan chuyên môn của Ủy bannhân dân thành phố, chịu sự chỉ đạo quản lý về tổ chức, biên chế và côngtác của UBND thành phố; đồng thời, chịu sự chỉ kiểm tra, giám sát vàhướng dẫn về chuyên môn, nghiệp vụ của Bộ Giao thông vận tải Sở Giaothông vận tải thành phố Hà Nội có chức năng tham mưu, giúp UBND thànhphố Hà Nội thực hiện quản lý nhà nước về đường bộ, đường thủy nội địa,đường sắt đô thị; vận tải; an toàn giao thông; quản lý, khai thác, duy tu, bảotrì hạ tầng giao thông đô thị và ngoài đô thị, gồm: cầu đường bộ, cầu vượt,

hè phố, đường phố, dải phân cách, hệ thống biển báo hiệu đường bộ, đèn tínhiệu điều khiển giao thông, hầm dành cho người đi bộ, hầm cơ giới đường

bộ, cầu dành cho người đi bộ, bến xe, bãi đỗ xe, đường tỉnh, hệ thống rãnhthoát nước trên đường tỉnh, đường quốc lộ, đường vành đai, đường cao tốctrên địa bàn Thành phố

Địa chỉ: Số 258 Khu liên cơ Võ Chí Công - phường Xuân La - quận Tây Hồ

1 Phát biểu bài toán

Xây dựng ứng dụng nhận diện các phương tiện giao thông dựa trênComputer Vision bằng việc sử dụng hình ảnh kỹ thuật số từ các máy ảnh vànhững đoạn phim cũng như các mô hình học sâu (deep learning), ứng dụng

có thể xác định và phân loại chính xác các phương tiện – tiếp sau đó phảnứng với những gì chúng “nhìn thấy” Cụ thể, bải toán ở đây là phân loạiphương tiện được phép di chuyển trên đường vành đai 3 trên cao và phươngtiện không được phép di chuyển trên đường vành đai 3 trên cao, thông qua

đó sẽ hỗ trợ các nhà quản lý dễ dàng xác định được phương tiện vi phạm vàphương tiện không vi phạm từ đó đưa ra hình thức xử phạt cũng như là mứcphạt phù hợp với từng loại phương tiện

Input: Hình ảnh các phương tiện giao thông (xe đạp, xe máy, oto) di chuyển

lên cầu vượt

Output: Hình ảnh các phương tiện vi phạm và không vi phạm giao thông

1 Lý do chọn bài toán

Thực tế cho thấy, mật độ lưu lượng giao thông tại nút giao cao tốc vành đai

3 Nguyễn Xiển luôn là rất lớn, đây cũng là địa điểm thường xuyên xảy ra

ùn tắc và tai nạn giao thông Một phần bởi vì tuyến đường này là mạch giaothông trọng yếu của thành phố Hà Nội, đáp ứng nhu cầu đi lại của cả nộivùng lẫn xe quá cảnh Một phần nữa là vì đây là một đoạn tuyến cao tốc đôthị, đi qua khu vực đông dân cư, nhiều nút giao lớn, kết nối với Quốc lộ 6,Đại lộ Thăng Long, Quốc lộ 32, Quốc lộ 1 và cả cao tốc Pháp Vân – CầuGiẽ nên tính chuyển tiếp giữa đường trên cao và dưới thấp cực kỳ quan

Trang 5

đột trực tiếp với những luồng lưu thông tại đường dưới thấp, hai luồngphương tiện đan chĩo qua nhau như chữ X, không chỉ gđy ùn tắc mă cònxảy ra rất nhiều va chạm, tai nạn giao thông tại cửa khẩu đường lín Vănhđai 3 trín cao Thím văo đó, giải phâp xđy dựng thím hay mở rộng tuyếnđường lă rất tốn kĩm Vậy nín, việc ứng dụng Computer Vision xđy dựng

mô hình nhận diện phđn loại câc phương tiện di chuyển lín đường vănh đai

3 trín cao lă tương đối khả thi tại thời điểm hiện tại Giải phâp năy sẽ tiếtkiệm chi phí cũng như lă hỗ trợ tối ưu nhất cho câc nhă quản lý dễ dăng xâcđịnh được phương tiện vi phạm vă không vi phạm từ đó tiến hănh xử phạt

vi phạm một câch hợp lý nhất đồng thời giảm thiểu ùn tắc hay tai nạn giaothông trín tuyến đường

II Giới thiệu kiểu dữ liệu ảnh cần thu thập vă câch thức thu thập dữ liệu

1 Kiểu dữ liệu ảnh cần thu thập

Hình ảnh câc phương tiện giao thông như hình ảnh xe đạp, hình ảnh xe mây/moto,hình ảnh xe oto (xe tải, xe khâch, xe con)

Thuộc tính gân nhên cầu dự đoân: Ô tô vă xe mây

 Phương tiện được phĩp di chuyển trín đường vănh đai 3 trín cao, cụ thể lẵtô (không vi phạm)

 Phương tiện không được phĩp di chuyển trín đường vănh đai 3 trín cao lăcâc phương tiện còn lại: xe mây (vi phạm)

1 Câch thức thu thập dữ liệu

Câc thănh viín trong nhóm đê tập trung tìm kiếm vă tải xuống từ Google photoscâc hình ảnh phương tiện giao thông của từng tệp dữ liệu Nhóm sử dụng câc hìnhảnh có mău, sau đó chia câc hình ảnh năy thănh câc nhóm vă thực hiện tải thư mụclín Google drive Hình ảnh mă nhóm thu thập có dạng như sau:

Trang 6

Hình ảnh ô tô mà nhóm thu thập

Hình ảnh xe máy mà nhóm thu thập

Nhóm đã chia dữ liệu thu thập được thành hai tệp: Ô tô và xe máy Tổng số lượng

là 200 ảnh, trong đó:

 Lớp train gồm 160 ảnh: 80 ảnh xe máy và 80 ảnh oto

 Lớp validation gồm 40 ảnh: 20 ảnh xe máy và 20 ảnh oto

Ta có tỷ lệ Train:Validation là 80:20

Trang 8

III Giới thiệu tổng quan thuật toán sử dụng

Mạng nơ-ron tích chập hay còn gọi là ConvNet/CNN, đây là một trong những

mô hình của học sâu (Deep learning) vô cùng tiên tiến Mô hình này sẽ giúp nhậndạng, xác định đối tượng, phân loại hình ảnh; hỗ trợ xây dựng những hệ thốngthông minh, phản ứng với độ chính xác cao Mạng CNN được thiết kế với mụcđích xử lý dữ liệu thông qua nhiều lớp mảng So với những mạng nơ-ron thôngthường, mạng CNN nhận đầu vào là một mảng hai chiều và hoạt động trực tiếptrên hình ảnh thay vì tập trung trích xuất tính năng như thường thấy ở các mạngnơ-ron khác Hiện nay, CNN được sử dụng chủ yếu trong các ứng dụng như nhậndạng hình ảnh hoặc nhận dạng khuôn mặt Bên cạnh đó mô hình này cũng đượcứng dụng trong nhiều lĩnh vực khác như: xe tự lái; chẩn đoán, phát hiện bệnh; xử

lý vi phạm giao thông; phát hiện sản phẩm lỗi trong dây chuyền sản xuất; giaodịch tại cây ATM không cần dùng thẻ;…Trên thế giới, các ông lớn trong ngànhcông nghệ như Google, Apple, Meta, cũng dần đẩy mạnh nghiên cứu phát triểncác sản phẩm, ứng dụng dựa trên mô hình mạng CNN để mang lại trải nghiệm tối

ưu cho khách hàng

Đặc trưng (Feature): CNN phân loại hình ảnh bằng cách lấy một hình ảnh đầu

vào, xử lý và phân loại nó theo các hạng mục nhất định Khi nhập dữ liệu hình ảnhvào, máy tính sẽ chia nhỏ hình ảnh đó ra thành một mảng hình ảnh nhỏ hơn, mỗimảng đó được gọi là feature Các feature là một phần tử của hình ảnh ban đầu và

hình ảnh ban đầu đó là tập hợp của các feature Mỗi feature được xem như một

hình ảnh mini hay gọi là những mảng hai chiều nhỏ Các feature được khớp vớinhững khía cạnh chung trong bức ảnh đó Nghĩa là feature sẽ tương ứng với khíacạnh nào đó của hình ảnh và chúng sẽ khớp lại với nhau

Trang 9

Tích chập (Convolutional): để thuật toán CNN nhận biết được hình ảnh ở vị trí

nào, các feature khớp với nhau ở đâu thì tích chập sẽ thử chúng với tất cả các vị trí

khác nhau và tạo thành một bộ lọc gọi là filter Quá trình này được thực hiện thông

qua phép toán nơ-ron tích chập

Cấu trúc mạng CNN gồm 4 lớp:

Convolutional Layer (lớp tích chập): đây sẽ là lớp đại diện cho CNN thực

hiện mọi phép toán, Tích chập là lớp đầu tiên để trích xuất các tính năng từhình ảnh đầu vào Tích chập duy trì mối quan hệ giữa các pixel bằng cáchtìm hiểu các tính năng hình ảnh bằng cách sử dụng các ô vuông nhỏ của dữliệu đầu vào Nó là 1 phép toán có 2 đầu vào như ma trận hình ảnh và 1 bộlọc hoặc hạt nhân Vậy nên, đây cũng chính là lớp quan trọng nhất Một sốkhái niệm cần được làm rõ như sau:

Filter map: những filter map này có thể được xem là một ma trận ba

chiều bao gồm các con số và những con số này được gọi là

Parameter CNN sẽ sử dụng những filter này để áp vào các vùng của

hình ảnh

Stride: khái niệm này được hiểu đơn giản là sự dịch chuyển Filter

map theo Pixel và dựa vào giá trị từ trái sang phải

Padding: chính là những giá trị 0 được thêm vào lớp input

Feature map: mỗi lần Filter map quét qua input sẽ xuất hiện quá

trình tính toán và feature map chính là kết quả của quá trình này

Non Linearity (lớp hoạt phi tuyến): Để đảm bảo tính phi tuyến của mô hình huấn

luyện sau khi đã thực hiện một loạt các phép tính toán tuyến tính qua các lớp tíchchập thì cần xây dựng lớp hoạt phi tuyến tính Lớp này sử dụng các hàm kích hoạtphi tuyến như: ReLU, Sigmoid, Leaky relu, Tanh, để giới hạn phạm vi biên độcho phép của các giá trị đầu ra Trong đó, hàm ReLU có cài đặt đơn giản, tốc độ

xử lý nhanh và đảm bảo tính hiệu quả nên được ưu tiên sử dụng

Pooling Layer (lớp lấy mẫu): Pooling Layer được biết đến với hai loại phổ biến là: Max Pooling và Average Pooling Lớp này được đặt ngay sau lớp tích chập và lớp

ReLU nhằm làm giảm kích thước ảnh đầu ra trong khi vẫn giữ được các thông tinquan trọng của ảnh đầu vào Tương tự như lớp tích chập, Pooling Layer cũng sửdụng một cửa sổ trượt để quét toàn bộ các vùng trong ảnh và thực hiện phép lấymẫu sau đó sẽ chọn lưu lại một giá trị duy nhất đại diện cho toàn bộ thông tin củavùng ảnh đó

Fully Connected Layer (Lớp kết nối đầy đủ): Fully Connected Layer thường sử

dụng để đưa ra các kết quả Lớp này sẽ đưa các ma trận đặc trưng ở lớp trước vàomạng kết nối đầy đủ như mạng nơ-ron bình thường, mỗi nơron của lớp này sẽ liênkết với nơron của lớp khác Để đưa ảnh từ các lớp trước vào Fully ConnectedLayer thì cần dàn phẳng bức ảnh thành một vector, sau đó sử dụng hàm softmax đểphân loại đối tượng Khi có được các dữ liệu về hình ảnh, Fully Connected Layer

sẽ chuyển đổi chúng thành những mục có phân chia chất lượng Tương tự nhưkiểu chia chúng thành các phiếu bầu và đánh giá để chọn ra hình ảnh đạt chất

Trang 10

Các lớp trên sẽ liên kết với nhau theo thứ tự nhất định (lớp tích chập → lớp kích hoạt phituyến → lớp lấy mẫu → lớp kết nối đầy đủ) Thông thường ba lớp đầu có thể được lặp lạinhiều lần để đưa ra kết quả chính xác nhất và lớp cuối cùng để tính xác suất ảnh biểu thị

Tóm lại, mạng CNN là tập hợp nhiều lớp Convolutional chồng lên nhau, sử dụng cáchàm Nonlinear Activation (kích hoạt phi tuyến tính) và Tanh để kích hoạt các trọng sốtrong các node Ở mỗi lớp CNN, sau khi được các hàm kích hoạt sẽ tạo ra các thông tintrừu tượng hơn cho những lớp tiếp theo Mỗi Layer kết tiếp sẽ là kết quả Convolution từLayer trước đó từ đó có được các kết nối cục bộ

IV Mã lệnh chương trình

1 Khai báo các thư viện sử dụng

Từ khoá import dùng để cài đặt thư viện, as dùng để đặt tên viết tắt cho thư viện.

TensorFlow: là một thư viện mã nguồn mở, được dùng để tính toán machine

learning với quy mô lớn Kiến trúc TensorFlow hoạt động được chia thành 3 phần

(Tiền xử lý dữ liệu, Dựng model, Train và ước tính model) Tensorflow như một

chương trình hỗ trợ tính toán bằng cách tiếp cận mạnh mẽ các phép tính và bàitoán phức tạp, đơn giản hóa toán học thông qua các đồ thị luồng dữ liệu tổng hợp

Keras: là một open source cho Neural Network được viết bởi ngôn ngữ Python.

Matplotlib.pyplot: là một thư viện sử dụng để vẽ các đồ thị trong Python và phần

mở rộng toán học số Numpy

Pyplot là một module của Matplotlib cung cấp các hàm đơn giản để thêm các

thành phần plot như lines, images, text, v.v vào các axes trong figure

Numpy (Numeric Python): là một thư viện toán học phổ biến và mạnh mẽ của

Python Cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệu matrận và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng “corePython” đơn thuần

2 Kết nối với Google Drive đọc và lưu dữ liệu

 Chạy đoạn code:

Trang 11

 Đoạn code cho kết quả hiển thị như sau, chọn “Kết nối với Google Drive” để cho phép Google colab truy cập vào Drive:

 Chọn tài khoản Gmail của bạn:

 Chọn “ Cho phép” để tiếp tục kết nối, kết quả đoạn code hiện:

3 Khai báo đường dẫn thư mục chứa dữ liệu ảnh

 Khai báo đường dẫn đến 2 thư mục “Train” và “Validation” để huấn luyện và kiểmđịnh mô hình

Trang 12

5 Tiền xử lí dữ liệu hình ảnh với ImageDataGenerator

Tiền xử lí dữ liệu ảnh là bước đầu xử lý dữ liệu ảnh và đưa nó về dạng số

ImageDataGenerator là lớp học của Keras dùng để tổng hợp tài liệu hình ảnh cho học sâu Nó được cho phép thuận tiện truy vấn vào mạng lưới hệ thống tệp cục bộ và sử dụng các phương pháp khác nhau để tải dữ liệu từ những cấu trúc khác nhau Nó cũng có một

số khả năng giải quyết, tiền xử lí và tăng cường dữ liệu mạnh mẽ

Trong đó, tham số rescale là một trong nhiều thông số tăng cường, có tác dụng chuẩn hóa

dữ liệu hình ảnh để chúng có chung một tỉ lệ rescale=1/255 sẽ điều chỉnh các giá trị pixelcủa hình ảnh nằm trong khoảng [0, 1]

Khi được lưu trữ trong máy tính, một file ảnh sẽ ở dạng một ma trận dữ liệu số có giá trị trong khoảng [0, 255]

Trang 13

Chúng ta nhìn thấy Máy tính thấy

Để biểu diễn một bức ảnh 256x256 pixel trong máy tính thì ta cần ma trận vuông bậc

256, trong đó mỗi phần tử trong ma trận có giá trị nằm trong khoảng [0, 255] Tùy thuộc vào bức ảnh là màu hay ảnh xám thì ma trận này sẽ có số kênh tương ứng Ví dụ với một tấm ảnh màu 256x256, nó sẽ được biểu diễn bởi 3 ma trận vuông bậc 256; còn đối với ảnh xám 256x256, chúng ta sẽ có 1 ma trận 256x256 để biểu diễn

6 Đọc dữ liệu Train và Validation

target_size: dùng để biến đổi (resized) các ảnh đầu vào về cũng một kích thước để máy

có thể đọc được dữ liệu ảnh Ở đây, ảnh được đưa về kích thước [50x50]

Sau khi các ảnh đã được biến đổi về cùng một kích thước, ta tiến hành phân loại các ảnh

về các lớp tương ứng Trong bài này, dữ liệu ảnh được phân thành 2 lớp tương ứng với 2

dữ liệu ảnh được gán nhãn là ‘Oto’ và ‘Xemay’

=

Trang 15

Convolutional Neural Network (CNNs – mạng nơron tích chập) là một trong những mô hình Deep Learning tiên tiến Nó giúp cho chúng ta xây dựng được những hệ thống thôngminh với độ chính xác cao như hiện nay CNN được sử dụng nhiều trong các lĩnh vực nhận dạng các vật thể trong ảnh và phân loại hình ảnh

Kỹ thuật sử dụng cho bài toán là Convolution (tích chập): từng giá trị của ma trận đầu vào nhân tương ứng với ma trận kernel (bộ lọc) rồi cộng tổng lại, đưa qua activation function (hàm kích hoạt) và cho ra kết quả là một con số cụ thể, tập hợp các con số này lại là một ma trận, chính là feature map (đầu ra của ảnh)

Lớp CNN1 và CNN2:

Lớp CNN1:

+ Conv2D: là convolution dùng để lấy feature từ ảnh (ở đây sử dụng tích chập 2D

vì đầu vào (hình ảnh) là ma trận 2 chiều) Với lớp tích chập Conv2D(32,(3,3)) như trên,

s = 1 (strides): là số bước nhảy trên ảnh, ở đây bước trượt giữa 2 kernel khi quét là

1 Với stride = 1, kernel sẽ quét 2 ô ngay cạnh nhau (bộ lọc dịch sang phải/ xuống dưới 1 cột/ hàng mỗi một lần trượt) cho đến khi nó đi qua hết tất cả các vùng kích thước 3×3 Điều này nhằm tránh việc lặp lại giá trị ở các ô bị quét Đây có thể là

số nguyên hoặc tuple (danh sách) gồm 2 số nguyên, xác định các bước của tích chập dọc theo chiều cao và chiều rộng Nó cũng có thể là một số nguyên duy nhất

để biểu thị cùng một giá trị cho tất cả các kích thước không gian

padding: nhận một trong hai giá trị "valid" hoặc "same" (không phân biệt chữ hoa chữ thường) "valid" nghĩa là không có đệm "same" dẫn đến phần đệm với các số không đều ở bên trái/ bên phải hoặc lên/ xuống của đầu vào Khi padding =

"same" và strides = 1, đầu ra có cùng kích thước với đầu vào Ở đây không nói rõ padding bằng bao nhiêu nhưng khi quan sát ảnh đầu vào và đầu ra có cùng kích thước (50x50) nên ta có thể suy ra rằng padding = “same”

+ activation= ‘relu’: Hàm kích hoạt ReLU (Rectified Linear Unit): relu(x) =

Trang 16

ma trận kernel quét qua ma trận đầu vào, nhân tương ứng từng giá trị của ma trận đầu vào với ma trận kernel rồi cộng tổng lại, đưa kết quả qua hàm kích hoạt ReLU

ta thu được một giá trị của feature map Nếu kết quả âm thì giá trị trả về là 0, nếu kết quả dương thì giá trị trả về chính là giá trị đó Do đó, đầu ra mà ReLU cung cấp là một giá trị lớn hơn hoặc bằng 0

+ input_shape=(50,50,3): lớp CNN1 kết nối với đầu vào nên phải mô tả rõ thông

tin đầu vào:

Các ảnh huấn luyện có kích thước ban đầu là 50x50 pixel và 3 kênh (ảnh màu) nên có hình dạng đầu vào là (50,50,3) Giá trị mỗi điểm ảnh sẽ tương ứng với một ô trong ma trận

�㹪 Lớp CNN1: mỗi bộ lọc (3x3) trượt trên ma trận đầu vào (50x50x1) thì output là một feature map (50x50x1) Vì vậy 32 bộ lọc sẽ cho ra output là conv1 feature maps có size (50x50x32)

+ MaxPooling2D (2,2): Hoạt động tổng hợp tối đa cho dữ liệu không gian 2D lớp

Pooling được sử dụng giữa các lớp convulational để đơn giản hóa thông tin đầu ra (giảm kích thước ma trận) nhưng vẫn giữ được các thuộc tính quan trọng Kích thước dữ liệu giảm sẽ giúp giảm việc tính toán trong mô hình, tránh tình trạng overfitting Lớp Pooling

có một cửa sổ trượt là Pooling window, cửa sổ này trượt qua từng giá trị của ma trận dữ liệu đầu vào (thường là các feature map trong convolutional layer) và chọn ra giá trị lớn nhất từ các giá trị nằm trong đó

k=2: kích thước Pooling window là 2x2

s=2: với kích thước Pooling window là 2x2, stride = 2 để đảm bảo các cửa sổ không trùng lặp nhau

=> Qua lớp MaxPooling kích thước của dữ liệu sẽ giảm đi một nửa Từ input là conv1 feature maps (50x50x32), output sẽ là pool1 feature maps (25x25x32)

Lớp CNN2:

Trang 17

+ Conv2D (64, (3, 3)): input của lớp này là pool1 feature maps (25x25x32).Các tham số tương tự như lớp CNN1: F=64: số kernel (bộ lọc) của convolution

là 64 k=3: kích thước ma trận kernel (bộ lọc) là 3x3 s=1: khoảng cách giữa 2kernel khi quét là 1 padding = “SAME” => Lớp CNN2: mỗi bộ lọc (3x3)trượt trên pool1 feature maps (25x25x32) thì output là một feature map(25x25x1) Vì vậy 64 bộ lọc sẽ cho ra output là conv2 feature maps có size(25x25x64)

+ MaxPooling2D (2,2): tương tự như ở lớp CNN1 k=2: kích thước Poolingwindow là 2x2 s=2: với kích thước Pooling window là 2x2, stride=2 để đảmbảo các cửa sổ không trùng nhau => Qua lớp MaxPooling kích thước của dữliệu sẽ giảm đi một nửa Từ input là conv2 feature maps (25x25x64), output sẽ

là pool2 feature maps (13x13x64)

+ Conv2D (64, (3, 3): Các tham số cần làm rõ tương tự như ở lớp CNN1:

F=64: số kernel (bộ lọc) của convolution là 64

+ MaxPooling2D (2,2): tương tự như ở lớp CNN1.

k=2: kích thước Pooling window là 2x2

s=2: với kích thước Pooling window là 2x2, stride=2 để đảm bảo các cửa sổ khôngtrùng lặp nhau

�㹪Qua lớp MaxPooling kích thước của dữ liệu sẽ giảm đi một nửa Từ input là conv2 feature maps (25x25x64), output sẽ là pool2 feature maps (13x13x64)

Flatten: được sử dụng để làm phẳng tất cả dữ liệu đầu vào của nó thành một

chiều duy nhất Ở đây, Flatten có tác dụng chuyển dữ liệu CNN từ mảng 2chiều thành mảng 1 chiều

Trang 18

Lớp ẩn: Dense layer hay Fully-connected layer là một lớp cổ điển trong mạng

nơron nhân tạo thể hiện một lớp kết nối đầy đủ, nghĩa là toàn bộ các unit củalayer trước đó được nối với toàn bộ các unit của layer hiện tại Mỗi nơron nhậnđầu vào từ tất cả nơron lớp trước đó Tức là, toàn bộ các unit layer ở hiện tại sẽđược kết nối với toàn bộ các unit layer trước đó Dense ở đây bằng 512 thểhiện rằng có 512 unit ở layer này

Lớp output: Sử dụng hàm softmax trong lớp cuối cùng của bộ phân loại dựa

trên mạng nơron Softmax được sử dụng để đa phân loại trong mô hình hồi quylogistic

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

8.1 Thiết lập tham số để huấn luyện mô hình

Hàm Compile: thiết lập các tham số để huấn luyện mô hình

Optimizers: Thuật toán tối ưu

Về cơ bản, thuật toán tối ưu là cơ sở để xây dựng mô hình neural network vớimục đích "học" được các features (pattern) của dữ liệu đầu vào, từ đó có thểtìm được cặp weights và bias phù hợp để tối ưu hóa mô hình

�㹪 Thuật toán tối ưu Optimizers ra đời với mục đích cải thiện weight và bias đểtránh tình trạng không khả thi và lãng phí tài nguyên được sử dụng để huấn

Trang 19

luyện mô hình Thuật toán tối ưu được sử dụng để thực hiện việc huấn luyện

mô hình

Thuật toán tối ưu được sử dụng – RMSProp

RMSProp là thuật toán tối ưu hóa được thiết kế cho mạng nơ-ron, là mộtphần mở rộng của gradient descent và phiên bản Adagrad của gradient descent

sử dụng giá trị trung bình giảm dần của các gradient từng phần trong việc điềuchỉnh kích thước bước cho mỗi tham số Việc sử dụng đường trung bình độnggiảm dần cho phép thuật toán bỏ qua các gradient ban đầu và tập trung vào cácgradient từng phần được quan sát gần đây nhất

Ưu điểm: Ưu điểm lớn nhất của RMSprop là giải quyết được vấn đề tốc độhọc giảm dần của Adagrad (vấn đề tốc độ học giảm dần theo thời gian sẽ khiếnviệc training chậm dần, thậm chí có thể dẫn tới bị đóng băng )

Nhược điểm: Thuật toán RMSprop có thể cho kết quả nghiệm chỉ là localminimum chứ không đạt được global minimum như Momentum đã làm

Learning rate:

Learning rate (tốc độ học) là một siêu tham số sử dụng trong việc huấnluyện các mạng nơ ron Giá trị của nó là một số dương, thường nằm trongkhoảng giữa 0 và 1 Tốc độ học kiểm soát tốc độ mô hình thay đổi các trọng số

để phù hợp với bài toán Tốc độ học lớn giúp mạng nơ ron được huấn luyệnnhanh hơn nhưng cũng có thể làm giảm độ chính xác Learning rate được hiểu

là một phần tỷ lệ của một bước dịch chuyển trọng số mô hình được cập nhậttheo các mini-batch truyền vào Độ lớn của learning rate sẽ ảnh hưởng trực tiếptới tốc độ hội tụ của hàm loss tới điểm cực trị toàn cục

Tham số learning rate này là tùy chọn Chúng ta có thể tùy chọn tỷ lệ học tập của mình bằng cách chỉ định tham số learning_rate Nếu chúng ta không chỉ định nó một cách rõ ràng thì tốc độ học mặc định mà Keras đã chỉ định cho trình tối ưu hóa cụ thể này sẽ được đặt Ở đây có thể thấy rằng chúng ta đang đặt nó thành 0,001 Bây giờ, nếu chúng ta in giá trị của tốc độ học tập của mình, chúng ta có thể thấy nó hiện đã thay đổi từ 0,001 thành 0,01 Bs hình ảnh

Loss function:

Hàm Loss là một thành phần quan trọng trong quá trình huấn luyện môhình học máy Nó cho phép xác định mức độ sai khác của kết quả dự đoán sovới giá thực thực cần dự đoán Chúng ta đưa mô hình dữ liệu, nó đưa ra dựđoán và ta phản hồi xem dự đoán của nó có chính xác hay không Dựa trênnhững phản hồi đó, mô hình có thể sửa những lỗi sai trước đó Quá trình nàylặp đi lặp lại cho đến khi mô hình đạt đến một độ chính xác nhất định Đây làmột phương pháp đo lường chất lượng của mô hình dự đoán trên tập dữ liệuquan sát

Việc chỉ ra rằng mô hình đã đoán sai là vô cùng quan trọng để nó có thể học

ra tri thức từ dữ liệu Và đó là nguyên nhân hàm loss được thiết kế Hàm loss

sẽ chỉ ra mô hình đoán sai bao nhiêu so với giá trị thực tế Nếu mô hình dự

Trang 20

đoán sai nhiều thì giá trị của loss function sẽ càng lớn và ngược lại nếu nó dựđoán càng đúng thì giá trị của loss function sẽ càng thấp.

Hàm loss: “Categorical_crossentropy” dùng classifier nhiều class (để dựđoán nhiều lớp)

Metrics: Đánh giá mô hình

Trong quá trình xây dựng một mô hình machine learning, phần không thểthiếu để biết được chất lượng của mô hình như thế nào chính là đánh giá môhình Metrics chính là chỉ số dùng để đo lường, theo dõi và đánh giá độ chínhxác của mô hình

Hiệu năng của một mô hình thường được đánh giá dựa trên tập dữ liệukiểm thử (test data) Cụ thể, giả sử đầu ra của mô hình khi đầu vào là tập kiểmthử được mô tả bởi vector y_pred - là vector dự đoán đầu ra với mỗi phần tử làclass được dự đoán của một điểm dữ liệu trong tập kiểm thử Ta cần so sánhgiữa vector dự đoán y_pred này với vector class thật của dữ liệu, được mô tảbởi vector y_true

Có nhiều phương pháp để đánh giá độ chính xác của mô hình Ở đây,phương pháp accuracy đã được sử dụng Acuracy of models (độ chính xác của

mô hình) là phương pháp đơn giản và được sử dụng nhiều nhất để tính tỉ lệgiữa số liệu trong tập dự đoán đúng và tổng số điểm trong tập dữ liệu kiểmthử

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

Epoch:

Epoch là một siêu tham số quan trọng trong thuật toán, được dùng để định

nghĩa số lần thuật toán học hoạt động trên mô hình Khi một epoch hoàn thành

là tất cả dữ liệu training được đưa vào mạng neural network một lần (đã baogồm cả 2 bước forward và backward cho việc cập nhật internal modelparameters)

Tuy nhiên khi dữ liệu training là quá lớn, việc đưa tất cả training data vàotrong 1 epoch là không khả thi và không hiệu quả Trường hợp số epoch nhỏ

thì dễ dẫn đến hiện tượng underfitting vì mô hình không “học” được nhiều từ

GD để cập nhật các biến nội tại Đối với các trường hợp này thì giải pháp làchia nhỏ training dataset ra thành các batches cho mỗi epoch thì cơ hội môhình học được từ GD sẽ nhiều hơn và tốc độ tính toán sẽ tối ưu hơn

Trang 21

Khi số vòng lặp tăng, trạng thái của mô hình sẽ chuyển dần từ underfittingsang optimal và sau đó là overfitting

Hàm fit ():

Model.fit (_generator) yêu cầu trình tạo dữ liệu đầu vào để chạy mô hình

Nó bao gồm: Train generator và Validation generator

Steps_per_epoch: tổng số bước (số lô mẫu) để tạo ra từ trình tạo trước khikhai báo một Epoch kết thúc và bắt đầu Epoch tiếp theo Nó thường phải bằng

số lượng mẫu duy nhất của bộ dữ liệu của bạn chia cho kích thước lô Nói cáchkhác, nó được sử dụng để tạo toàn bộ tập dữ liệu một lần bằng cách gọisteps_per_epoch lần tạo

Kết quả:

Trang 22

- Khi chạy vòng lặp từ 1 đến 80, train_acc và val_acc nhìn chung đều tăng Tại vòng lặp

cuối cùng, train_acc = 1 và val_acc=0.875 cho thấy tỉ lệ chính xác trên tập train vàValidation là cao

- Train_loss có xu hướng giảm dần về 0, tức là mô hình đang dự đoán sát với giá trị thực trên tập train

- Val_loss = 0.3909, con số này tương đối thấp cho thấy mô hình dự đoán khá chính xác

so với giá trị thực trên tâ ̣p validation Tỉ lệ chính xác trên tập Validation cao (87.5%) và

dự đoán không bị sai lệnh so với giá trị thực quá nhiều (Val_loss = 0.3909), điều này chứng tỏ mô hình đang cho ra kết quả khả quan Để tìm ra được mô hình tối ưu nhất, nhóm sẽ thử nghiệm thay đổi một số chỉ tiêu

Trang 23

9 Sử dụng mô hình để test ảnh mới

Target_size: là size của các ảnh input đầu vào, mỗi ảnh sẽ được resized theo kích thước

(50,50)

Batch_size: là số lượng mẫu dữ liệu trong một lần huấn luyện Do dữ liệu quá lớn,

chúng ta không thể đưa hết toàn bộ dữ liệu vào huấn luyện trong 1 epoch, vì vậy cần phảichia tập dữ liệu thành các phần (number of batch), mỗi phần có kích thước là batch size

Chạy thử nghiệm mô hình với ảnh nằm ngoài bộ dữ liệu: Nhấn chạy đoạn mã codetrên, sau khi chạy thành công sẽ xuất hiện yêu cầu chọn ảnh, kích chọn nút “Chọn tệp” Open  Chọn ảnh hoă ̣c nhóm ảnh cần phân loại  Chờ kết quả

10 Thử nghiệm mô hình và kiểm tra độ chính xác

Nhóm đã thực hiê ̣n chạy thử trên 2 lớp Oto và Xemay, mỗi lớp 20 ảnh, kết quả như sau:

- Ô tô: Nhận diện đúng 14/20 ảnh, tương ứng tỉ lệ 70%

Trang 25

- Xe máy: Nhận diện đúng 16/20 ảnh, chính xác80%

Trang 26

 Tỉ lệ chính xác trung bình khi nhận diện 40 ảnh là 82.5%.

V Chạy thử mô hình và đánh giá khi thực hiê ̣n thay đổi 1 số chỉ tiêu

1 Thực hiê ̣n mở rộng dữ liệu huấn luyện và kiểm chứng về số lớp và số lượng ảnh 1.1 Thực hiê ̣n thêm 1 lớp ảnh vào bô ̣ dữ liê ̣u

Ngoài 2 lớp xe máy và ô tô, nhóm đã thực nghiệm đưa thêm lớp thứ 3 là xe đạp để chạy lại mô hình:

Trang 27

Lí do nhóm đưa thêm 1 lớp là xe đạp vì đôi khi cũng có thể có những phương tiện xe đạp ngang nhiên đi lên nút giao cao tốc, điều này đòi hỏi camera phải bắt được hình ảnh những người đi xe đạp vi phạm luật và báo về lực lượng chức năng tại đó giải quyết, nếu không những người vi phạm đó sẽ gây mất trật tự, an toàn cho chính mình và các phươngtiện tham gia giao thông trên cao tốc khác Chính vì vậy nhóm 4 đã tiến hành tìm kiếm hình ảnh và đưa thêm 1 lớp xe đạp vào bài toán.

 Hình ảnh xe đạp nhóm đã thu thập:

Trang 28

 Thực hiện gán nhãn dữ liệu cho lớp xe đạp:

 Thực hiện thay đổi đầu ra từ 2 lớp lên 3 lớp:

 Kết quả khi chạy vòng lặp:

Trang 29

 Thực hiê ̣n chạy thử mô hình trên 3 lớp, mỗi lớp 20 ảnh và có kết quả như sau:+ Ô tô: Nhận diện đúng 18/20 ảnh, tương ứng tỷ lệ đúng 90%

Trang 30

 Xe máy: Nhận diện đúng 12/20 ảnh, tương ứng tỷ lệ đúng 60%

Trang 31

 Xe đạp: Nhận diện đúng 18/20 ảnh, tương ứng tỷ lệ đúng 90%

Trang 33

Tỷ lệ chính xác trung bình khi thực hiện kiểm tra 60 ảnh là ~ 80%

=> Kết luận: Việc thêm 1 lớp xe đạp là hoàn toàn hợp lý, vì khi phương tiện xe đạp đang hướng vào cao tốc, nếu lực lượng chức năng phát hiện sớm và giải quyết kịp thời thì sẽ đảm bảo trật tự, an toàn tính mạng cho người điều khiển xe đạp cũng như tránh các trường hợp tai nạn ngoài ý muốn trên cao tốc khi người điều khiển phương tiện xe đạp đang đi trên cao tốc Tuy vậy, việc chỉ tăng thêm số lớp mà không tác động đến các chỉ tiêu khác khiến cho mô hình có độ chính xác không ổn định, lớp ô tô và xe đạp có độ chính xác lên đến 90%, nhưng lớp xe máy lại chỉ là 60%

1.2 Thực hiện thay đổi số lượng ảnh

Nhóm đã tăng số lượng ảnh của 2 lớp ô tô và xe máy lên 125 ảnh, gồm 100 ảnh train và

25 ảnh validation cho mỗi lớp

Trang 34

- Thực hiện chạy thử mô hình, mỗi lớp 20 ảnh cho kết quả sau:+ Ô tô: Nhâ ̣n diê ̣n đúng 18/20, tương ứng tỷ lê ̣ 90%.

Trang 35

+Xe máy: Nhâ ̣n diê ̣n đúng 15/20, tương ứng tỷ lê ̣ 75%.

Trang 36

Tỷ lê ̣ nhâ ̣n diê ̣n chính xác trung bình khi kiểm tra 40 ảnh là 82.5%.

 Việc tăng thêm số lượng ảnh khiến val_loss tăng (0.6363) so với mô hình ban đầu (0.3909) Điều này cho thấy rằng mô hình chưa tối ưu, kết quả nhận được chưa ổn định (Nhận diện ô tô chính xác 90% trong khi độ chính xác khi nhận diện xe máy giảm chỉ còn75%)

2 Thực nghiê ̣m chuẩn hóa kích thước ảnh

Mô hình ban đầu sử dụng chuẩn hóa kích thước ảnh là [50,50], nhóm đã thực nghiê ̣m chuẩn hóa kích thước ảnh lên [100,100]

- Thay đổi kích cơꄃ ảnh Train và Validation về [100,100]

Ngày đăng: 16/12/2022, 20:36

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

🧩 Sản phẩm bạn có thể quan tâm