Tải bản đầy đủ (.pdf) (26 trang)

Ứng dụng kỹ thuật học sâu trong phát hiện và đếm lưu lượng xe máy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (635.49 KB, 26 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

DƯƠNG THỊ DỊU

ỨNG DỤNG KỸ THUẬT HỌC SÂU TRONG PHÁT HIỆN VÀ
ĐẾM LƯU LƯỢNG XE MÁY

Chuyên ngành: Khoa học máy tính
Mã số: 8480101

TÓM TẮT LUẬN VĂN THẠC SĨ
KHOA HỌC MÁY TÍNH

Đà Nẵng - Năm 2019


Công trình được hoàn thành tại

TRƯỜNG ĐẠI HỌC BÁCH KHOA

Người hướng dẫn khoa học: TS. Huỳnh Hữu Hưng

Phản biện 1: PGS.TS Nguyễn Thanh Bình
Phản biện 2: TS. Trần Thế Vũ

Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ khoa học máy tính họp tại Trường Đại học Bách
khoa vào ngày 25 tháng 8 năm 2019.


Có thể tìm hiểu luận văn tại:
- Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại
học Bách khoa;
- Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách
khoa - ĐHĐN.


1
MỞ ĐẦU
1. Lý do chọn đề tài
Giao thông luôn là vấn đề lớn đối với các đô thị lớn ở các
nước và ở Việt Nam nói chung. Trong những năm gần đây, cùng với
sự phát triển kinh tế - xã hội, nhiều công trình giao thông đã và đang
được xây dựng trên khắp Việt Nam để đáp ứng nhu cầu đi lại, đồng
thời đáp ứng sự gia tăng không ngừng số lượng các phương tiện tham
gia giao thông. Chúng ta đang phải đối mặt với những vấn đề cấp
bách trong giao thông, đặc biệt là tai nạn giao thông và ùn tắc giao
thông tại nhiều thành phố lớn. Để giải quyết vấn đề này, chúng ta
đang cố gắng từng bước xây dựng một hệ thống giao thông đồng bộ
và áp dụng khoa học kỹ thuật mới trong hệ thống điều khiển giao
thông. Xử lý và nhận dạng là một lĩnh vực từ lâu được nhiều người
quan tâm, được ứng dụng trong nhiều lĩnh vực như:
- Trong y học, cải thiện ảnh X-quang và nhận dạng đường
biên mạch máu từ ảnh chụp bằng tia X, ứng dụng vào các xét nghiệm
lâm sàng như phát hiện và nhận dạng u não, nội soi cắt lớp …
- Trong thiên văn học, hệ thống chụp hình gắn trên tàu vũ trụ
hạn chế về kích thước và trọng lượng, do đó chất lượng hình ảnh nhận
được bị giảm, ảnh bị mờ méo hình học và nhiễu nền.
- Trong các lĩnh vực công nghiệp, người máy ngày càng
đóng vai trò quan trọng. Chúng giúp con người thực hiện các công

việc nguy hiểm, đòi hỏi có tốc độ và độ chính xác cao vượt quá khả
năng con người. Người máy sẽ trở nên tinh vi hơn và thị giác máy
tính đóng vai trò quan trọng hơn. Người ta sẽ không chỉ đòi hỏi
người máy phát hiện và nhận dạng các bộ phận công nghiệp mà còn
phải “hiểu” được những gì chúng “thấy” và đưa ra hành động phù
hợp.


2
Xuất phát từ yêu cầu thực tiễn tôi đã chọn đề tài “Ứng dụng kỹ
thuật học sâu trong phát hiện và đếm lưu lượng xe máy”.
Dù đã cố gắng hoàn thành báo cáo nhưng không thể tránh
khỏi những sai sót vì vậy tôi rất mong nhận được ý kiến đánh giá của
các thầy cô và các bạn để tôi có thể hoàn thiện đề tài của mình một
cách tốt nhất.
2. Mục tiêu và nhiệm vụ
2.1. Mục tiêu
Mục tiêu chính của luận văn là ứng dụng kỹ thuật học sâu để
phát hiện và đếm xe máy trong video giao thông.
2.2. Nhiệm vụ
Từ mục tiêu của đề tài, luận văn tập trung nghiên cứu các
nhiệm vụ sau:
- Tìm hiểu kỹ thuật học sâu;
- Tìm hiểu các bộ thư viện cài đặt cho mô hình học sâu;
- Sử dụng công cụ đánh nhãn để đánh nhãn xe máy trong
video giao thông;
- Huấn luyện và xây dựng mô hình nhận dạng, đếm xe máy.
3. Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng
- Dữ liệu thu được từ camera hoặc các bộ dữ liệu tự xây

dựng;
- Các phương pháp huấn luyện học máy;
- Các phương pháp nhận dạng xe máy.
3.2. Phạm vi nghiên cứu
Nghiên cứu phân tích dữ liệu từ camera hoặc từ dữ liệu có
sẵn, phát hiện xe máy và đếm xe.


3
4. Phương pháp nghiên cứu
4.1. Phương pháp nghiên cứu tài liệu
- Tìm hiểu các kỹ thuật xử lý ảnh;
- Tìm hiểu các tài liệu hiện có về phát hiện và đếm xe.
4.2. Phương pháp thực nghiệm
- Xây dựng dữ liệu;
- Thực nghiệm mô hình;
- Phân tích, đánh giá kết quả.
5. Ý nghĩa khoa học và thực tiễn
- Về khoa học: Áp dụng phương pháp học sâu để phát hiện
và đếm xe máy.
- Về thực tiễn: Hỗ trợ xác định lưu lượng xe máy đang tham
gia giao thông trên đường, giúp giải quyết một số vấn đề trong giao
thông.
6. Bố cục luận văn
Nội dung của luận văn được trình bày với các phần chính
như sau:
Chương 1 - Tổng quan
Chương 2 - Giải pháp triển khai
Chương 3 - Triển khai thực nghiệm và đánh giá kết quả
Kết luận và hướng phát triển.



4
CHƯƠNG 1: TỔNG QUAN
1.1. Đặt vấn đề
Nước ta hiện nay có một số lượng lớn phương tiện xe máy,
xe gắn máy đang lưu thông. Tình hình ùn tắc giao thông thường
xuyên xảy ra ở nhiều nơi. Vậy làm sao để phân tích lưu lượng xe trên
các đoạn đường, từ đó đưa ra các giải pháp tránh ùn tắc như điều
chỉnh thời gian đèn báo giao thông dựa vào lưu lượng xe, là một
trong những giải pháp để hạn chế vấn đề ùn tắc. Việc nhận diện được
xe là bước đầu tiên trong việc thu thập dữ liệu để lập nên giải pháp
cho vấn đề nan giải này.
Bài toán đặt ra là khi chúng ta đưa vào một video giao thông
có các phương tiện xe máy, thì đầu ra sẽ đưa ra kết quả nhận diện xe
máy trên đường. Từ đó chúng ta có thể áp dụng cho các bài toán lớn
hơn.
1.2. Những nghiên cứu liên quan
Trong những năm gần đây, hệ thống phát hiện và nhận dạng
đối tượng đã được áp dụng vào nhiều lĩnh vực hệ thống thông minh
như siêu thị thông minh, máy bán hàng tự động, hệ thống giám sát an
ninh, tương tác người - máy thông minh và nhiều ứng dụng công
nghiệp khác. Trong lĩnh vực nghiên cứu về giao thông, đã có một số
nghiên cứu về việc giám sát và nhận dạng phương tiện giao thông.
Trong phạm vi luận văn, tác giả xin giới thiệu một số nghiên cứu sau:
Luo-Wei Tsai và cộng sự [1], phát hiện phương tiện sử dụng
màu sắc được chuẩn hóa và bản đồ biên. L. Tsai đã đưa ra phương
pháp biến đổi mới để tìm “màu xe” từ hình ảnh để định vị các ứng
viên một cách nhanh chóng. Họ còn trình bày hệ thống phát hiện từ
phía sau theo thời gian thực sử dụng các phương pháp dựa trên độ

dốc và phân loại Adaboost cho các ứng dụng ACC. Các kết quả thực


5
nghiệm cho thấy phương pháp này thực hiện rất hiệu quả trên ảnh
tĩnh với độ chính xác trung bình là 94.5%. Độ chính xác của phát
hiện phương tiện trên di chuyển còn chưa cao.
A. Khammari và cộng sự [2] phát hiện phương tiện kết hợp
phân tích độ dốc và phân loại AdaBoost. A. Khammari đã giới thiệu
hệ thống phát hiện từ phía sau theo thời gian thực sử dụng các
phương pháp dựa trên độ dốc và phân loại Adaboost cho các ứng
dụng ACC. Thuật toán phát hiện bao gồm hai bước chính: tạo giả
thuyết dựa trên độ dốc và xác minh giả thuyết dựa trên ngoại hình.
Tạo giả thuyết sử dụng ngưỡng phụ thuộc phạm vi thích ứng và đối
xứng để định vị tối đa độ dốc. Xác thực giả thuyết dựa trên sử dụng
AdaBoost để phân loại với các phân loại độc lập với độ sáng. Hệ
thống một mắt được thử nghiệm theo các kịch bản giao thông khác
nhau (ví dụ: đường cao tốc có cấu trúc đơn giản, môi trường đô thị
phức tạp, điều kiện ánh sáng khác nhau), kết quả hiệu suất tốt. Hệ
thống thường không nhận diện được phương tiện cách xa quá 60m.
Zhiquan Ren cùng công cụ [3] phát hiện phương tiện dựa sử
dụng smartphone Android R. Zhiquan v.v. đã trình bày một công
nghệ di động sử dụng điện thoại thông minh để phát hiện chiếc xe đi
trước. Công nghệ này sử dụng camera phía sau của smartphone
Android để chụp ảnh cảnh lái xe, sau đó sử dụng thuật toán thị giác
máy tính tiên tiến để phát hiện và theo dõi chiếc xe đi trước. Với tài
nguyên tính toán hạn chế của điện thoại thông minh, thuật toán đạt
được tốc độ lấy mẫu cao khoảng 7Hz, đủ nhanh cho các ứng dụng
thực tế.
Denis Kleyko và cộng sự [4] so sánh các kỹ thuật học máy để

phân loại xe bằng cảm biến bên đường. D. Kleyko v.v. đã đưa ra sự
so sánh các thuật toán học máy khác nhau để phân loại phương tiện.


6
Tập dữ liệu của họ bao gồm 3074 mẫu. Hồi quy logistic, mạng nơ ron
và máy vector hỗ trợ đã được sử dụng để phân loại. Theo kết quả của
[10] hồi quy logistic cho thấy hiệu suất tốt nhất trong số các phương
pháp học máy khác với tỷ lệ phân loại trung bình trên bộ dữ liệu xác
nhận đạt 93,4%. Vấn đề chính gặp phải là tập dữ liệu. Nó lệch khá
nhiều đối với một trong các lớp và gây khó khăn cho việc phân tích
về việc phân loại.
Zezhi Chen và cộng sự [5] so sánh các hệ thống phân loại,
chỉ ra cách phân loại xe bằng cách sử dụng các thông số về kích
thước và hình dạng. Phân loại dùng cho bốn loại phương tiện (xe
máy, xe tải, xe buýt và xe đạp/ xe máy) và nó được thực hiện theo hai
cách tiếp cận khác nhau: hai phân loại dựa trên tính năng (SVM và
rừng ngẫu nhiên (Random Forest - RF)) và phương pháp dựa trên mô
hình. Nghiên cứu cho thấy rằng SVM luôn vượt trội so với RF, với
độ chính xác phân loại cuối là 96,26%. Số lượng các phân loại sai sót
cao nhất xảy ra giữa xe và xe tải, trong đó đặc điểm kích thước và
hình dạng thể hiện sự tương đồng đáng kể.
Muhammad Asif Manzoor cùng cộng sự [6] đã đề xuất một
phương pháp dựa trên máy vectơ hỗ trợ (SVM) tuyến tính để giải
quyết vấn đề này. Việc trích xuất các đặc điểm và hiển thị các điểm
đặc trưng thì phép biến đổi đặc điểm không phụ thuộc phạm vi
(SIFT) được sử dụng. Mô hình túi từ được sử dụng để phân loại.
Phương pháp đề xuất được thử nghiệm dựa trên bộ dữ liệu
NTOUMMR và cho thấy tỷ lệ chính xác trung bình là 89%. Bộ dữ
liệu chứa hình ảnh xe trực diện.

Qua những nghiên cứu trên, ta thấy các phương pháp, kết quả
nghiên cứu trên có ý nghĩa thực tiễn với độ chính xác tương đối, tuy
nhiên mỗi phương pháp đều có hạn chế nhất định và tốn nhiều tài


7
nguyên. Vì vậy, cần một phương pháp có tốc độ xử lý nhanh và độ
chính xác tốt hơn bằng cách ứng dụng kỹ thuật Học sâu để nhận dạng
và đếm xe máy.
1.3. Kỹ thuật học sâu
1.3.1. Tổng quan về học sâu
Học sâu (deep learning) là một nhánh của ngành máy học,
dựa trên một tập hợp các thuật toán để cố gắng mô hình dữ liệu để
trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu
trúc phức tạp, hoặc bằng cách khác bao gồm nhiều lớp biến đổi phi
tuyến để trích tách đặc trưng và chuyển đổi [12]. Mỗi lớp kế tiếp
dùng đâu ra của lớp trước làm đầu vào. Các thuật toán này có thể
được giám sát hoặc không cần giám sát và các ứng dụng bao gồm các
mô hình phân tích (không giám sát) và phân loại (giám sát).
Một trong những phương pháp học sâu thành công nhất là
mô hình mạng nơ-ron nhân tạo (Arificial Neural Network) [12].
Mạng nơ-ron nhân tạo được lấy cảm hứng từ các mô hình sinh học
năm 1959 được đề xuất bởi người đoạt giải Nobel David H. Hubel &
Torsten Wiesel, 2 người đã tìm thấy hai loại tế bào trong vỏ não thị
giác chính: các tế bào đơn giản và các tế bào phức tạp.
Mạng nơ-ron nhân tạo là sự kết hợp của các tầng perceptron
hay còn gọi là perceptron đa tầng (multilayer perceptron) như hình
bên dưới:

Hình 1.5: Mạng nơ-ron nhân tạo



8
Kiến trúc chung của mạng nơ-ron nhân tạo bao gồm thành
phần: Lớp đầu vào, Lớp ẩn và Lớp đầu ra.
1.3.2.

Mạng nơ-ron tích chập – Convolutional neural

network (CNN)
Convolutional Neural Network (CNN – Mạng nơ-ron tích
chập) là một trong những mô hình Deep Learning tiên tiến giúp cho
chúng ta xây dựng được những hệ thống thông minh với độ chính xác
cao như hiện nay như hệ thống xử lý ảnh lớn như Facebook, Google
hay Amazon đã đưa vào sản phẩm của mình những chức năng thông
minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái
hay drone giao hàng tự động. CNN được sử dụng nhiều trong các bài
toán phát hiện các object trong ảnh.
1.4. Các kỹ thuật liên quan đến xử lý ảnh và nhận diện
đối tượng.
1.4.1. Tổng quan về xử lý ảnh
Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh
đầu vào nhằm tạo ra kết quả mong muốn. Kết quả đầu ra của một quá
trình xử lý ảnh có thể là một ảnh tốt hơn hoặc một kết luận nào đó.
Hệ thống xử lý ảnh hoạt động theo các bước sau:

Thu
nhận ảnh

Tiền xử



Trích chọn
đặc trưng

Phân loại, nhận
dạng mẫu

Ra quyết
định

Biểu diễn
tri thức

Hình 1.12. Sơ đồ tổng quát hệ thống xử lý ảnh [13]


9
1.4.2. Các vấn đề cơ bản trong xử lý ảnh
- Nắn chỉnh biến dạng
- Khử nhiễu
- Chỉnh số mức xám
- Giảm số mức xám
- Tăng số mức xám
- Nén ảnh
1.4.3. Nhận diện và phân loại ảnh
Phát hiện tự động, phân loại và nhóm các mẫu là những vấn
đề quan trọng của thị giác máy tính, được ứng dụng trong nhiều
ngành, lĩnh vực khác nhau. Các hệ thống phát hiện và nhận dạng đối
tượng hiện nay thường có ba bước xử lý:

Bước 1: Sử dụng một mô hình hoặc một thuật toán để tạo ra
các vùng ứng viên, các khu vực quan tâm. Các vùng ứng viên này là
một tập hợp lớn các hộp giới hạn để xác định đối tượng.
Bước 2: Trích xuất đặc trưng từ các hộp giới hạn tìm được,
chúng được đánh giá và xác định xem đối tượng nào có mặt trong
hộp giới hạn đó (tức là thành phần phân loại đối tượng) hay không.
Bước 3: Trong bước hậu xử lý cuối cùng, các hộp chồng
chéo nhau được kết hợp thành một hộp giới hạn sử dụng một số thuật
toán như Non-maximum suppression, …
1.5. Kết luận chương 1
Trong chương 1 đã giới thiệu một số nghiên cứu liên quan và
đánh giá được các phương pháp cũng như kết quả của các nghiên cứu
đó. Từ đó đưa ra một số cơ sở lý thuyết về kỹ thuật học sâu, mạng
CNN và một số kỹ thuật liên quan đến xử lý ảnh. Trong nội dung
chương 2 tiếp theo, luận văn sẽ trình bày giải pháp triển khai đề tài.


10
CHƯƠNG 2: GIẢI PHÁP TRIỂN KHAI
2.1. Mô hình giải quyết bài toán
Bài toán phát hiện và đếm xe máy bao gồm hai bài toán nhỏ
hơn đó là: Bài toán nhận dạng xe và bài toán đếm xe đã được nhận
dạng.
- Bài toán nhận dạng xe: mục tiêu của bài toán là từ một bức
ảnh cụ thể hoặc một video cụ thể, phải nhận dạng được đâu là chiếc
xe máy. Bài toán này là một bài toán khó vì xe máy hiện có nhiều
chủng loại, khi lưu thông trong thực tế thì có nhiều trường hợp khác
nhau như xe thì chạy ngược, xe thì chạy xuôi, xe này có thể che
khuất xe kia, hoặc có xe thì chở hai, có xe thì chở rất nhiều hàng hóa.
Làm sao để giải được bài toán này để nhận ra xe máy một cách tối ưu

là một trong những bước quyết định đến độ chính xác của bài toán
đếm xe.
- Bài toán đếm xe: sau khi đã nhận diện được các đối tượng
xe máy, chúng ta tiến hành đếm số đối tượng. Yêu cầu đặt ra cho bài
toán đó là đếm chính xác, không thừa cũng không thiếu.
Mô hình đề xuất cho quá trình nhận dạng và đếm xe như sau:


11
- Tiền xử lý: Ở bước này, các thao tác như lọc nhiễu dữ
liệu đầu vào, căn chỉnh độ sáng và các thao tác cơ bản khác
được thực hiện.
- Gán nhãn: Sử dụng công cụ đánh nhãn để đánh dấu hình
ảnh xe máy trên ảnh đầu vào.
- Huấn luyện: Sử dụng một mô hình có sẵn để xây dựng mô
hình cho hệ thống.
- Nhận dạng: Quá trình nhận dạng được thực hiện qua các
bước xử lý tương tự với ảnh đầu vào.
- Đếm: Sau khi phát hiện và nhận dạng đối tượng, ta sẽ
khoanh vùng hoạt động để thực hiện đếm xe máy.
Mô hình YOLO là 1 hệ thống nhận diện vật thể dựa trên cơ
sở dữ liệu của Pascal VOC 2012. Nó có thể nhận diện đươc 80 nhóm
vật thể gồm chim, chó, người, xe cộ,…
Mô hình YOLO sử dụng một mạng Neural trên toàn bộ hình
ảnh. Mạng này chia hình ảnh thành nhiều vùng và xác suất dự đoán
trên từng vùng đó, từ đó đưa ra trọng số dự đoán vật thể cho các vùng
đã dự đoán.
2.2. Các công cụ và môi trường triển khai đề tài
2.2.1. Công cụ xử lý hình ảnh OpenCV
OpenCV (Open Computer Vision) là một thư viện mã nguồn

mở hàng đầu cho xử lý về thị giác máy tính, machine learning, xử lý
ảnh.
Trong đề tài này, OpenCV được sử dụng chủ yếu trong việc
đọc file ảnh, file video, cắt ảnh và hiển thị video cho người dùng
xem.


12
2.2.2. Công cụ đánh nhãn hình ảnh LabelImage
Để huấn luyện cho các mô hình học máy chúng ta cần một
lượng lớn dữ liệu để huấn luyện mô hình, trong bước này chúng ta
phải đi gán nhãn cho các đối tượng xe máy trong một bức ảnh, nhãn
này bao gồm tên đối tượng và vị trí của nó trong một bức ảnh.
Để làm được việc đó thì công cụ đánh nhãn LabelImage là
một trong những công cụ hiệu quả, miễn phí.
2.2.3. Thư viện học máy YOLO
YOLO là từ viết tắt của You only look once. Đó là một hệ
thống phát hiện đối tượng thời gian thực nhanh, hiện đại, sử dụng bộ
dữ liệu đa dạng, là một mô hình phát hiện đối tượng sử dụng các tính
năng được học bởi một mạng CNN để phát hiện đối tượng.
a) Phát hiện đồng nhất
YOLO sử dụng mạng thống nhất để thực hiện dự đoán cả ảnh
một lần. YOLO chia hình ảnh đầu vào thành lưới S×S. Mỗi ô lưới dự
đoán chỉ một đối tượng.
Tuy nhiên, quy tắc một đối tượng giới hạn mức độ có thể
phát hiện của các đối tượng. Vì thế, YOLO có một số hạn chế về
mức độ gần gũi của các vật thể.
b) Kiến trúc mạng

