Xây dựng mô hình ước lượng thời gian di chuyển theo tình trạng giao

Một phần của tài liệu (LUẬN văn THẠC sĩ) phát triển thuật toán tìm đường cho nền tảng cung cấp dịch vụ địa chỉ việt nam​ (Trang 44)

4.1.1 Xây dựng bộ dữ liệu thử nghiệm

Xây dựng bộ dữ liệu thử nghiệm bằng cách chọn ngẫu nhiên 1200 điểm đầu và 1200 điểm cuối trong khu vực nội thành Hà Nội. Sử dụng thư viện request của NodeJS để lấy hướng dẫn di chuyển của Dịch vụ tìm đường Google (Google Direction API) và Dịch vụ tìm đường của VMap. Với kết quả trả về của dịch vụ tìm đường VMap, ta sẽ trích xuất đặc trưng theo phương pháp trình bày ở phần trước làm đầu vào của thuật toán học máy. Với kết quả của Dịch vụ tìm đường Google ta sẽ có được thời gian ước lượng di chuyển trong tình trạng giao thông tương ứng với kết quả đầu ra của thuật toán. Kết hợp hai thông tin này ta sẽ có được dữ liệu thử nghiệm. Bộ dữ liệu thử nghiệm được lưu trữ trong cơ sở dữ liệu MongoDB và xuất ra dưới dạng file csv.

- Tổng số dữ liệu: 3401

- Dữ liệu tập train: 3000 dữ liệu - Dữ liệu tập test: 401 dữ liệu

Hình 4.1. Quy trình xây dựng bộ dữ liệu thử nghiệm

4.1.2 Thử nghiệm và tìm mô hình hiệu quả nhất

Tiến hành thử nghiệm các thuật toán khác nhau để xây dựng mô hình tối ưu nhất từ bộ dữ liệu thử nghiệm. Ở đây, em đã thử nghiệm với 2 thuật toán là Hồi quy tuyến

Để đánh giá chất lượng dữ liệu, hệ số xác định R2 và sai số RMSE được sử dụng để phân tích ước lượng thời gian di chuyển. Phân tích hồi qui là nghiên cứu sự phụ thuộc của 1 biến (biến phụ thuộc) vào 1 hay nhiều biến khác (biến độc lập), nhằm mục đích ước lượng (hay dự đoán) giá trị trung bình của biến phụ thuộc trên cơ sở các giá trị biết trước của các biến độc lập.

Mô hình hồi qui tuyến tính k biến: Y = 1+ 2X2 + …+ kXk + U (1) - Y: biến phụ thuộc X2 ,…,Xk : các biến độc lập

- U: sai số ngẫu nhiên - 1 là hệ số tự do

- j là các hệ số hồi quy riêng, cho biết khi Xj tăng 1 đơn vị thì trung bình của Y sẽ thay đổi j đơn vị trong trường hợp các yếu tố khác không đổi (j=2,…,k).

Hệ số xác định 0≤ R2 ≤1 Có thể nói R2 phản ánh tỷ lệ mô hình lý thuyết phản ánh thực tế.

Hình 4.2. Quy trình xây dựng bộ dữ liệu thử nghiệm

Kết quả thử nghiệm cho thấy với mô hình RNN có kết quả tốt hơn với chỉ số R2 không quá khác biệt (chênh lệch 0.0017), tuy nhiên RMSE thấp hơn 27%. Sau khi đã xây dựng được mô hình, em sử dụng thư viện pickle để lưu mô hình xuống ổ cứng.

Bảng 4.1. Kết quả thử nghiệm

Thuật toán R2 RMSE MSE

Hồi quy tuyến tính 0.9175 87.80 7708.51

4.2 Triển khai công cụ thu thập bộ dữ liệu Google Traffic Tiles

Yêu cầu: NodeJS, NPM, PM2.

PM2 là một trình quản lý các tiến trình dành cho các ứng dụng NodeJS. Nó được viết bằng chính NodeJS và Shell. PM2 cũng được tích hợp bộ cân bằng tải (load balancer). Sử dụng lệnh npm i -g pm2 để cài đặt pm2 cho hệ thống.

Thực hiện sao chép tệp tin downloadImgGGTraffic.js vào thư mục /deployment. Chạy lệnh npm i polygon-lookup request để cài đặt thư viện. Chạy lệnh pm2 start

