Locating Objects with DetectNet terug naar de inleiding
objecten in een afbeelding detecteren en localiseren.
Deze netwerken zijn in staat om veel objecten per afbeelding of frame te detecteren.
De objecten worden gedetecteerd door het opstarten van:
jetson-inference/build/aarch64/bin/detectnet-console.py
De commandline argumenten
De input afbeelding is de te testen afbeelding. In de map image zitten een aantal afbeeldingen geschikt voor image detection
de naam van het object en classificatie resultaat in een box.
3) optioneel: --network vlag die verwijst naar het detectie model. Als default wordt --network=ssd-mobilenet-v2 gebruikt.
4) optioneel: --overlay vlag met door comma's gescheiden opties box, labels, conf, en non. (default is: --overlay=box, labels, conf)
5) optioneel: --alfa waarde de alfa waarde van de kleur in de box. (default alfa=120)
6) optioneel: --threshold waarde, hiermee geef je de minimale drempel voor het gedetecteerde object aan (default --threshold=0.5)
Voorbeelden
1) ./detectnet-console.py --network=ssd-mobilenet-v2 images/humans_4.jpg humans_4_out_1.jpg
2) ./detectnet-console.py --network=ssd-mobilenet-v2 images/humans_4.jpg humans_4_out_2.jpg --threshold=0.8
3) ./detectnet-console.py --network=ssd-mobilenet-v2 --alpha=200 --threshold=0.8 images/humans_4.jpg humans_4_out_3.jpg
Door --overlay=labels wordt de vlag --apha=50 genegeerd.
import jetson.inference
import jetson.utils
import argparse
import sys
# parse the command line
parser = argparse.ArgumentParser(description="Locate objects in an image using an object detection DNN.",
formatter_class=argparse.RawTextHelpFormatter, epilog=jetson.inference.detectNet.Usage())
parser.add_argument("file_in", type=str, help="filename of the input image to process")
parser.add_argument("file_out", type=str, help="filename of the output image to save")
parser.add_argument("--network", type=str, default="ssd-mobilenet-v2", help="pre-trained model to load (see below for options)")
parser.add_argument("--overlay", type=str, default="box,labels,conf", help="detection overlay flags (e.g. --overlay=box,labels,conf)\nvalid combinations are: 'box', 'labels', 'conf', 'none'")
parser.add_argument("--threshold", type=float, default=0.5, help="minimum detection threshold to use")
opt = parser.parse_known_args()[0]
# load an image (into shared CPU/GPU memory)
img, width, height = jetson.utils.loadImageRGBA(opt.file_in)
# load the object detection network
net = jetson.inference.detectNet(opt.network, sys.argv, opt.threshold)
# detect objects in the image (with overlay)
detections = net.Detect(img, width, height, opt.overlay)
# print the detections
print("detected {:d} objects in image".format(len(detections)))
for detection in detections:
print(detection)
# print out timing info
net.PrintProfilerTimes()
# save the output image with the bounding box overlays
jetson.utils.saveImageRGBA(opt.file_out, img, width, height)