Hình 2.10: Kiến trúc mạng mô hình YOLO



13
YOLO có 24 lớp chập theo sau là 2 lớp được kết nối đầy đủ
(FC). Một số lớp chập sử dụng xen kẽ các lớp giảm 1 × 1 để giảm độ
sâu của bản đồ các đặc điểm. Đối với lớp chập cuối cùng, nó tạo ra
một tensor có hình dạng (7, 7, 1024). Tensor này sau đó được làm
phẳng. Sử dụng 2 lớp được kết nối đầy đủ như một hình thức hồi quy
tuyến tính, nó cho ra các 7 × 7 × 30 tham số và sau đó định dạng
thành (7, 7, 30), tức là 2 dự đoán hộp ranh giới cho mỗi vị trí.
c) Lợi ích của YOLO
- Nhanh. Tốt cho xử lý thời gian thực.
- Dự đoán (vị trí đối tượng và các lớp) được thực hiện từ một
mạng duy nhất. Có thể được huấn luyện từ đầu đến cuối để cải thiện
độ chính xác.
- YOLO được khái quát hơn. Nó vượt trội so với các phương
pháp khác khi khái quát hóa từ hình ảnh tự nhiên sang các lĩnh vực
khác như tác phẩm nghệ thuật.
- Phương pháp đề xuất khu vực giới hạn phân loại cho khu
vực cụ thể. YOLO truy cập vào toàn bộ hình ảnh trong việc dự đoán
ranh giới. Với bối cảnh bổ sung, YOLO thể hiện ít tích cực sai hơn
trong các khu vực nền.
- YOLO phát hiện một đối tượng trên mỗi ô lưới. Nó thực thi
sự đa dạng không gian trong việc đưa ra dự đoán.
2.3. Ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình bậc cao, mã nguồn mở,
dùng cho nhiều mục đích, trong đó có dùng trong nghiên cứu dữ liệu,
học máy.
Trong đề tài này, Python là ngôn ngữ dùng để viết chương
trình nhận dạng xe máy.