downloadImgGGTraffic.js để chạy công cụ thu thập bộ dữ liệu Google Traffic Tiles. Để

tiến trình luôn chạy dù hệ thống có thể bị khởi động lại, ta sử dụng lệnh pm2 save để lưu danh sách các tiến trình và pm2 startup để khai báo khởi động pm2 cùng hệ thống.

Hình 4.3. Tiến trình thu thập bộ dữ liệu Google Traffic Tiles được khởi tạo

Hình 4.4. PM2 được khai báo khởi động cùng hệ thống

4.3 Triển khai thuật toán cho Nền tảng cung cấp dịch vụ địa chỉ Việt Nam VMap

Yêu cầu: Python, PIP, Flask, Waitress

Tương tự PM2, Waitress là một trình quản lý các tiến trình dành cho các ứng dụng WSGI của Python. Sử dụng lệnh pip install waitress để cài đặt Waitress cho hệ thống. Thực hiện sao chép tệp tin app.py vào thư mục /deployment. Chạy lệnh pip install flask

để cài đặt Flask. Tương tự với các thư viện cần thiết. Chạy lệnh waitress-serve –call

‘flaskr:VMap_direction’ để chạy ứng dụng web dưới dạng tiến trình. Lúc này, tiến trình

đã chạy ở cổng 8000.

Để có thể thay thế trực tiếp Dịch vụ tìm đường cũ của VMap, ta cần cấu hình nginx (công cụ proxy hệ thống VMap đang sử dụng) đến cổng 8000. Vào thư mục

/etc/nginx/conf.d/ và tiến hành chỉnh sửa file VMap.conf. Thêm đoạn mã sau vào phần cấu hình tên miền VMap.vn để cập nhật dịch vụ tìm đường của VMap.

location /route {

proxy_pass http://10.101.3.215:8000; proxy_cache VMap_cache;

proxy_cache_revalidate on; proxy_cache_min_uses 3;

proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;

proxy_cache_lock on;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host;

proxy_set_header X-NginX-Proxy true;

# Enables WS support

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_redirect off;

}

Sau khi triển khai thành công Dịch vụ tìm đường mới, chúng ta tiến hành thử nghiệm trên ứng dụng nền tảng web và nền tảng di động của VMap. Kết quả di chuyển thực tế được trình bày ở Bảng 4.2.

Hình 4.6. Thử nghiệm tìm đường tương tự trên nền tảng Google Map

Bảng 4.2. Kết quả thử nghiệm thực tế

Google Map VMap cũ Vmap mới Thực tế

144 Xuân Thủy → 716 Láng 17 phút 10 phút 17 phút 17 phút 302 Láng → 275 Nguyễn

Trãi

6 phút 7 phút 6 phút 6 phút

144 Xuân Thủy → 10 Thụy Khuê

Sau khi tiến hành thử nghiệm em nhận thấy thời gian phản hồi của dịch vụ còn chậm. Cụ thể là khoảng 3 giây với yêu cầu tìm đường cho 1 tuyến đường và 8 giây cho một yêu cầu. Chậm hơn rất nhiều so với chỉ khoảng 1 giây cho cả 2 yêu cầu trên khi sử dụng dịch vụ cũ. Lý do của việc này là do quá trình tách đặc trưng từ ảnh Google Traffic Tile tốn rất nhiều thời gian để xử lý. Ngoài ra, thời gian xử lý này còn phụ thuộc của tuyến đường tìm được. Đây là một vấn đề cần giải quyết trong tương lai.

CHƯƠNG 5. KẾT LUẬN VÀ ĐỊNH HƯỚNG

Kết quả đạt được

