# Dataset and Training
https://github.com/dusty-nv/jetson-inference/blob/master/docs/pytorch-ssd.md
## Open Images Web
https://storage.googleapis.com/openimages/web/index.html
### open_images_classes
https://github.com/dusty-nv/pytorch-ssd/blob/master/open_images_classes.txt
382 Person
361 Oven
333 Microwave oven
213 Gas stove
596 Wood-burning stove
125 Coffeemaker
538 Toaster
## Downloading the Data
### The working directory
$ cd jetson-inference/python/training/detection/ssd
$ mkdir ssd/fireAlarm
### Limiting the Amount of Data
In practice, you probably want to keep the total number of images <10K.
open_images_downloader.py options
--stats-only
--max-images
### Show photo numbers
$ python3 open_images_downloader.py --stats-only --class-names "Person,Oven,Microwave oven,Gas stove,Wood-burning stove,Toaster,Coffeemaker" --data=data/fireAlarm
```
-------------------------------------
'train' set statistics
-------------------------------------
Image count: 10844
Bounding box count: 45663
Bounding box distribution:
Person: 45273/45663 = 0.99
Oven: 104/45663 = 0.00
Gas stove: 103/45663 = 0.00
Microwave oven: 84/45663 = 0.00
Wood-burning stove: 61/45663 = 0.00
Coffeemaker: 32/45663 = 0.00
Toaster: 6/45663 = 0.00
-------------------------------------
'validation' set statistics
-------------------------------------
Image count: 6078
Bounding box count: 12467
Bounding box distribution:
Person: 12371/12467 = 0.99
Oven: 21/12467 = 0.00
Microwave oven: 20/12467 = 0.00
Wood-burning stove: 19/12467 = 0.00
Coffeemaker: 18/12467 = 0.00
Gas stove: 17/12467 = 0.00
Toaster: 1/12467 = 0.00
-------------------------------------
'test' set statistics
-------------------------------------
Image count: 18382
Bounding box count: 38233
Bounding box distribution:
Person: 37997/38233 = 0.99
Oven: 53/38233 = 0.00
Coffeemaker: 50/38233 = 0.00
Gas stove: 49/38233 = 0.00
Microwave oven: 46/38233 = 0.00
Wood-burning stove: 34/38233 = 0.00
Toaster: 4/38233 = 0.00
```
### Downloading with --max-images=2500
$ python3 open_images_downloader.py --max-images=2500 --class-names "Person,Oven,Microwave oven,Gas stove,Wood-burning stove,Coffeemaker,Toaster" --data=data/fireAlarm
## Training the SSD-Mobilenet Model
$ python3 train_ssd.py --data=data/fireAlarm --model-dir=models/fireAlarm --batch-size=4 --epochs=30
## Converting the Model to ONNX
$ python3 onnx_export.py --model-dir=models/fireAlarm
This will save a model called ssd-mobilenet.onnx under jetson-inference/python/training/detection/ssd/models/fireAlarm/
## Running the Live Camera Program
### CSI Camera
$ detectnet --model=models/fireAlarm/ssd-mobilenet.onnx --labels=models/fireAlarm/labels.txt \
--input-blob=input_0 --output-cvg=scores --output-bbox=boxes csi://0
### USB Camera
$ detectnet --model=models/fireAlarm/ssd-mobilenet.onnx --labels=models/fireAlarm/labels.txt \
--input-blob=input_0 --output-cvg=scores --output-bbox=boxes /dev/video0
### Change resolution to 640x480
$ detectnet --model=models/fireAlarm/ssd-mobilenet.onnx --labels=models/fireAlarm/labels.txt \
--input-blob=input_0 --output-cvg=scores --output-bbox=boxes \
--input-width=640 --input-height=480 /dev/video0
### detectnet => python3 detectnet.py
$ cp ~/jetson-inference/build/aarch64/bin/detectnet.py .
$ python3 detectnet.py --model=models/fireAlarm/ssd-mobilenet.onnx --labels=models/fireAlarm/labels.txt \
--input-blob=input_0 --output-cvg=scores --output-bbox=boxes \
--input-width=640 --input-height=480 /dev/video0
## Other Datasets
PASCAL VOC Dataset
https://jason-chen-1992.weebly.com/home/pascal-dataset
MS COCO Dataset
https://jason-chen-1992.weebly.com/home/coco-dataset