14
2.4. Bản triển khai DarkFlow
DarkFlow là bản triển Python của YOLOv2 mà chạy được
trên Tensorflow. Tôi sử dụng hệ thống này vì đối với những đối
tượng mà tôi muốn phát hiện (xe máy, ôtô, người đi bộ), tôi muốn tạo
tập huấn luyện và thực hiện việc training của riêng mình.
Tôi sử dụng hệ thống này vì đây là một hệ thống không cần
quá nhiều tài nguyên GPU để huấn luyện mạng lưới và nó nhanh gấp
nhiều lần Darknet. Nhưng điều bất lợi của hệ thống này là chưa cập
nhật lên YOLOv3.
2.5. Thư viện TensorFlow
TensorFlow là một thư viện phần mềm nguồn mở để tính
toán số hiệu suất cao. Kiến trúc linh hoạt của nó cho phép dễ dàng
triển khai tính toán trên nhiều nền tảng khác nhau (CPU, GPU, TPU)
và từ máy tính để bàn đến các cụm máy chủ tới thiết bị di động và
cạnh. Được phát triển bởi các nhà nghiên cứu và kỹ sư từ nhóm
Google Brain trong tổ chức AI của Google, nó hỗ trợ mạnh mẽ cho
học máy và học sâu và lõi tính toán linh hoạt được sử dụng trên nhiều
lĩnh vực khoa học khác.
2.6. Thuật toán RCNN - DeepLearning
Faster RCNN là một thuật toán để tìm kiếm vị trí của vật thể
trong ảnh. Thuật toán này sẽ có đầu ra là những hình hộp, cùng với
vật thể bên trong hộp đó là gì. Phiên bản đầu tiên của Faster RCNN
là RCNN, với nguyên lý khá đơn giản.
Sử dụng các mạng huấn luyện sẵn để feed-forward các
region proposals, sẽ tốn nhiều thời gian bởi với mỗi ảnh thuật toán
selective search sẽ cho ra hàng nghìn region proposals.
Tác giả sẽ chỉ feed-forward một lần đối với ảnh gốc, thu