Như vậy, trong luận văn này, em đã lần lượt trình bày các nghiên cứu của bản thân để thực hiện các công việc: (i) Xây dựng công cụ thu thập bộ dữ liệu Google Traffic Tiles, (ii) Xây dựng thuật toán tìm đường đi nhanh nhất theo thời gian cho Nền tảng cung cấp dịch vụ địa chỉ Việt Nam Vmap và (iii) Triển khai thuật toán cho Nền tảng cung cấp dịch vụ địa chỉ Việt Nam VMap và đánh giá hiệu quả sử dụng. Việc xây dựng công cụ thu thập bộ dữ liệu Google Traffic Tiles đang ở mức thử nghiệm trong nội thành Hà Nội với 15.128 tile, tự động cập nhật sau mỗi 5 phút. Tiếp theo đó, em đã lần lượt trình bày cách tách các đặc trưng từ bộ dữ liệu này phụ thuộc tuyến đường tìm được bằng cách xử dụng các kỹ thuật xử lý ảnh. Từ đó, em đã tiến hành xây dựng bộ dữ liệu thử nghiệm với 3401 dữ liệu bằng cách sử dụng Dịch vụ tìm đường của VMap và Dịch vụ tìm đường của Google Map. Sau đó, em tiến hành xây dựng mô hình bằng cách thử nghiệm bằng cách sử dụng Hồi quy tuyến tính và mạng nơ-ron RNN. Từ đó cho thấy RNN khá hiệu quả trong việc ước lượng thời gian di chuyển với RMSE=64,361. Cuối cùng, em đã tiến hành triển khai các công cụ, thuật toán này lên hệ thống của VMap đồng thời em cũng tiến hành thử nghiệm trực tiếp trên ứng dụng nền tảng web và ứng dụng nền tảng di động của VMap. Kết quả ban đầu cho thấy kết quả khá tương đồng so với kết quả thu được từ Google Map.

Định hướng phát triển tương lai

Tuy đã triển khai dịch vụ vào thực tế, nhưng dịch vụ còn một số vấn đề còn tồn tại và nổi bật nhất là thời gian xử lý quá chậm trong quá trình xử lý ảnh bóc tách feature. Trong tương lai, em sẽ tìm cách giảm thời gian của quá trình này đến xuống mức có thể chấp nhận được với người dùng. Ngoài ra các kỹ thuật bộ nhớ đệm để tăng tốc dịch vụ cho toàn hệ thống. Ngoài ra, em cũng sẽ tiến hành tối ưu mô hình để đạt được hiệu quả

TÀI LIỆU THAM KHẢO

[1] “Đề án ‘Phát triển Hệ tri thức Việt số hóa.’” . [2] “VMap - Bản đồ Việt Nam.” https://vmap.vn/. [3] “OpenStreetMap.” https://www.openstreetmap.org/.

[4] “OpenStreetMap Wiki.” https://wiki.openstreetmap.org/wiki/Main_Page. [5] Nhóm phát triển VMap, “Tài liệu nội bộ,” 2020.

[6] Bộ Giao thông vận tải, “Quy chuẩn kỹ thuật quốc gia về Báo hiệu đường bộ.” 2019. [7] R. Fairhurst, “Project-GraphHopper,” 2019.

[8] G. Leduc, “Road Traffic Data : Collection Methods and Applications,” EUR Number Tech, pp. 2–10, 2008.

[9] “About OGC | OGC.” https://www.ogc.org/about.

[10] A. Doyce, “WWW Mapping Bộ thư viện,” Open GIS Consort., 1997.

[11] “OpenGIS Web Map Tile Service Implementation Standard | OGC.” https://www.ogc.org/standards/wmts.

[12] “Geo-location APIs | Google Maps Platform | Google Cloud.” https://cloud.google.com/maps-platform/.

[13] “Google Map.” https://sites.google.com/site/bestmapgogle/.

[14] “About us - GraphHopper Directions API.” https://www.graphhopper.com/about-us/. [15] “JavaScript,” J. Inf. Process. Manag., 2001, doi: 10.1241/johokanri.44.584.

[16] R. Prediger, R. Winzinger, R. Prediger, and R. Winzinger, “Node.js,” in Node.js, 2015. [17] T. E. Oliphant, “Python for scientific computing,” Comput. Sci. Eng., 2007, doi:

10.1109/MCSE.2007.58.

[18] F. Pedregosa et al., “Scikit-learn: Học máy in Python,” J. Mach. Learn. Res., 2011. [19] A. C. Muller and S. Guido, Introduction to học máy with scikit-learn. 2017.

[20] C.-C. Chang and C.-J. Lin, “LIBSVM,” ACM Trans. Intell. Syst. Technol., 2011, doi:

10.1145/1961189.1961199.

[21] “TensorFlow.” https://www.tensorflow.org/.

[22] M. Grinberg, “Flask Web Developement,” O’Reilly, 2014, doi: 10.1007/s13398-014-

Một phần của tài liệu (LUẬN văn THẠC sĩ) phát triển thuật toán tìm đường cho nền tảng cung cấp dịch vụ địa chỉ việt nam​ (Trang 44)

Tải bản đầy đủ (PDF)

(53 trang)