The Traffic Light Classification sample demonstrates how to use the NVIDIA® proprietary LightNet deep neural network (DNN) to perform traffic light classification. It detects the state of the traffic lights facing the ego car. LightNet currently supports RCB images. RGBA images are not supported.
This sample shows a simple implementation of traffic light classification built around the NVIDIA LightNet DNN. For more information on the LightNet DNN and how to customize it for your applications, consult your NVIDIA sales or business representative.
The image datasets used to train LightNet have been captured by a View Sekonix Camera Module (SF3325) with AR0231 RCCB sensor. The camera is mounted high up at the rear view mirror position. Demo videos are captured at 2.3 MP and down-sampled to 960 x 604.
To achieve the best traffic light detection performance, NVIDIA recommends to adopt a similar camera setup and align the video center vertically with the horizon before recording new videos.
The LightNet DNN is trained to support any of the following six camera configurations:
./sample_light_classifier --input-type=[video|camera] --video=[path/to/video] --camera-type=[camera] --camera-group=[a|b|c|d] --slave=[0|1] --camera-index=[0|1|2|3] --precision=[fp16|fp32] --useCudaGraph=[0|1] --dla=[0|1] --dlaEngineNo=[0|1]
where
--input-type=[video|camera] Defines if the input is from live camera or from a recorded video. Live camera is supported only on NVIDIA DRIVE(tm) platforms. It is not supported on Linux (x86 architecture) host systems. Default value: video --video=[path/to/video] Specifies the absolute or relative path of a raw, lraw or h264 recording. Only applicable if --input-type=video Default value: path/to/data/samples/raw/rccb.raw --camera-type=[camera] Specifies a supported AR0231 `RCCB` sensor. Only applicable if --input-type=camera. Default value: ar0231-rccb-bae-sf3324 --camera-group=[a|b|c|d] Is the group where the camera is connected to. Only applicable if --input-type=camera. Default value: b --slave=[0|1] Setting this parameter to 1 when running the sample on Xavier B accesses the camera on Xavier A. Applicable only when --input-type=camera. Default value: 0 --camera-index=[0|1|2|3] Specifies the camera index within the camera group. Default value: 0 --precision=[fp16|fp32] Specifies the precision for the LightNet model. Default value: fp32 --useCudaGraph=[0|1] Setting this parameter to 1 runs LightNet DNN inference by CUDAGraph if the hardware supports. Default value: 0 --dla=[0|1] Runs inference on the DLA. Default value: 0 --dlaEngineNo=[integer] Specifies the DLA engine to run LightNet. Applicable only when --dla=1. Default value: 0
./sample_light_classifier --video=<video file.raw>
or ./sample_light_classifier –video=<video file.lraw> or ./sample_light_classifier –video=<video file.h264>
./sample_light_classifier --input-type=camera --camera-type=<rccb camera type> --camera-group=<camera group> --camera-index=<camera idx on camera group>
where <rccb camera type>
is one of the following:
ar0231-rccb-bae-sf3324
ar0231-rccb-bae-sf3325
The sample creates a window, displays a video, and overlays bounding boxes for traffic light objects. The state of the traffic light is displayed on the text on top of the bounding box. The color of the bounding boxes represents the status of the traffic light, as follows:
For more information, see LightNet.