được convolutional features của ảnh đó. Ví dụ với một hình ảnh có


15
kích thước 600∗600∗3600∗600∗3, ta sẽ thu được convolutional
features với kích thước 37∗37∗51237∗37∗512. Kích thước của
features bị giảm nhỏ khoảng 16 lần 6003760037.
Dựa vào kích thước cùng vị trí của các region proposals đối
với ảnh gốc, ta sẽ tính toán được vị trí của region proposal trong
convolutional features.
Sử dụng giá trị convolutional faetures của region proposal, ta
dự đoán được vị trí các đỉnh của bounding box cũng như vật thể nằm
trong bounding box là gì.
Đối với Fast RCNN, do chia sẻ tính toán giữa các region
trong ảnh, tốc độ thực thực thi của thuật toán đã được giảm từ 120s
mỗi ảnh xuống 2s. Phần tính toán gây ra nghẽn chính là phần đưa ra
các region proposal đầu vào, chỉ có thể thực thi tuần tự trên CPU.
Faster RCNN giải quyết vấn đề này bằng cách sử dụng DNN để tính
toán các region proposals này.
2.7. Kết luận chương 2
Trong chương 2, đã miêu tả được tổng quan mô hình giải
quyết bài toán và đã trình bày một số công cụ, môi trường để triển
khai đề tài. Qua những phân tích trên có thể nhận thấy mô hình
YOLO là một trong những mô hình có hiệu quả tốt khi được áp dụng
vào các hệ thông phát hiện phương tiện giao thông phục vụ giám sát
và điều chỉnh các hệ thông quản lý giao thông hiện tại, qua đó đánh
giá và chỉ ra được ưu điểm của mô hình YOLO.
Trong chương 3 tiếp theo, luận văn sẽ trình bày các bước
thực hiện huấn luyện mô hình học máy để nhận dạng và đếm xe máy,
từ đó đánh giá kết quả đạt được.



