Skip to content
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Computer Vision

Kết hợp Object Detection và Object Tracking – Chương 3. Thử làm hệ thống đo tốc độ xe hơi trên cao tốc

By Chủ tiệm Mì
March 9, 2020 4 Min Read
4

Hiện tại do công việc bị xáo trộn vì em Corona nên mình không có nhiều thời gian ngâm cứu do vậy nên mình xin tạm dừng series Pi làm xe tự hành để sau nhé. Hôm nay chúng ta sẽ tìm hiểu tiếp về việc sử dụng Object Detection và Object Tracking để thử làm hệ thống đo tốc độ xe hơi trên cao tốc nhé.

bắn tốc độ xe hơi

Bài này là bài tiếp theo trong series về OD và OT mình đã viết tại đây và tại đây. Trong bài này chúng ta sẽ cùng nhau làm một hệ thống giám sát, đo tốc độ của xe hơi chạy trên cao tốc và hiển thị lên màn hình nhé.

Cùng bắt tay luôn cho nóng nào!

Phần 1 – Tư tưởng bài toán đo tốc độ xe hơi

Mình gọi thế cho nó mĩ miều thôi, chứ thực ra là bài toán dự đoán tốc độ phương tiện dựa vào xử lý ảnh bằng OpenCV. Tại sao mình lại gọi là dự đoán chứ không phải tính toán, lý do vì đây là phép tính dựa vào xử lý ảnh và nó có sai số chứ không đúng 100% nhé. Muốn đúng 100% thì sử dụng súng laser của CSGT nhé.

Cách làm của chúng ta như sau:

  • Bước 1: Chúng ta tiến hành detect các xe hơi trong ảnh và thực hiện gán nhãn và tracking các xe hơi đó.
  • Bước 2: Chúng ta xác định tọa độ của các xe (đã được tracking) giữa 02 frame gọi là TD1 và TD2
  • Bước 3: Dựa vào TD1 và TD2 chúng ta tính ra được khoảng cách di chuyển gọi là KC theo pixel bằng công thức KC = |TD1 – TD2|
  • Bước 4: Chúng ta tính khoảng cách ước lượng theo mét – KCM – dựa vào tham số “Số mét tương ứng với 1 pixel” – MPP. Vậy KCM = KC * MPP
  • Bước 5: Tính tốc độ bằng m/s bằng công thức TDs = KCM * FPS (số frame xử lý trong 1 giây) sau đó quy đổi sang km/h để hiển thị cho chuẩn :D. Lý do có công thức trên là như sau:
    • Gói số giây xử lý được 1 Frame và tính được KCM là t (giây)
    • Suy ra số Frame xử lý trong 1 giây hay FPS =1/t.
    • KCM là trong t giây -> khoảng cách đi được trong 1 giây sẽ là KCM/t hay nói cách khác = KCM*FPS.

Vậy thôi, thuật toán cũng không có gì phức tạp lắm tuy nhiên các bạn phải xác định tham số PPM cho chính xác. Chúng ta phải dựa vào đo đạc thực tế và dựa vào hình ảnh trên video để xác định xem bao nhiêu pixel trên ảnh thì ứng với 1 mét ngoài đời thực.

Cách làm như sau: Chọn 2 điểm neo A và B dùng để tính tốc độ, ví dụ cái cây trong ảnh và cái cột gỗ trong ảnh. Sau đó ta đo thực tế ví dụ là 400 mét, Tiếp theo ta tính toán trong hình ảnh camera và xác định được khoảng cách là 40pixel. Vậy có nghĩa cứ 10 mét là 1 pixel và MPP = 10.

tốc độ xe hơi

Các bạn đã rõ thuật toán chưa? Nếu chưa hãy đặt câu hỏi trên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé. Còn bây giờ chúng ta sang phần 2 nhé.

Phần 2 – Tải mã nguồn và chạy thử

Các bạn tạo một project MiAI_Speed_Estimate ở trong Pycharm nhé (nên cài nhé các bạn, mọi việc sẽ đơn giản hơn rất nhiều với Pycharm). Sau đó các bạn chuyển vào thư mục và chạy lệnh git như sau:

git clone https://github.com/thangnch/MiAI_Speed_Estimate .

Sau khi gõ lệnh thì đợi trong giây lát mọi thứ sẽ về thư mục. Bây giờ, các bạn tiến hành cài đặt các thư mục cần thiết để chạy nhé:

pip install -r setup.txt

Cài đặt có dlib nên cá bạn sử dụng window có thể sẽ gặp lỗi, các bạn cứ post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup để thảo luận nhé.

