Back | Next | Contents
Image Recognition
Next we have a realtime image recognition camera demo available for C++ and Python:
imagenet-camera.cpp
(C++)imagenet-camera.py
(Python)
Similar to the previous imagenet-console
example, the camera applications are built to the /aarch64/bin
directory. They run on a live camera stream with OpenGL rendering and accept 4 optional command-line arguments:
--network
flag setting the classification model (default is GoogleNet)- See Downloading Other Classification Models for the networks available to use.
--camera
flag setting the camera device to use- MIPI CSI cameras are used by specifying the sensor index (
0
or1
, ect.) - V4L2 USB cameras are used by specifying their
/dev/video
node (/dev/video0
,/dev/video1
, ect.) - The default is to use MIPI CSI sensor 0 (
--camera=0
)
- MIPI CSI cameras are used by specifying the sensor index (
--width
and--height
flags setting the camera resolution (default is1280x720
)- The resolution should be set to a format that the camera supports.
- Query the available formats with the following commands:
$ sudo apt-get install v4l-utils $ v4l2-ctl --list-formats-ext
You can combine the usage of these flags as needed, and there are additional command line parameters available for loading custom models. Launch the application with the --help
flag to recieve more info, or see the Examples
readme.
Below are some typical scenarios for launching the program:
$ ./imagenet-camera # using GoogleNet, default MIPI CSI camera (1280x720)
$ ./imagenet-camera --network=resnet-18 # using ResNet-18, default MIPI CSI camera (1280x720)
$ ./imagenet-camera --camera=/dev/video0 # using GoogleNet, V4L2 camera /dev/video0 (1280x720)
$ ./imagenet-camera --width=640 --height=480 # using GoogleNet, default MIPI CSI camera (640x480)
$ ./imagenet-camera.py # using GoogleNet, default MIPI CSI camera (1280x720)
$ ./imagenet-camera.py --network=resnet-18 # using ResNet-18, default MIPI CSI camera (1280x720)
$ ./imagenet-camera.py --camera=/dev/video0 # using GoogleNet, V4L2 camera /dev/video0 (1280x720)
$ ./imagenet-camera.py --width=640 --height=480 # using GoogleNet, default MIPI CSI camera (640x480)
note: for example cameras to use, see these sections of the Jetson Wiki:
- Nano:https://eLinux.org/Jetson_Nano#Cameras
- Xavier:https://eLinux.org/Jetson_AGX_Xavier#Ecosystem_Products_.26_Cameras
- TX1/TX2: developer kits include an onboard MIPI CSI sensor module (0V5693)
Displayed in the OpenGL window are the live camera stream, the classified object name, and the confidence of the classified object, along with the framerate of the network. On Jetson Nano you should see up to around ~75 FPS for GoogleNet and ResNet-18 (faster on other Jetson's).
The application can recognize up to 1000 different types of objects, since the classification models are trained on the ILSVRC ImageNet dataset which contains 1000 classes of objects. The mapping of names for the 1000 types of objects, you can find in the repo under data/networks/ilsvrc12_synset_words.txt
This concludes the section of Hello AI World on Image Recognition. Next, we're going to start using Object Detection networks, which provide us with the bounding box coordinates of multiple objects per frame.
Next | Locating Object Coordinates with DetectNet
Back | Coding Your Own Image Recognition Program
© 2016-2019 NVIDIA | Table of Contents