16
CHƯƠNG 3: TRIỂN KHAI THỰC NGHIỆM VÀ ĐÁNH GIÁ
KẾT QUẢ
3.1. Các bước thực hiện
Để huấn luyện mô hình học máy nhận dạng được xe gắn
máy, thì tôi đã thực hiện nhiều bước theo thứ tự như sau:
- Bước 1: Thu thập dữ liệu và dán nhãn,
- Bước 2: Cài đặt Darkflow,
- Bước 3: Tìm một mô hình được huấn luyện trước (Ex: bộ
dữ liệu COCO hoặc VOC) để build thử,
- Bước 4: Train model mới,
- Bước 5: Kiểm tra lại kết quả nhận được và đánh giá.
3.1.1. Thu thập dữ liệu
Dữ liệu cần chuẩn bị là hình ảnh có chứa hình xe máy, những
hình ảnh này ta có thể trích xuất từ các camera giao thông của thành
phố Đà Nẵng1
Sau khi thu thập, ta có một tập hình ảnh gồm 765 hình ảnh.
Ta chia hình ảnh này ra hai phần theo tỉ lệ 80% để train và 20% để
test.
3.1.2. Gán nhãn
- Bước 1: Khởi động LabelImage với python3
- Bước 2: Chọn folder chứa ảnh của các đối tượng
- Bước 3: Chọn folder để chứa các file xml
- Bước 4: Để đánh dấu 1 đối tượng, ta click chọn
Create/RectBox sau đó kéo thả để tạo 1 ô vuông bao quanh đối tượng
- Bước 5: Đánh tên class của đối tượng vừa chọn và nhấn OK
- Bước 6: Sau đó 1 đối tượng mới sẽ được tạo ra


