Real-time vehicle detection and lane detection for ADAS

This time I bring a new result we have achieved in Vicomtech-IK4: an improved real-time vehicle detection and lane tracking system for ADAS (Advanced Driver Assitance Systems).

It follows the history of developments we’ve been doing in this line, evolving previous approaches (including migration into iOS) into a more reliable and fast solution.

Links to previous videos:

The new developments include real-time performance in Android devices, much more reliable detection and tracking of vehicles (using a multi-thread approach combining different detectors and tracking approaches), and also a holistic model of lanes, which are filtered with a multi-Kalman filter.

Hope you like this video! If you are curious about it or have technical doubts, please, write an entry in this post. Sometimes I am too busy to response quickly, but I try to come back to the blog as often as I can.

See you!

This entry was posted in ADAS, Computer vision, Viulib and tagged , , , . Bookmark the permalink.

9 Responses to Real-time vehicle detection and lane detection for ADAS

  1. Liwei says:

    I am new to ADAS. Is the frame rate of the camera 30fps for ADAS application. To reduce the motion between two consecutive frames, Is much faster frame rate used?

    • Hi,
      Normally, commercial cameras come with 30 fps and 60 fps video modes. Some may offer 120 fps with reduced frame size. Nevertheless, the higher the fps, the less light that the sensor can capture, and then the higher the noise.
      Depending on the application, 30 fps may be enough (e.g. traffic sign recognition).

      • Liwei says:

        Thanks for your reply. Is traffic sign recognition using one image sequence or one single image for ADAS application? Does using one image sequence bring any advantage?

  2. Archer says:

    Hi Macros, what hardware did you use for this project? Is it possible to run this program on a raspberry possible ?

    Thank you :)

  3. Archer says:

    Hi Marcos. I’m a CS student. What you have done here is absolutely awesome. I just have a question. What hardware did you used to run this program? Is the computing power on a raspberry pi sufficient for such program?

    Thank you

    • Hi,
      Thanks for the comment.
      Indeed! It is possible to embed these algorithms. It is not easy, of course. First, we have not gone into low-level code optimization (we program in C++, but we could go down to C or Assembly), but algorithm optimization. This means we take care of analysing the bottlenecks; what information is required at what time and with what accuracy. This way we can remove all unnecessary computation and keep having good results.
      Besides that, for instance, if you use OpenCV, try to compile it with all the flags that better exploit the platform. I guess NEON for the ARM processor, and in case there is a graphics card, try enabling OpenCL.
      Multi-threading is a must. With C++11 it is even easier, with less external dependencies. For instance, you will probably need to use one thread for vehicle detection (using your cascades) another for the tracking, other for capturing, etc.
      At the end, it is like digging a hole in the sand. You start on the top and narrow down finding where you can dig without breaking it all.

      Good luck!

  4. VisionLee says:

    Hi Marcos,
    Amazing work and truly impressed!

    Is there any plan in near future to open source the ADAS application? Or at least share some codes with regard to the core functionalities like Vehicle detection/Multi-lane curvature etc. ?

    Also I couldn’t find any publications describing the algorithms or process pipelines?

    Get some demos to work e.g. using OpenCV is easy. Real time processing under real conditions are much more difficult and challenging so really well done!!

    Kind regards,

  5. VisionLee says:

    Hi Marcos,
    Really nice work, Im impressed!

    Just wondering is there any plan to open-source the codes in near future? Or at least sharing some core functionalities like Vehicle detection/Multi-lane curvature etc?

    I’m currently preparing a potential project on auto lane & vehicle detection but struggling how to ‘connect’ the broken lane marks? Some lane marks are really short in the first place!

    I couldn’t find any publications or papers describing your method or process pipeline?

    Get some demos to work e.g. using OpenCV is easy. Real time processing under real conditions are much more difficult and challenging so really well done!!

    Kind regards,

    • Hi,
      Thanks for your comments!
      You hit the point: real-time video processing is a challenge. Is not only about the algorithm to use, it is the initialization, the auto-assessment, the input & output interfaces, the migration into specific HW with low computational power (e.g. mobile phones), and all of it working well in an environment never seen before, where your system is going to pass a stress-test to check if it is reliable.
      Most of the videos I show are result of work team in the UPM (where I worked until 2010) or Vicomtech-IK4 (where I still work), so I cannot release any code, unless I create something on my own. I could do it, but definitely have no free time. I am sorry for that. Actually, the idea of having this blog is to share with you all what I learn from others or my own experience, but each day I have less time to work on this.
      Hope you progress in your research. Don’t give up, and build things step by step.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s