3.1. Môi trường
Mô hình được test va train trên Google Colab với môi trường Ubuntu 18.04 va
các thư viện cần thiết:
— OpenCV
— TensorFlow 1.15
— TensorFlow-gpu 1.15
— Keras 2.3.1
— Numpy
Set up va chay thuc té trén TX2:
— Flash Ubuntu cho Tx2 voi phién ban Ubuntu 18.6, jetpack 4.1.
— Cai đặt các môi trường tương tự như trên cho Tx2.
— Sử dụng code và mô hình weight cuối cùng.
— Chạy chương trình với video .mp4.
Khóa luận tốt nghiệp sử dụng ngôn ngữ python là chủ yếu. Các thư viện phổ biến như openev, numpy sẽ can cho công việc tiền xử lý ảnh. Và quan trọng nhất là thư viện mã nguồn mở Tensorflow hỗ trợ các phép toán học trong các bài toán liên quan đến machine learning hay deep learning. Tensorflow hỗ trợ nhiều trong việc training, kiểm tra và đánh giá mô hình của đề tài.
3.2. Input và output của mô hình
Input của mô hình sẽ lấy từ file video dạng .mp4. Quá trình khởi động chạy của
mô hình khi nhúng lên board NVIDIA Jetson TX2 là 1 phút 50 giây, tính từ lúc chạy
code cho đến khi bắt đầu detect real-time.
Khi chạy thực tế, output của mô hình là các ảnh binary được xuất liên tục real- time từ video input. Mỗi frame ảnh sẽ có ba mask màu tương đương với ba đối tượng: làn đường, người và xe, background. Các giá trị mau nằm trong khoảng 0 — 255.
29
Khi kiểm thử, đánh giá, output của mô hình được nhóm xây dựng là ảnh RBG với các lớp đối tượng được gắn mask màu riêng dé dé dàng đánh giá độ chính xác.
3.3. TensorRT
Cốt lõi của NVIDIA® TensorR TTM là thư viện C++ hỗ trợ suy luận hiệu suất cao trên các đơn vị xử lý đồ họa NVIDIA (GPU). Nó được thiết kế để hoạt động theo kiểu bổ sung với các khung đảo tạo như TensorFlow, Caffe, PyTorch, MXNet, v.v.
Nó tập trung đặc biệt vào việc chạy một mạng đã được đảo tạo một cách nhanh chóng
và hiệu quả trên GPU nhằm mục đích tạo ra một kết quả (một quy trình được gọi ở nhiều nơi khác nhau như cho điểm, phát hiện, hồi quy hoặc suy luận).
Một số khuôn khổ đào tạo như TensorFlow đã tích hợp TensorRT dé nó có thé được sử dụng để tăng tốc suy luận trong khuôn khổ. Ngoài ra, TensorRT có thể được
sử dụng như một thư viện trong ứng dụng người dùng. Nó bao gồm các trình phân tích cú pháp để nhập các mô hình hiện có từ Caffe, ONNX hoặc TensorFlow và các API C++ va Python dé xây dựng các mô hình theo chương trình. [16]
30
“ ]
Embedded Automotive Data center
Jetson Drive Tesla
Hình 3.1: Ứng dụng của TensorRT [16]
Hình 3.1 cho thấy TensorRT là một công cụ tối ưu hóa suy luận mạng thần kinh hiệu suất cao và công cu thời gian chạy dé triển khai sản xuất. Khóa luận tốt nghiệp đưa TensorRT vào mô hình dé cải thiện thêm tốc độ FPS khi nhúng chạy trên board NVIDIA Jetson TX2. Cụ thể là nhóm sẽ chuyển mô hình từ Keras sang TensorRT
như quy trình Hình 3.2 sau:
31
Chuyên Su Suy sang (cải luận tiên) mô dùng mô
Chuyén từ Doc input:
Keras sang mo hinh
Tensorflow w TensorRT TensorRT
Hình 3.2: Sơ đồ quy trình chuyền từ Keras sang TensorRT
3.4. Phương pháp đánh giá
Khóa luận tốt nghiệp sử dụng IoU đề đánh giá độ chính xác cho mô hình. Khác với cách tinh IoU đã nêu trong chương 2, đánh giá dựa trên bounding box của lớp đối
tượng thường sử dụng cho thuật toán Object Detection. Thuật toán Semantic
Segmentation ngày nay thường đánh giá bang mean Intersection over Union (mloU). IoU được tính cho mỗi lớp đối tượng ở cấp pixel như công thức sau:
true positives
IoU = 100 + 4 Ta... (3Ù
true positives + false negatives + false positives
Trong công thức (3.1) trên, true-positives là những pixel mà thuộc về một lớp
và khi nhận diện đúng lớp đó, false-negatives là những pixel thuộc về một lớp nhưng khi nhận diện bị sai thành một lớp khác, false-positives là những pixel thuộc về một
lớp khác nhưng khi nhận diện lại là lớp đang đánh giá. Hình dưới là ví dụ minh họa
về tập các pixel nói trên.
Predicted
Hinh 3.3: Minh hoa IoU [2]
32
Hinh 3.3 minh họa cách hoạt động của công thức IoU. Từ hình bên trái sang
phải lần lượt là: ảnh gốc, những pixel cho lớp đối tượng con chó trong điều kiện lý tưởng, những pixel cho lớp đối tượng con chó khi dự đoán bằng mô hình, ảnh khác miêu tả ba thông số trong IoU theo màu: vàng là true-positives, xanh lá là false- negatives, đỏ là false-positives. IoU là giá trị từ 0 đến 100, giá trị càng lớn càng cho thấy sự phân vùng càng chính xác. MIoU là giá trị trung bình của tất cả các lớp đối
tượng có trong bộ dữ liệu. [2]
3.5. Quy trình xây dựng bộ dữ liệu riêng
Với kiến trúc mạng đã chọn là MobileNetV3, nhóm tiễn hành xây dựng bộ dữ liệu riêng. Hiện dữ liệu của nhóm chỉ được lay trong khuôn viên đại hoc quốc gia, trường Đại học UIT và một sé đường lộ các quận lân cận nên nếu dùng model dé detect cac hé théng đường xá vùng khác thì có thể bị giảm độ chính xác. Dữ liệu được lay từ điện thoại va camera được lắp trên xe tự hành của trường hoặc xe cá nhân.
3.5.1. Dữ liệu về đường và lề
Tiến hành thu thập dữ liệu bang camera gan trén xe tu hanh. Sau do, tach lay anh từ video với mỗi tám frame ảnh lấy một tắm nhằm tránh việc trùng lắp hình khi lay anh quá liên tục. Tiếp đó, dùng phần mềm xử lý anh label thủ công, cắt đối tượng làn đường trong mỗi bức ảnh gốc. Lượng dit liệu được label càng nhiều và đa dạng
là một trong những yếu tố giúp tăng độ chính xác cho model.
Thông thường dữ liệu sau khi label và được train thì có dé detect được đối tượng
mong muốn, nhưng khi kiểm tra thử một mô hình sau khi train đữ liệu chỉ có đường
thì nhóm phát hiện làn đường bị detect lem lên cả lề đường, nguyên nhân có thể do màu đường và màu lề có nhiều nét tương đồng dẫn đến mô hình detect lỗi. Hình 3.4 sau lấy ra từ video nhóm detect băng mô hình sau khi train thử bộ đữ liệu chỉ có mỗi
đường.
33
Từ Hình 3.4 có thé thay, nhóm xây dựng code đề detect đánh giá như sau: những vùng nhận là đường thì sẽ tô màu tím, phần còn lại sẽ giữ nguyên. Qua đó thấy được, phần đường phủ nhựa được tô màu tím nhưng phan lề vẫn bị nhận nhằm là đường va
tô mau tím lên nốt.
Do đó, nhóm quyết định xây dựng thêm dữ liệu cho đối tượng lề đường. Tương
tự tiến hành cắt ảnh đối tượng lề đường trong mỗi bức ảnh. Và sau khi train lại và kiểm tra thì nhận thấy kết quả phân vùng tốt hơn, phân vùng làn đường không bị lem lên lề. Hình 3.5 sau đây là kết quả sau khi tạo lại bộ dữ liệu có thêm lề đường.
34
Qua Hình 3.5, ta có thê thấy được sự cải thiện của mô hình sau khi train trên bộ
dữ liệu mới được sửa. Đường phủ nhựa được tô màu tím và phần lề đường không còn
bị nhận nhâm và tô màu lên nữa.
3.5.2. Dữ liệu về người và xe
Nhóm sử dụng Mask RCNN đã qua pretrained với bộ dữ liệu nổi tiếng MS COCO để tách ảnh lấy các đối tượng người và xe. Xét về loại đối tượng thì người và
xe có thé sử dụng lại dit liệu từ nước ngoài nhưng làn đường và lề thì không thé vì cơ
A 2 z7 z7x
câu đường và lê ở các nước phương Tây và châu A khác nhau.
Dữ liệu sau khi tách được lọc bằng thủ công qua phần mềm xử lý ảnh vì có nhiều hình detect sai. Ví dụ: thùng rác chim cánh cụt bi detect nhằm là người. Hình 3.6 và Hình 3.7 sau là kết qua sau bước xử lý dữ liệu từ mô hình Mask RCNN xuất
Ta.
35
Hình 3.6: Hình cắt người
Hình 3.7: Hình cắt xe 3.5.3. Tién xử lý dữ liệu
Tạo một tool bằng python dùng đề xây dựng ảnh đầu vào khi train là ảnh gray các đôi tượng tương ứng một số trong khoảng từ 0 đến 255. Nhóm xây dựng các đối tượng với làn đường 255, người và xe 150, lề 50, còn lại là background.
36
Tạo tool nén chuyên dữ liệu thành định dạng pkl giảm kích thước dữ liệu đầu vào thành 512 x 512. Hình 3.8 sau mô tả khái quát giai đoạn xử lý dữ liệu từ hình gốc cho đến ảnh gray của hai đối tượng làn đường và lề.
3.5.4, Huấn luyện mô hình trên kiến trúc mạng VGG16
Như đã nói trong chương hai trên, kiến trúc mạng VGG16 có độ chính xác khá cao (92.7% trong tập dữ liệu ImageNet) tuy nhiên lại có hai nhược điểm lớn sau:
— Nó rất chậm dé training.
— Ban thân trọng lượng kiến trúc mạng là khá lớn (liên quan đến đĩa/băng thông).
Điều này khiến việc sử dụng nó lên mô hình của nhóm sẽ làm giảm tốc độ xử
lý ra output. Tuy nhiên với độ chính xác 6n định của VGG16, nhóm có thé ứng dụng mạng này vào việc kiểm tra, đánh giá mô hình.
Nhóm dùng mạng VGG16 train trên tập dữ liệu (nhóm đã xây dựng) dùng
Google Colab. Sau đó, lay weight có các giá trị loss thấp nhất va detect các video đường xá ở Việt Nam đề đánh giá khách quan.
37
3.5.5. Kiếm thử và đánh giá
Detect các video nhiều loại đường khác và lọc ra các frame detect không đạt
yêu câu đê label lại. Train tiệp trên tập dữ liệu mới dé cải thiện độ chính xác của model.
3.5.6. Chi tiết quy trình thiết kế dữ liệu
Sơ đồ khối:
4
Label thủ công
lề và đường
Hình cắt lề
Dùng pretrained Mask RCNN
tách người, xe
xấu
Hình cắt người
Label thủ công ảnh
xấu
Tạo dữ liệu
trắng đen
Train dữ
liệu bằng
VGG16
Mô hình đã
train
Hình 3.9: Sơ đồ khối quy trình xây dựng bộ dữ liệu giai đoạn một
Hình 3.9 cho thấy sơ đồ chỉ tiết các bước xây dựng bộ dữ liệu. Giai đoạn một
sẽ lay dữ liệu từ bộ dữ liệu đầu với 6000 mẫu được thu thập chủ yếu trong khuôn viên UIT và xung quanh Làng Đại học Quốc gia. Sau các quá trình label thủ công và kiểm tra/lọc ảnh xấu sẽ tạo dữ liệu ảnh gray và tích trữ ở bộ dữ liệu hoàn chỉnh đồng thời train tập dữ liệu đây bằng VGG16 được một mô hình đã train. Tiếp tục dùng mô hình
đã train dé thực hiện giai đoạn hai trong sơ đồ Hình 3.10 dưới đây.
38
Dùng mô hình VGGI6 đã train
tách đường, lề
Tạo dữ liệu
Dùng trắng đen
pretrained Mask RCNN tách người, xe
Hình cắt xe in dữ
nn ce Train dữ | _ Me hinh a3
i teu Dang train
Label thủ xế VGG16
công ảnh
xấu
Hình cắt người
Hình cắt
đường
Hình cắt lề '
Hình 3.10: Sơ đồ khối quy trình xây dựng bộ dữ liệu giai đoạn hai
Hình 3.10 là giai đoạn hai của quy trình. Bộ dữ liệu mới được lấy từ Làng Đại học Quốc gia ra các đường lộ và khu vực xung quanh không quá 50 kilomet. Với việc
mô hình đã train từ giai đoạn một với 6,000 mẫu thì đã có độ chính xác khá ồn định. Nhóm dùng mô hình đã train tách đường và lề thay vì label thủ công như giai đoạn một. Sau đó sẽ loc/kiém tra nếu ảnh xấu thi label thủ công các ảnh đó còn nếu đẹp thì tiếp tục qua bước tạo dữ liệu trang den va tích trữ vào bộ dữ liệu hoàn chỉnh. Từ anh gray sẽ tiếp tục train dit liệu bằng VGGI6 và lặp lại bước đầu của giai đoạn hai, bộ
dữ liệu mới tiếp tục là những video đi thu thập bên ngoài Làng Đại học Quốc gia, cho đến khi bộ dữ liệu hoàn chỉnh đạt 13,000 mẫu thì dùng.
39
Chương4. KET QUA THỰC NGHIEM
4.1. Kết quả mô hình sau khi training
4.1.1. Bộ dữ liệu
Bộ dữ liệu nhóm tự xây dựng bao gồm 13,000 mẫu được chia thành 10,000 tập train và 3,000 tập test. Dữ liệu là những ảnh gray với các mask đối tượng đường, người, xe. Phạm vi dữ liệu được lay ở làng Đại học Quốc Gia, các đường quốc lộ quận 9, Gò Vấp, Thủ Đức.
4.1.2. Qua trình train
Nhóm train mô hình trên kiến trúc mạng MobileNetV3 sử dụng GPU V100 với
RAM 12GB của Goolge Colab.
Các thông số tùy chỉnh khi training: batch size 16, số lượng epoch train là 1000, learning rate bắt đầu 103 và momentum là 0.9. Quá trình training kết thúc tại epoch
500.
Nhóm sử dụng Adam optimizer là một trình tối ưu hóa được sử dụng rộng rãi giúp mô hình hội tụ nhanh hơn, do đó, tiết kiệm thời gian tính toán, nhưng nỗi tiếng
là không khái quát hóa tốt như Stochastic Gradient Descent AKA SGD. Giống với Adadelta và RMSprop, nó duy trì trung bình bình phương độ dốc (slope) quá khứ (vt)
và cũng đồng thời duy trì trung bình độ dốc quá khứ (mt), giống momentum.
Trong khi momentum giống như một quả cầu lao xuống dốc, thì Adam lại giống như một quả cầu rat nặng và có ma sát (friction), nhờ vậy nó dé dàng vượt qua local minimum và đạt tới điểm tối ưu nhất (flat minimum). Nó đạt được hiệu ứng Heavy Ball with Friction (HBF) nhờ vào hệ số (mt/sqrt(vt)).
4.1.3. Kết qua
Giá trị loss sau khi kết thúc quá trình training được thé hiện trong Hình 4.1 sau.
40
Bieu do loss
10 — loss tran
120
100
80
so
20
° 20 40 so 80
Epoch
Hình 4.1: Biểu đồ Loss
Hình 4.1 cho thấy sự thay đổi của giá trị loss tập validation và tập train trong quá trình training mô hình của nhóm. Giá trị loss train đạt cao từ những epoch đầu với giá trị 140 và sau đó giảm nhanh sau khi train tới epoch thứ 10 trở đi và ổn định dan các epoch về sau và dừng train tại epoch 90 với loss 9.32 vì không thé giảm được nữa. Val loss giảm khá giống như train loss nên có thể thấy mô hình không bị
overfitting hay underfitting.
Sau khi train mô hình của nhóm đã có thé detect được với đủ ba đối tượng đường, người và xe. Tuy nhiên, mục tiêu ban đầu của nhóm muốn phân vùng mask riêng cho cả ba đối tượng. Mà những đối tượng được gán giá trị khác 255 thì khó
phân lớp bởi giá trị màu trải dài trong một khoảng, nên chọn phương pháp gộp hai
đối tượng người xe. Nhờ thé sẽ dé gom cụm màu và tăng tốc độ xử lý anh mask sau khi nhận diện. Hình 4.2 sau là kết quả khi detect một tắm hình bằng mô hình hoàn chỉnh của nhóm. Hình cho thấy một ảnh output sau khi qua detect một ảnh RBG, tô mau các mask đối tượng đường, người và xe dé dé dàng đánh giá độ chính xác bằng mắt. Xe và người được tô chung màu xanh dương. Đường được tô mau tím. Ta thay
độ chính xác của đường khá tốt nhưng độ chính xác của người và xe thì còn thấp, nhìn vào mask của hai đối tượng này có thê thấy mô hình phân vùng chưa kín và bị
lem nhiều.
41
4.2. So sánh bộ dữ liệu nhóm với bộ dữ liệu CityScapes
4.2.1. CityScapes
Là bộ dữ liệu được sử dụng trong mô hình MobileNetV3 của các tác giả trong
bài báo “Searching for MobileNetV3” - tài liệu chính mà nhóm tham khảo. Bộ dữ
liệu này tập chung vào sự hiểu rõ ngữ nghĩa của cảnh đường phố khu đô thị. Nó có dung tích gồm 5,000 ảnh đã chú thích (annotated) với các chú thích tốt và 20,000 ảnh
đã chú thích với các chú thích thô. Các dữ liệu đã chú thích tốt được label dạng Instance Segmentation vì nó phân biệt từng đối tượng riêng biệt trong một lớp. Các
dữ liệu thô được label dang Semantic Segmentation, chỉ label chung các đối tượng riêng trong một lớp và chú thích là lớp đó. Nhóm so sánh số lượng dữ liệu của nhóm
42
và phần dữ liệu thô của CityScapes vì cách thức và mục đích xây dựng của hai bộ dữ liệu giống nhau. Hình 4.3 và Hình 4.4 minh họa hai loại dữ liệu trong CityScapes.
Hình 4.3 là ví dụ về ảnh được chú thích pIxel dày đặc chất lượng cao đối tượng
có trong một bức ảnh, màu phủ mã hóa các lớp đối tượng của bộ dir liệu, các trường hợp đơn lẻ của lớp đối tượng cũng được chú thích riêng biệt. Ví dụ mỗi người hay mỗi xe được label riêng. Ngoài các chú thích tốt, Hình 4.4 là ví dụ ảnh được chú thích thô với màu phủ mã hóa giống với ảnh chú thích tốt, nhưng không phân ra các trường hợp riêng lẻ của mỗi lớp đối tượng. Ví dụ như các ô tô trong Hình 4.4 được label
43
chung thành một khối. Bộ dữ liệu CityScapes có 30 lớp đối tượng được trình bày chi tiết trong bang Bảng 4.1.
Bang 4.1: Dinh nghĩa các lớp của CityScapes [15]
Group Classes
flat road, sidewalk, parking”, rail track*
human person’, rider”
vehicle car , truck’, bus”, on rails’, motorcycle’,
bicycle’, caravan ”, trailer ”*
construction building, wall, fence, guard rail*,
bridge*, tunnel*
object pole, pole group’, traffic sign, traffic
light
nature vegetation, terrain
sky sky
void ground*, dynamic’, static*
Bảng 4.1 cho thay CityScapes có 8 nhóm đối tượng va 30 lớp đối tượng con
được phân vào các nhóm lớn chính.
Chú thích:
— Dấu (*) là các chú thích đơn lẻ thì có sin. Tuy nhiên, nếu không thé thay
rõ ranh giới giữa các trường hợp như vậy, thì toàn bộ đám đông/nhóm
được label cùng nhau và được chú thích là nhóm, ví dụ: đoàn ô tô.
— Dấu (+) là những nhãn này không được đưa vào bất kỳ đánh giá nào và
được coi là void (hoặc trong trường hợp biển số xe được gắn trên).
44