1




17
- Bước 7: Nhấn nút Save để tạo hay cập nhật file xml. Sau
bước này ta được các file .xml chứa nhãn của đối tượng xe máy.
3.1.3. Cài đặt Darkflow
Để cài đặt Darkflow, yêu cầu máy tính phải có Python 2.7
hoặc Python 3.6.
Bước 1: Trước tiên ta phải cần cài đặt môi trường ảo để chạy
Darkflow;
Các bước tiếp theo đều được thực hiện trên môi trường ảo
Bước 2: Cài đặt các thư viện cần thiết để có thể chạy
Darkflow;
Bước 3: Cài đặt Darkflow đã chỉnh sửa để dùng cho mục
đích cá nhân.
3.1.4. Xây dựng cây thư mục
Tôi đã thay đổi cấu trúc của thư mục của project gốc để phù
hợp với yêu cầu bài toán, và thu được cây thư mục như sau:
H

H
ình 3.11: Cấu trúc thư mục project


18

Hình 3.12: Cấu trúc thư muc train.


Hình 3.13: File chạy project.
Trong đó:
- Thư mục train/Annotations sẽ chứa nhãn của hình ảnh mà
chúng ta đã dán nhãn trước đó.
- Thư mục ckpt/ chứa model đã train.
- Thư mục train/Images chứa tập ảnh train ở bước thu thập
dữ liệu.
3.1.5. Tìm một mô hình được huấn luyện trước
Tải mô hình đã train sẵn2 rồi bỏ vào thư mục weights. Chỉnh
sửa file config cho phù hợp với số đối tượng cần train:

