input afbeelding

input  image/human_4.jpg

 

output image met de default   --threshold=0.5

output image (voorbeeld 1)
default  --threshold=0.5, de baseball glove
met een waarschijnlijkheid van 55,5% is fout
 
 
--threshold=0.8  (voorbeeld 2)
 
 --threshold=0.8  (voorbeeld 2)
 
 
 
--alpha=200  (voorbeeld )
 
--alpha=200  (voorbeeld 3)
 
 
 
--overlay=labels   (voorbeeld 4 en 5)
 
--overlay=labels   (voorbeeld 4 en 5)

Locating Objects with DetectNet                         terug naar de inleiding

objecten in een afbeelding detecteren en localiseren.

Nu wordt gebruik gemaakt van een objecten detectie netwerk (DetectNet).

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

1) Het pad naar de input afbeelding met de naam van die afbeelding (afbeelding typen: jpg, png, tga en bmp)

    De input afbeelding is de te testen afbeelding. In de map image zitten een aantal afbeeldingen geschikt voor image detection

2) optioneel: Het pad naar de output afbeelding met de naam van die afbeelding (afbeelding typen: jpg, png, tga en bmp)
    De output afbeelding is een copie van de input afbeelding met als overlay

    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

4)  ./detectnet-console.py --network=ssd-mobilenet-v2 --alpha=50 --threshold=0.8 --overlay=labels images/humans_4.jpg humans_4_out_4.jpg

       Door --overlay=labels wordt de vlag --apha=50 genegeerd.

5)  ./detectnet-console.py --overlay=labels --threshold=0.8 images/humans_4.jpg humans_4_out_5.jpg
       Dit voorbeeld geeft hetzelfde resultaat als voorbeeld 4.  (ssd-mobilenet-v2 is default)
 
De broncode van detectnet-console.py
 

 
 

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)