Xong, bây giờ chúng ta mở file speed_estimate.py để xem mã nguồn nhé! Mình đã comment đầy đủ rồi, các bạn kết hợp với phần thuật toán bên trên là ổn thôi.

Bây giờ các bạn chạy file speed_estimae.py nhé, và kết quả sẽ có dạng như này:

Có 2 lưu ý cho các bạn:

  • Mình dùng detect object bằng haar cascade chứ ko phải YOLO hay SSD. Các bạn có thể thay thuật toán detect nhé, ko khó lắm.
  • Bài này mình ước lượng thông số PPM 1 cách tương đối, do mình ko có mặt ở đó để đo đạc được nên tốc độ chỉ mang tính tham khảo nhé.

Như vậy mình đã chỉ các bạn cách làm một hệ thống đo tốc độ xe hơi trên cao tốc bằng OpenCV. Xin tạm biệt và hẹn gặp lại các bạn trong các bài tiếp nhé!

Hãy join cùng cộng đồng Mì AI nhé!

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn/
Youtube: http://bit.ly/miaiyoutube

Tags:

car speedcar speed estimatecar speed gunhaar cascadeobject detectionobject trackingspeed estimatespeed gun
Author

Chủ tiệm Mì

Follow Me
Other Articles
Previous

Computer Vision & Pi – Chương 4. Train model Tiny YOLOv3 để xem có đưa lên Pi được không?

Next

Chung tay chống COVID-19, làm thử hệ thống phát hiện khẩu trang và nhắc nhở nếu không đeo bằng OpenCV

4 Comments
  1. Chi tiết kèm mã nguồn cách đo kích thước vật thể bằng OpenCV - Mì AI says:
    July 21, 2020 at 6:02 am

    […] Tuy nhiên, với mục đích học tập thì hoàn toàn chấp nhận được. Ngoài ra mình cũng đã có 1 bài đo khoảng cách tương tự các bạn cũng có thể đọc để tham khảo nhé: tại đây. […]

    Reply
  2. Hoang Nam says:
    September 17, 2020 at 10:23 am

    Neu su dung python 3.7 va cai OpenCV ver 4.4 tro di va gap loi sau voi cv2.imshow

    File “speed_estimate.py”, line 165, in
    cv2.imshow(‘video’, output_image)
    cv2.error: OpenCV(4.4.0) /tmp/pip-req-build-nnedsm3u/opencv/modules/highgui/src/window.cpp:651: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvShowImage’

    thuc hien downgrade opencv xuong ban 4.3:
    pip3 install opencv-python==4.3.0.36

    Reply
  3. Anonymous says:
    February 23, 2021 at 2:27 am

    Toán học kiểu này thì chết rồi. Nên xoá bài này nếu k muốn mất danh tiếng.

    Reply
    1. Nguyễn Chiến Thắng says:
      February 23, 2021 at 4:33 am

      Dạ chào bác. Em không xóa vì em có danh tiếng gì đâu mà mất ạ. Mấy anh em cùng học tập viết bài chia sẻ giúp đỡ nhau thôi.
      Nếu bác có gì góp ý thì em xin quý tính đại danh để cùng giao lưu cho vui ah. Không sao đâu bác. Chứ bác Anonymous thế kia em cũng không biết học hỏi kiểu gì.

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Tìm hiểu và cài đặt OpenClaw – trợ lý ảo 24/7 thông minh đa chức năng – Mì Ai
  • Dùng thử Pika – robot học Tiếng Anh cho trẻ cực đỉnh – Mì AI
  • TopView.AI 4.0 – nền tảng tạo AI video cộng tác bá đạo – Mì AI
  • Storm MCP – giải pháp nhanh gọn nhẹ để có MCP Server trong 5 phút – Mì AI
  • VoxCPM thử voice cloning với checkpoint finetune Tiếng Việt – Mì AI

Recent Comments

  1. Chủ tiệm Mì on Thử xây dựng hệ thống Agentic AI với LangGraph – Mì AI
  2. Nguyễn Chiến Thắng on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  3. Trần Sơn Dương on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  4. Salomon on [CV] Thử làm model cảnh báo ngủ gật cho tài xế oto bằng Dlib và Resnet
  5. khang on Xây dựng hệ thống nhận diện thủ ngữ – ngôn ngữ ký hiệu tay – để giao tiếp với người khuyết tật

Categories

  • Basic
  • Computer Vision
  • Data Science – Data Analysis
  • Generative AI
  • MÌ ÚP
  • Natural Language Processing
  • RNN-LSTM-GRU
  • Share Data

Là người đi trước, hãy biết đưa tay lại phía sau.

Nguyễn Chiến Thắng
Cảm ơn các bạn đã ủng hộ Mì AI!