Hình 3.14: Tệp config YOLO
Chúng ta cần thay đổi 2 dòng:
- Ở phần [convolutional] cuối cùng, chúng ta cần phải thay
đổi số lượng bộ lọc (filter) với công thức bộ lọc=(số class+ 5)*5, vì
chúng ta chỉ có 3 class nên filters=40.
- Ở phần [region] có 1 dòng chỉ số class (khoảng dòng 244),
chuyển thành classes=3
Sau đó, chỉnh sửa file labels.txt với tên của từng đối tượng
cần train
2

/>

19
3.2. Quá trình huấn luyện
Sau khi chúng ta đã có mô hình train sẵn, tập dataset, và file
config. Sau đó từ thư mục gốc, chạy lệnh trong terminal:
$


python

flow

--model

cfg/yolo-voc-1.cfg

--load

weights/yolov2.weights --train --annotation train/Annotations -dataset train/Images --gpu 0.8 --epoch 70
Để 70 epoch. Một Epoch là khi tất cả dữ liệu được đưa vào
mạng neural network 1 lần. Khi dữ liệu quá lớn, chúng ta không thể
đưa hết mỗi lần 1 epoch để huấn luyện. Buộc lòng chúng ta phải chia
nhỏ 1 epoch ra thành các batch nhỏ hơn.
Quá trình train sẽ mất nhiều thời gian và chiếm nhiều tài
nguyên hệ thống. Vì vậy lúc train nên hạn chế các tiến trình và ứng
dụng khác.
Tiến hành train cho đến khi giá trị của hàm loss về thấp nhất
có thể thì mới nên dừng lại.
Mỗi lần checkpoint sẽ được lưu vào file “ckpt” và sau đó ta
sẽ lấy step cao nhất để test nhận dạng đối tượng.
Ở đây sẽ lấy step 3250 tương ứng với model 4 file yolo-voc1-3250... và có thể xóa các file checkpoint khác.

Hình 3.22: 4 file checkpoint được sử dụng để nhận dạng
3.3. Tạo file để test video
Ban đầu tôi sử dụng của Darkflow để thử model vừa được
huấn luyện. Sau đó để có thể thực hiện dễ dàng cho các mục đích
riêng sau này, ví dụ như lấy được tọa độ của từng đối tượng đã nhận



20
dạng được, rồi vẽ khung cho nó,... thì tôi đã thay đổi và viết ra file
testVideo.py để làm việc đó.
Đưa đường dẫn video mà chúng ta muốn nhận dạng vào
Sau đó ta sẽ lấy tọa độ của từng đối tượng đã nhận dạng
trong một khung hình (frame) để vẽ khung
3.4. Xử lý video và đếm xe
Sau khi train dữ liệu xong, chúng ta đã có thể nhận dạng xe
máy. Ta tiến hành xử lý video đầu vào và sử dụng model đã training
ở trên để nhận dạng đối tượng là xe máy trong video. Vấn đề đặt ra ở
đây là khi đọc video thì chúng ta sẽ đọc từ frame một ra và nhận dạng
đối tượng, nếu chỉ dùng các đối tượng này để đếm thì số lượng xe sẽ
cao hơn rất nhiều so với số lượng thực tế. Nên chúng ta cần có một
thuật toán tracking để theo dõi đối tượng và đếm dựa trên đối tượng
đó.
Ở đây tôi sử dụng thuật toán Centroid để tracking đối tượng.
Về cơ bản thì khi đọc hai frame liên tiếp nhau sau đó ta tính khoảng
cách Euclid giữa các đối tượng có trong hai frame và tìm khoảng
cách nhỏ nhất giữa các đối tượng. Hai đối tượng có khoảng cách càng
nhỏ thì hai đối tượng đó chính là một. Mặc dù thuật toán còn nhiều
hạn chế nhưng áp dụng bài toán của chúng ta vẫn hoạt động tốt.
Các bước xử lý như sau:
- Đọc video
- Đọc từng frame của video
- Nhận dạng xe máy
- Tracking object
- Vẽ line
- Tiến hành đếm xe máy nếu cán qua line



21
3.5. Kiểm tra lại kết quả nhận được
Chạy demo một video lấy từ hệ thống camera giao thông Đà
Nẵng 0511.vn:
$ python testVideo.py
Thu được video kết quả tại thư mục Dataset/Test/video.avi
3.6. Kết quả thực nghiệm
3.6.1. Nhận dạng xe máy
Sau quá trình huấn luyện ta thu được một mô hình có thể
nhận dạng xe máy. Để đánh giá khả năng nhận dạng xe máy của mô
hình, tôi đã thử cho mô hình nhận dạng 60 bức ảnh khác nhau có
chứa 286 chiếc xe máy ở nhiều góc, kích thước lớn nhỏ khác nhau.
Sau đó dùng lệnh sau để nhận dạng các đối tượng trong thư mục
images:
$python flow --imgdir images --model cfg/yolo-voc-1.cfg -load 3250
Kết quả thống kê thể hiện Bảng 1.
Bảng 1: Thống kê kết quả hiệu suất nhận dạng xe máy
Hình

Số xe máy có
trong ảnh

Số xe máy
nhận dạng
được

Tỉ lệ nhận
dạng


1 - 10

54

40

74.07 %

11 - 20

45

34

75.56 %

21 - 30

39

33

84.61 %

31 - 40

65

57


87.69 %

41 - 50

37

32

86.48 %

51 - 60

46

38

82.61 %

Tổng cộng:

286

234

81.81 %

60 hình



22
Do nhiều yếu tố như bộ huấn luyện người quá ít và hình để
kiểm tra có người ở trong quá ít nên ở đây tôi sẽ không thống kê đối
tượng là người, và dự định trong tương lai kết quả về đối tượng này
sẽ khả quan hơn.
3.6.2. Đếm số lượng xe máy
Thực nghiệm trên một video mẫu được trích xuất từ camera
giao thông tại đoạn đường Trần Cao Vân thu được kết quả như sau:
Bảng 2: Thống kê kết quả hiệu suất đếm xe máy
Số xe máy

Số xe máy

Độ lệch (Thực tế

thực tế

đếm được

- Đếm được)

0 – 60

7

7

0%

61 – 200


7

8

-12.5%

201 – 400

7

3

+133.33%

401 – 600

10

9

+11.11%

601 – 800

11

11

0%


801 – 1000

7

4

+75%

1001 - 1200

14

19

-26.3%

STT

3.7. Nhận xét kết quả
3.7.1. Nhận dạng xe máy
Kết quả nhận dạng xe máy của mô hình như thống kê ở trên
là khá cao khi mà các xe máy lưu thông ở đường phố thì có rất nhiều
sự khác biệt nhau về màu sắc, kích thước, số lượng người ngồi trên
xe máy hay loại hàng hóa chở trên xe, và còn bị ảnh hưởng bởi nhiều
yếu tố khác như bị che khuất, bóng cây…
Qua thực nghiệm thì nhận thấy rằng mô hình cho kết quả
nhận dạng cao nhất khi mà các xe không bị che khuất, và có kích
thước vừa phải.



23
Đối với một số trường hợp xe máy không nhận dạng được thì
chủ yếu là do bị che khuất một phần, kích thước hình ảnh xe quá nhỏ.
Đặc biệt, mô hình còn bị nhầm lẫn khi nhận dạng xe đạp, xe đạp điện
thành xe máy, vì hai phương tiện này tương đối giống xe máy, và mô
hình không được huấn luyện để nhận dạng xe đạp và xe đạp điện.
3.7.2. Đếm số lượng xe máy
Độ chính xác của hệ thống đếm xe máy là khá cao. Kết quả
triển khai bài toán này như ta thấy ở trên vẫn có nhiều khả quan khi
ứng dụng vào bài toán yêu cầu độ chính xác không quá lớn, có thể
đưa ra con số chấp nhận được. Từ hệ thống đơn giản này, ta có thể
cải tiến để nâng cao khả năng nhận dạng xe cũng như độ chính xác
của bài toán.
Kết quả của bài toán phụ thuộc rất nhiều vào tình hình giao
thông, thời tiết, địa điểm thực hiện và nhiều yếu tố khác. Mật độ lưu
thông của các phương tiện giao thông càng lớn thì độ chính xác cũng
giảm dần. Cũng tương tự nếu thời tiết diễn biến xấu hay địa điểm
đếm xe có nhiều vật cản che khuất hay có nhiều bóng cây. Bên cạnh
đó thuật toán chưa ổn định cũng là một yếu tố ảnh hưởng đến kết
quả.
3.8. Kết luận chương 3
Trong chương 3 đã triển khai thực hiện các bước thực
nghiệm để huấn luyện mô hình nhận dạng và đếm xe máy. Từ đó
đánh giá được kết quả sau khi thực hiện với mô hình YOLO.


×