Intel® Movidius™ Neural Compute SDK - video_objects
https://github.com/movidius/ncappzoo/tree/master/apps/video_objects
ncappzoo/apps/video_objects/
Introduction
This project uses SSD MobileNet to do object recognition and classification for a street camera. Rather than a camera, video files will be used to simulate a camera.
The provided Makefile does the following:
- Builds both caffe ssd mobilenet graph file from the caffe/SSD_MobileNet directory in the repository.
- Copies the built NCS graph file from the SSD_MobileNet directory to the project base directory
- Downloads some sample traffic video files.
- Runs the provided street_cam_ssd_mobilenet.py program which creates a GUI window that shows the video stream along with labels and boxes around the identified objects.
Prerequisites
This program requires:
- 1 NCS device
- NCSDK 1.11 or greater
- opencv 3.3 with video for linux support
Note: The OpenCV version that installs with the current ncsdk (1.10.00) does not provide V4L support. To run this application you will need to replace the ncsdk version with a version built from source. To remove the old opencv and build and install a compatible version you can run the following command from the app’s base directory:
make opencv
Note: All development and testing has been done on Ubuntu 16.04 on an x86-64 machine.
Makefile
Provided Makefile has various targets that help with the above mentioned tasks.
make help
Shows available targets.
make all
Builds and/or gathers all the required files needed to run the application except building and installing opencv (this must be done as a separate step with ‘make opencv’.)
make videos
Downloads example video files.
make opencv
Removes the version of OpenCV that was installed with the NCSDK and builds and installs a compatible version of OpenCV 3.3 for this app. This will take a while to finish. Once you have done this on your system you shouldn’t need to do it again.
make run_py
Runs the provided python program which shows the video stream along with the object boxes and classifications.
make clean
Removes all the temporary files that are created by the Makefile
foreverstrong@strong:~/ncs_work/ncappzoo/apps/video_objects$ make clean
making clean
rm -f graph
rm -f *.mp4
rm -f licenses.txt
foreverstrong@strong:~/ncs_work/ncappzoo/apps/video_objects$
foreverstrong@strong:~/ncs_work/ncappzoo/apps/video_objects$ make all
making prereqs
making videos
wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/licenses.txt; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/bus_station_6094_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/motorcycle_6098_shortened_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/contrapicado_traffic_shortened_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/police_car_6095_shortened_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/scooters_5638_shortened_960x540.mp4;
--2018-11-01 09:50:57-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/licenses.txt
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1353 (1.3K) [text/plain]
Saving to: ‘./licenses.txt’
licenses.txt 100%[====================================>] 1.32K --.-KB/s in 0s
2018-11-01 09:50:57 (114 MB/s) - ‘./licenses.txt’ saved [1353/1353]
--2018-11-01 09:50:57-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/bus_station_6094_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5692338 (5.4M) [application/octet-stream]
Saving to: ‘./bus_station_6094_960x540.mp4’
bus_station_6094_960x540. 100%[====================================>] 5.43M 2.58MB/s in 2.1s
2018-11-01 09:51:00 (2.58 MB/s) - ‘./bus_station_6094_960x540.mp4’ saved [5692338/5692338]
--2018-11-01 09:51:00-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/motorcycle_6098_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.192.133, 151.101.0.133, 151.101.64.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.192.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4471322 (4.3M) [application/octet-stream]
Saving to: ‘./motorcycle_6098_shortened_960x540.mp4’
motorcycle_6098_shortened 100%[====================================>] 4.26M 1.67MB/s in 2.6s
2018-11-01 09:51:04 (1.67 MB/s) - ‘./motorcycle_6098_shortened_960x540.mp4’ saved [4471322/4471322]
--2018-11-01 09:51:04-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/contrapicado_traffic_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.128.133, 151.101.192.133, 151.101.0.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.128.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10902636 (10M) [application/octet-stream]
Saving to: ‘./contrapicado_traffic_shortened_960x540.mp4’
contrapicado_traffic_shor 100%[====================================>] 10.40M 3.08MB/s in 3.8s
2018-11-01 09:51:09 (2.74 MB/s) - ‘./contrapicado_traffic_shortened_960x540.mp4’ saved [10902636/10902636]
--2018-11-01 09:51:09-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/police_car_6095_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.192.133, 151.101.0.133, 151.101.64.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.192.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14325763 (14M) [application/octet-stream]
Saving to: ‘./police_car_6095_shortened_960x540.mp4’
police_car_6095_shortened_96 100%[============================================>] 13.66M 3.12MB/s in 4.7s
2018-11-01 09:51:14 (2.93 MB/s) - ‘./police_car_6095_shortened_960x540.mp4’ saved [14325763/14325763]
--2018-11-01 09:51:14-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/scooters_5638_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.64.133, 151.101.128.133, 151.101.192.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.64.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9621265 (9.2M) [application/octet-stream]
Saving to: ‘./scooters_5638_shortened_960x540.mp4’
scooters_5638_shortened_960x 100%[============================================>] 9.17M 1.18MB/s in 8.1s
2018-11-01 09:51:24 (1.13 MB/s) - ‘./scooters_5638_shortened_960x540.mp4’ saved [9621265/9621265]
making ssd_mobilenet
(cd ../../caffe/SSD_MobileNet; make compile; cd ../../apps/video_objects; cp ../../caffe/SSD_MobileNet/graph ./graph;)
make[1]: Entering directory '/home/foreverstrong/ncs_work/ncappzoo/caffe/SSD_MobileNet'
making caffemodel
Attempting download of caffemodel file from this url:
https://github.com/chuanqi305/MobileNet-SSD/blob/master/mobilenet_iter_73000.caffemodel
--2018-11-01 09:51:24-- https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/mobilenet_iter_73000.caffemodel
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 23306119 (22M) [application/octet-stream]
Saving to: ‘./mobilenet_iter_73000.caffemodel’
mobilenet_iter_73000.caffemo 100%[============================================>] 22.23M 2.94MB/s in 8.2s
2018-11-01 09:51:33 (2.70 MB/s) - ‘./mobilenet_iter_73000.caffemodel’ saved [23306119/23306119]
making prototxt
Downloading Prototxt file
--2018-11-01 09:51:33-- https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/deploy.prototxt
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44667 (44K) [text/plain]
Saving to: ‘deploy.prototxt’
ploy.prototxt 100%[============================================>] 43.62K --.-KB/s in 0.1s
2018-11-01 09:51:34 (333 KB/s) - ‘deploy.prototxt’ saved [44667/44667]
prototxt file downloaded.
patching prototxt.
patching file patched_deploy.prototxt (read from deploy.prototxt)
Hunk #1 succeeded at 3096 (offset 1190 lines).
Hunk #2 succeeded at 3099 (offset 1190 lines).
if [ -e merge_bn.py ] ; \
then \
echo "merge_bn.py already exists. skipping download."; \
else \
echo ""; \
echo "Attempting download of merge_bn.py from this url: "; \
echo "https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/merge_bn.py"; \
wget -P . https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/merge_bn.py; \
python3 merge_bn.py --model deploy.prototxt --weight mobilenet_iter_73000.caffemodel; \
fi; \
Attempting download of merge_bn.py from this url:
https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/merge_bn.py
--2018-11-01 09:51:34-- https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/merge_bn.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.64.133, 151.101.128.133, 151.101.192.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.64.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4426 (4.3K) [text/plain]
Saving to: ‘./merge_bn.py’
merge_bn.py 100%[============================================>] 4.32K --.-KB/s in 0s
2018-11-01 09:51:35 (55.4 MB/s) - ‘./merge_bn.py’ saved [4426/4426]
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1101 09:51:36.099043 7224 _caffe.cpp:122] DEPRECATION WARNING - deprecated use of Python interface
W1101 09:51:36.099136 7224 _caffe.cpp:123] Use this instead (with the named "weights" parameter):
W1101 09:51:36.099159 7224 _caffe.cpp:125] Net('deploy.prototxt', 1, weights='mobilenet_iter_73000.caffemodel')
I1101 09:51:36.101335 7224 upgrade_proto.cpp:67] Attempting to upgrade input file specified using deprecated input fields: deploy.prototxt
I1101 09:51:36.101434 7224 upgrade_proto.cpp:70] Successfully upgraded file specified using deprecated input fields.
W1101 09:51:36.101460 7224 upgrade_proto.cpp:72] Note that future Caffe releases will only support input layers and not input fields.
I1101 09:51:36.101483 7224 upgrade_proto.cpp:77] Attempting to upgrade batch norm layers using deprecated params: deploy.prototxt
I1101 09:51:36.101510 7224 upgrade_proto.cpp:80] Successfully upgraded batch norm layers using deprecated params.
I1101 09:51:36.102473 7224 net.cpp:58] Initializing net from parameters:
name: "MobileNet-SSD"
state {
phase: TEST
level: 0
}
layer {
name: "input"
type: "Input"
top: "data"
input_param {
shape {
dim: 1
dim: 3
dim: 300
dim: 300
}
}
}
layer {
name: "conv0"
type: "Convolution"
bottom: "data"
top: "conv0"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 32
bias_term: false
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv0/bn"
type: "BatchNorm"
bottom: "conv0"
top: "conv0"
}
layer {
name: "conv0/scale"
type: "Scale"
bottom: "conv0"
top: "conv0"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv0/relu"
type: "ReLU"
bottom: "conv0"
top: "conv0"
}
layer {
name: "conv1/dw"
type: "Convolution"
bottom: "conv0"
top: "conv1/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 32
bias_term: false
pad: 1
kernel_size: 3
group: 32
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv1/dw/bn"
type: "BatchNorm"
bottom: "conv1/dw"
top: "conv1/dw"
}
layer {
name: "conv1/dw/scale"
type: "Scale"
bottom: "conv1/dw"
top: "conv1/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv1/dw/relu"
type: "ReLU"
bottom: "conv1/dw"
top: "conv1/dw"
}
layer {
name: "conv1"
type: "Convolution"
bottom: "conv1/dw"
top: "conv1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 64
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv1/bn"
type: "BatchNorm"
bottom: "conv1"
top: "conv1"
}
layer {
name: "conv1/scale"
type: "Scale"
bottom: "conv1"
top: "conv1"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv1/relu"
type: "ReLU"
bottom: "conv1"
top: "conv1"
}
layer {
name: "conv2/dw"
type: "Convolution"
bottom: "conv1"
top: "conv2/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 64
bias_term: false
pad: 1
kernel_size: 3
group: 64
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2/dw/bn"
type: "BatchNorm"
bottom: "conv2/dw"
top: "conv2/dw"
}
layer {
name: "conv2/dw/scale"
type: "Scale"
bottom: "conv2/dw"
top: "conv2/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv2/dw/relu"
type: "ReLU"
bottom: "conv2/dw"
top: "conv2/dw"
}
layer {
name: "conv2"
type: "Convolution"
bottom: "conv2/dw"
top: "conv2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2/bn"
type: "BatchNorm"
bottom: "conv2"
top: "conv2"
}
layer {
name: "conv2/scale"
type: "Scale"
bottom: "conv2"
top: "conv2"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv2/relu"
type: "ReLU"
bottom: "conv2"
top: "conv2"
}
layer {
name: "conv3/dw"
type: "Convolution"
bottom: "conv2"
top: "conv3/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: false
pad: 1
kernel_size: 3
group: 128
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3/dw/bn"
type: "BatchNorm"
bottom: "conv3/dw"
top: "conv3/dw"
}
layer {
name: "conv3/dw/scale"
type: "Scale"
bottom: "conv3/dw"
top: "conv3/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv3/dw/relu"
type: "ReLU"
bottom: "conv3/dw"
top: "conv3/dw"
}
layer {
name: "conv3"
type: "Convolution"
bottom: "conv3/dw"
top: "conv3"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3/bn"
type: "BatchNorm"
bottom: "conv3"
top: "conv3"
}
layer {
name: "conv3/scale"
type: "Scale"
bottom: "conv3"
top: "conv3"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv3/relu"
type: "ReLU"
bottom: "conv3"
top: "conv3"
}
layer {
name: "conv4/dw"
type: "Convolution"
bottom: "conv3"
top: "conv4/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: false
pad: 1
kernel_size: 3
group: 128
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4/dw/bn"
type: "BatchNorm"
bottom: "conv4/dw"
top: "conv4/dw"
}
layer {
name: "conv4/dw/scale"
type: "Scale"
bottom: "conv4/dw"
top: "conv4/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv4/dw/relu"
type: "ReLU"
bottom: "conv4/dw"
top: "conv4/dw"
}
layer {
name: "conv4"
type: "Convolution"
bottom: "conv4/dw"
top: "conv4"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4/bn"
type: "BatchNorm"
bottom: "conv4"
top: "conv4"
}
layer {
name: "conv4/scale"
type: "Scale"
bottom: "conv4"
top: "conv4"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv4/relu"
type: "ReLU"
bottom: "conv4"
top: "conv4"
}
layer {
name: "conv5/dw"
type: "Convolution"
bottom: "conv4"
top: "conv5/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: false
pad: 1
kernel_size: 3
group: 256
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv5/dw/bn"
type: "BatchNorm"
bottom: "conv5/dw"
top: "conv5/dw"
}
layer {
name: "conv5/dw/scale"
type: "Scale"
bottom: "conv5/dw"
top: "conv5/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv5/dw/relu"
type: "ReLU"
bottom: "conv5/dw"
top: "conv5/dw"
}
layer {
name: "conv5"
type: "Convolution"
bottom: "conv5/dw"
top: "conv5"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv5/bn"
type: "BatchNorm"
bottom: "conv5"
top: "conv5"
}
layer {
name: "conv5/scale"
type: "Scale"
bottom: "conv5"
top: "conv5"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv5/relu"
type: "ReLU"
bottom: "conv5"
top: "conv5"
}
layer {
name: "conv6/dw"
type: "Convolution"
bottom: "conv5"
top: "conv6/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: false
pad: 1
kernel_size: 3
group: 256
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv6/dw/bn"
type: "BatchNorm"
bottom: "conv6/dw"
top: "conv6/dw"
}
layer {
name: "conv6/dw/scale"
type: "Scale"
bottom: "conv6/dw"
top: "conv6/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv6/dw/relu"
type: "ReLU"
bottom: "conv6/dw"
top: "conv6/dw"
}
layer {
name: "conv6"
type: "Convolution"
bottom: "conv6/dw"
top: "conv6"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv6/bn"
type: "BatchNorm"
bottom: "conv6"
top: "conv6"
}
layer {
name: "conv6/scale"
type: "Scale"
bottom: "conv6"
top: "conv6"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv6/relu"
type: "ReLU"
bottom: "conv6"
top: "conv6"
}
layer {
name: "conv7/dw"
type: "Convolution"
bottom: "conv6"
top: "conv7/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv7/dw/bn"
type: "BatchNorm"
bottom: "conv7/dw"
top: "conv7/dw"
}
layer {
name: "conv7/dw/scale"
type: "Scale"
bottom: "conv7/dw"
top: "conv7/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv7/dw/relu"
type: "ReLU"
bottom: "conv7/dw"
top: "conv7/dw"
}
layer {
name: "conv7"
type: "Convolution"
bottom: "conv7/dw"
top: "conv7"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv7/bn"
type: "BatchNorm"
bottom: "conv7"
top: "conv7"
}
layer {
name: "conv7/scale"
type: "Scale"
bottom: "conv7"
top: "conv7"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv7/relu"
type: "ReLU"
bottom: "conv7"
top: "conv7"
}
layer {
name: "conv8/dw"
type: "Convolution"
bottom: "conv7"
top: "conv8/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv8/dw/bn"
type: "BatchNorm"
bottom: "conv8/dw"
top: "conv8/dw"
}
layer {
name: "conv8/dw/scale"
type: "Scale"
bottom: "conv8/dw"
top: "conv8/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv8/dw/relu"
type: "ReLU"
bottom: "conv8/dw"
top: "conv8/dw"
}
layer {
name: "conv8"
type: "Convolution"
bottom: "conv8/dw"
top: "conv8"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv8/bn"
type: "BatchNorm"
bottom: "conv8"
top: "conv8"
}
layer {
name: "conv8/scale"
type: "Scale"
bottom: "conv8"
top: "conv8"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv8/relu"
type: "ReLU"
bottom: "conv8"
top: "conv8"
}
layer {
name: "conv9/dw"
type: "Convolution"
bottom: "conv8"
top: "conv9/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv9/dw/bn"
type: "BatchNorm"
bottom: "conv9/dw"
top: "conv9/dw"
}
layer {
name: "conv9/dw/scale"
type: "Scale"
bottom: "conv9/dw"
top: "conv9/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv9/dw/relu"
type: "ReLU"
bottom: "conv9/dw"
top: "conv9/dw"
}
layer {
name: "conv9"
type: "Convolution"
bottom: "conv9/dw"
top: "conv9"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv9/bn"
type: "BatchNorm"
bottom: "conv9"
top: "conv9"
}
layer {
name: "conv9/scale"
type: "Scale"
bottom: "conv9"
top: "conv9"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv9/relu"
type: "ReLU"
bottom: "conv9"
top: "conv9"
}
layer {
name: "conv10/dw"
type: "Convolution"
bottom: "conv9"
top: "conv10/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv10/dw/bn"
type: "BatchNorm"
bottom: "conv10/dw"
top: "conv10/dw"
}
layer {
name: "conv10/dw/scale"
type: "Scale"
bottom: "conv10/dw"
top: "conv10/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv10/dw/relu"
type: "ReLU"
bottom: "conv10/dw"
top: "conv10/dw"
}
layer {
name: "conv10"
type: "Convolution"
bottom: "conv10/dw"
top: "conv10"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv10/bn"
type: "BatchNorm"
bottom: "conv10"
top: "conv10"
}
layer {
name: "conv10/scale"
type: "Scale"
bottom: "conv10"
top: "conv10"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv10/relu"
type: "ReLU"
bottom: "conv10"
top: "conv10"
}
layer {
name: "conv11/dw"
type: "Convolution"
bottom: "conv10"
top: "conv11/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv11/dw/bn"
type: "BatchNorm"
bottom: "conv11/dw"
top: "conv11/dw"
}
layer {
name: "conv11/dw/scale"
type: "Scale"
bottom: "conv11/dw"
top: "conv11/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv11/dw/relu"
type: "ReLU"
bottom: "conv11/dw"
top: "conv11/dw"
}
layer {
name: "conv11"
type: "Convolution"
bottom: "conv11/dw"
top: "conv11"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv11/bn"
type: "BatchNorm"
bottom: "conv11"
top: "conv11"
}
layer {
name: "conv11/scale"
type: "Scale"
bottom: "conv11"
top: "conv11"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv11/relu"
type: "ReLU"
bottom: "conv11"
top: "conv11"
}
layer {
name: "conv12/dw"
type: "Convolution"
bottom: "conv11"
top: "conv12/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
pad: 1
kernel_size: 3
group: 512
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv12/dw/bn"
type: "BatchNorm"
bottom: "conv12/dw"
top: "conv12/dw"
}
layer {
name: "conv12/dw/scale"
type: "Scale"
bottom: "conv12/dw"
top: "conv12/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv12/dw/relu"
type: "ReLU"
bottom: "conv12/dw"
top: "conv12/dw"
}
layer {
name: "conv12"
type: "Convolution"
bottom: "conv12/dw"
top: "conv12"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 1024
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv12/bn"
type: "BatchNorm"
bottom: "conv12"
top: "conv12"
}
layer {
name: "conv12/scale"
type: "Scale"
bottom: "conv12"
top: "conv12"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv12/relu"
type: "ReLU"
bottom: "conv12"
top: "conv12"
}
layer {
name: "conv13/dw"
type: "Convolution"
bottom: "conv12"
top: "conv13/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 1024
bias_term: false
pad: 1
kernel_size: 3
group: 1024
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv13/dw/bn"
type: "BatchNorm"
bottom: "conv13/dw"
top: "conv13/dw"
}
layer {
name: "conv13/dw/scale"
type: "Scale"
bottom: "conv13/dw"
top: "conv13/dw"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv13/dw/relu"
type: "ReLU"
bottom: "conv13/dw"
top: "conv13/dw"
}
layer {
name: "conv13"
type: "Convolution"
bottom: "conv13/dw"
top: "conv13"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 1024
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv13/bn"
type: "BatchNorm"
bottom: "conv13"
top: "conv13"
}
layer {
name: "conv13/scale"
type: "Scale"
bottom: "conv13"
top: "conv13"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv13/relu"
type: "ReLU"
bottom: "conv13"
top: "conv13"
}
layer {
name: "conv14_1"
type: "Convolution"
bottom: "conv13"
top: "conv14_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv14_1/bn"
type: "BatchNorm"
bottom: "conv14_1"
top: "conv14_1"
}
layer {
name: "conv14_1/scale"
type: "Scale"
bottom: "conv14_1"
top: "conv14_1"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv14_1/relu"
type: "ReLU"
bottom: "conv14_1"
top: "conv14_1"
}
layer {
name: "conv14_2"
type: "Convolution"
bottom: "conv14_1"
top: "conv14_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: false
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv14_2/bn"
type: "BatchNorm"
bottom: "conv14_2"
top: "conv14_2"
}
layer {
name: "conv14_2/scale"
type: "Scale"
bottom: "conv14_2"
top: "conv14_2"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv14_2/relu"
type: "ReLU"
bottom: "conv14_2"
top: "conv14_2"
}
layer {
name: "conv15_1"
type: "Convolution"
bottom: "conv14_2"
top: "conv15_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv15_1/bn"
type: "BatchNorm"
bottom: "conv15_1"
top: "conv15_1"
}
layer {
name: "conv15_1/scale"
type: "Scale"
bottom: "conv15_1"
top: "conv15_1"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv15_1/relu"
type: "ReLU"
bottom: "conv15_1"
top: "conv15_1"
}
layer {
name: "conv15_2"
type: "Convolution"
bottom: "conv15_1"
top: "conv15_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: false
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv15_2/bn"
type: "BatchNorm"
bottom: "conv15_2"
top: "conv15_2"
}
layer {
name: "conv15_2/scale"
type: "Scale"
bottom: "conv15_2"
top: "conv15_2"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv15_2/relu"
type: "ReLU"
bottom: "conv15_2"
top: "conv15_2"
}
layer {
name: "conv16_1"
type: "Convolution"
bottom: "conv15_2"
top: "conv16_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv16_1/bn"
type: "BatchNorm"
bottom: "conv16_1"
top: "conv16_1"
}
layer {
name: "conv16_1/scale"
type: "Scale"
bottom: "conv16_1"
top: "conv16_1"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv16_1/relu"
type: "ReLU"
bottom: "conv16_1"
top: "conv16_1"
}
layer {
name: "conv16_2"
type: "Convolution"
bottom: "conv16_1"
top: "conv16_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: false
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv16_2/bn"
type: "BatchNorm"
bottom: "conv16_2"
top: "conv16_2"
}
layer {
name: "conv16_2/scale"
type: "Scale"
bottom: "conv16_2"
top: "conv16_2"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv16_2/relu"
type: "ReLU"
bottom: "conv16_2"
top: "conv16_2"
}
layer {
name: "conv17_1"
type: "Convolution"
bottom: "conv16_2"
top: "conv17_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 64
bias_term: false
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv17_1/bn"
type: "BatchNorm"
bottom: "conv17_1"
top: "conv17_1"
}
layer {
name: "conv17_1/scale"
type: "Scale"
bottom: "conv17_1"
top: "conv17_1"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv17_1/relu"
type: "ReLU"
bottom: "conv17_1"
top: "conv17_1"
}
layer {
name: "conv17_2"
type: "Convolution"
bottom: "conv17_1"
top: "conv17_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: false
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv17_2/bn"
type: "BatchNorm"
bottom: "conv17_2"
top: "conv17_2"
}
layer {
name: "conv17_2/scale"
type: "Scale"
bottom: "conv17_2"
top: "conv17_2"
param {
lr_mult: 0.1
decay_mult: 0
}
param {
lr_mult: 0.2
decay_mult: 0
}
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv17_2/relu"
type: "ReLU"
bottom: "conv17_2"
top: "conv17_2"
}
layer {
name: "conv11_mbox_loc"
type: "Convolution"
bottom: "conv11"
top: "conv11_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 12
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv11_mbox_loc_perm"
type: "Permute"
bottom: "conv11_mbox_loc"
top: "conv11_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv11_mbox_loc_flat"
type: "Flatten"
bottom: "conv11_mbox_loc_perm"
top: "conv11_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv11_mbox_conf"
type: "Convolution"
bottom: "conv11"
top: "conv11_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 63
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv11_mbox_conf_perm"
type: "Permute"
bottom: "conv11_mbox_conf"
top: "conv11_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv11_mbox_conf_flat"
type: "Flatten"
bottom: "conv11_mbox_conf_perm"
top: "conv11_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv11_mbox_priorbox"
type: "PriorBox"
bottom: "conv11"
bottom: "data"
top: "conv11_mbox_priorbox"
prior_box_param {
min_size: 60
aspect_ratio: 2
flip: true
clip: false
variance: 0.1
variance: 0.1
variance: 0.2
variance: 0.2
offset: 0.5
}
}
layer {
name: "conv13_mbox_loc"
type: "Convolution"
bottom: "conv13"
top: "conv13_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 24
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv13_mbox_loc_perm"
type: "Permute"
bottom: "conv13_mbox_loc"
top: "conv13_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv13_mbox_loc_flat"
type: "Flatten"
bottom: "conv13_mbox_loc_perm"
top: "conv13_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv13_mbox_conf"
type: "Convolution"
bottom: "conv13"
top: "conv13_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 126
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv13_mbox_conf_perm"
type: "Permute"
bottom: "conv13_mbox_conf"
top: "conv13_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv13_mbox_conf_flat"
type: "Flatten"
bottom: "conv13_mbox_conf_perm"
top: "conv13_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv13_mbox_priorbox"
type: "PriorBox"
bottom: "conv13"
bottom: "data"
top:
I1101 09:51:36.112706 7224 layer_factory.hpp:77] Creating layer input
I1101 09:51:36.113342 7224 net.cpp:100] Creating Layer input
I1101 09:51:36.113798 7224 net.cpp:408] input -> data
I1101 09:51:36.113819 7224 net.cpp:150] Setting up input
I1101 09:51:36.113826 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.113829 7224 net.cpp:165] Memory required for data: 1080000
I1101 09:51:36.113833 7224 layer_factory.hpp:77] Creating layer data_input_0_split
I1101 09:51:36.113840 7224 net.cpp:100] Creating Layer data_input_0_split
I1101 09:51:36.113844 7224 net.cpp:434] data_input_0_split <- data
I1101 09:51:36.113849 7224 net.cpp:408] data_input_0_split -> data_input_0_split_0
I1101 09:51:36.113855 7224 net.cpp:408] data_input_0_split -> data_input_0_split_1
I1101 09:51:36.113862 7224 net.cpp:408] data_input_0_split -> data_input_0_split_2
I1101 09:51:36.113950 7224 net.cpp:408] data_input_0_split -> data_input_0_split_3
I1101 09:51:36.113960 7224 net.cpp:408] data_input_0_split -> data_input_0_split_4
I1101 09:51:36.113965 7224 net.cpp:408] data_input_0_split -> data_input_0_split_5
I1101 09:51:36.113970 7224 net.cpp:408] data_input_0_split -> data_input_0_split_6
I1101 09:51:36.113978 7224 net.cpp:150] Setting up data_input_0_split
I1101 09:51:36.113983 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.113988 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.113992 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.113996 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.114001 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.114004 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.114008 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.114012 7224 net.cpp:165] Memory required for data: 8640000
......
......
......
I1101 09:51:36.312430 7224 net.cpp:283] Network initialization done.
I1101 09:51:36.333739 7224 upgrade_proto.cpp:77] Attempting to upgrade batch norm layers using deprecated params: mobilenet_iter_73000.caffemodel
I1101 09:51:36.333778 7224 upgrade_proto.cpp:80] Successfully upgraded batch norm layers using deprecated params.
I1101 09:51:36.334020 7224 net.cpp:761] Ignoring source layer data
I1101 09:51:36.334048 7224 net.cpp:761] Ignoring source layer data_data_0_split
I1101 09:51:36.340283 7224 net.cpp:761] Ignoring source layer mbox_loss
I1101 09:51:36.345633 7224 upgrade_proto.cpp:67] Attempting to upgrade input file specified using deprecated input fields: no_bn.prototxt
I1101 09:51:36.348554 7224 upgrade_proto.cpp:70] Successfully upgraded file specified using deprecated input fields.
W1101 09:51:36.348590 7224 upgrade_proto.cpp:72] Note that future Caffe releases will only support input layers and not input fields.
I1101 09:51:36.349210 7224 net.cpp:58] Initializing net from parameters:
name: "MobileNet-SSD"
state {
phase: TEST
level: 0
}
layer {
name: "input"
type: "Input"
top: "data"
input_param {
shape {
dim: 1
dim: 3
dim: 300
dim: 300
}
}
}
layer {
name: "conv0"
type: "Convolution"
bottom: "data"
top: "conv0"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 32
bias_term: true
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv0/relu"
type: "ReLU"
bottom: "conv0"
top: "conv0"
}
layer {
name: "conv1/dw"
type: "Convolution"
bottom: "conv0"
top: "conv1/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 32
bias_term: true
pad: 1
kernel_size: 3
group: 32
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv1/dw/relu"
type: "ReLU"
bottom: "conv1/dw"
top: "conv1/dw"
}
layer {
name: "conv1"
type: "Convolution"
bottom: "conv1/dw"
top: "conv1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 64
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv1/relu"
type: "ReLU"
bottom: "conv1"
top: "conv1"
}
layer {
name: "conv2/dw"
type: "Convolution"
bottom: "conv1"
top: "conv2/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 64
bias_term: true
pad: 1
kernel_size: 3
group: 64
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2/dw/relu"
type: "ReLU"
bottom: "conv2/dw"
top: "conv2/dw"
}
layer {
name: "conv2"
type: "Convolution"
bottom: "conv2/dw"
top: "conv2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2/relu"
type: "ReLU"
bottom: "conv2"
top: "conv2"
}
layer {
name: "conv3/dw"
type: "Convolution"
bottom: "conv2"
top: "conv3/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: true
pad: 1
kernel_size: 3
group: 128
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3/dw/relu"
type: "ReLU"
bottom: "conv3/dw"
top: "conv3/dw"
}
layer {
name: "conv3"
type: "Convolution"
bottom: "conv3/dw"
top: "conv3"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3/relu"
type: "ReLU"
bottom: "conv3"
top: "conv3"
}
layer {
name: "conv4/dw"
type: "Convolution"
bottom: "conv3"
top: "conv4/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: true
pad: 1
kernel_size: 3
group: 128
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4/dw/relu"
type: "ReLU"
bottom: "conv4/dw"
top: "conv4/dw"
}
layer {
name: "conv4"
type: "Convolution"
bottom: "conv4/dw"
top: "conv4"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4/relu"
type: "ReLU"
bottom: "conv4"
top: "conv4"
}
layer {
name: "conv5/dw"
type: "Convolution"
bottom: "conv4"
top: "conv5/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: true
pad: 1
kernel_size: 3
group: 256
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv5/dw/relu"
type: "ReLU"
bottom: "conv5/dw"
top: "conv5/dw"
}
layer {
name: "conv5"
type: "Convolution"
bottom: "conv5/dw"
top: "conv5"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv5/relu"
type: "ReLU"
bottom: "conv5"
top: "conv5"
}
layer {
name: "conv6/dw"
type: "Convolution"
bottom: "conv5"
top: "conv6/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: true
pad: 1
kernel_size: 3
group: 256
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv6/dw/relu"
type: "ReLU"
bottom: "conv6/dw"
top: "conv6/dw"
}
layer {
name: "conv6"
type: "Convolution"
bottom: "conv6/dw"
top: "conv6"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv6/relu"
type: "ReLU"
bottom: "conv6"
top: "conv6"
}
layer {
name: "conv7/dw"
type: "Convolution"
bottom: "conv6"
top: "conv7/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv7/dw/relu"
type: "ReLU"
bottom: "conv7/dw"
top: "conv7/dw"
}
layer {
name: "conv7"
type: "Convolution"
bottom: "conv7/dw"
top: "conv7"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv7/relu"
type: "ReLU"
bottom: "conv7"
top: "conv7"
}
layer {
name: "conv8/dw"
type: "Convolution"
bottom: "conv7"
top: "conv8/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv8/dw/relu"
type: "ReLU"
bottom: "conv8/dw"
top: "conv8/dw"
}
layer {
name: "conv8"
type: "Convolution"
bottom: "conv8/dw"
top: "conv8"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv8/relu"
type: "ReLU"
bottom: "conv8"
top: "conv8"
}
layer {
name: "conv9/dw"
type: "Convolution"
bottom: "conv8"
top: "conv9/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv9/dw/relu"
type: "ReLU"
bottom: "conv9/dw"
top: "conv9/dw"
}
layer {
name: "conv9"
type: "Convolution"
bottom: "conv9/dw"
top: "conv9"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv9/relu"
type: "ReLU"
bottom: "conv9"
top: "conv9"
}
layer {
name: "conv10/dw"
type: "Convolution"
bottom: "conv9"
top: "conv10/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv10/dw/relu"
type: "ReLU"
bottom: "conv10/dw"
top: "conv10/dw"
}
layer {
name: "conv10"
type: "Convolution"
bottom: "conv10/dw"
top: "conv10"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv10/relu"
type: "ReLU"
bottom: "conv10"
top: "conv10"
}
layer {
name: "conv11/dw"
type: "Convolution"
bottom: "conv10"
top: "conv11/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
pad: 1
kernel_size: 3
group: 512
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv11/dw/relu"
type: "ReLU"
bottom: "conv11/dw"
top: "conv11/dw"
}
layer {
name: "conv11"
type: "Convolution"
bottom: "conv11/dw"
top: "conv11"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv11/relu"
type: "ReLU"
bottom: "conv11"
top: "conv11"
}
layer {
name: "conv12/dw"
type: "Convolution"
bottom: "conv11"
top: "conv12/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
pad: 1
kernel_size: 3
group: 512
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv12/dw/relu"
type: "ReLU"
bottom: "conv12/dw"
top: "conv12/dw"
}
layer {
name: "conv12"
type: "Convolution"
bottom: "conv12/dw"
top: "conv12"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 1024
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv12/relu"
type: "ReLU"
bottom: "conv12"
top: "conv12"
}
layer {
name: "conv13/dw"
type: "Convolution"
bottom: "conv12"
top: "conv13/dw"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 1024
bias_term: true
pad: 1
kernel_size: 3
group: 1024
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv13/dw/relu"
type: "ReLU"
bottom: "conv13/dw"
top: "conv13/dw"
}
layer {
name: "conv13"
type: "Convolution"
bottom: "conv13/dw"
top: "conv13"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 1024
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv13/relu"
type: "ReLU"
bottom: "conv13"
top: "conv13"
}
layer {
name: "conv14_1"
type: "Convolution"
bottom: "conv13"
top: "conv14_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv14_1/relu"
type: "ReLU"
bottom: "conv14_1"
top: "conv14_1"
}
layer {
name: "conv14_2"
type: "Convolution"
bottom: "conv14_1"
top: "conv14_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 512
bias_term: true
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv14_2/relu"
type: "ReLU"
bottom: "conv14_2"
top: "conv14_2"
}
layer {
name: "conv15_1"
type: "Convolution"
bottom: "conv14_2"
top: "conv15_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv15_1/relu"
type: "ReLU"
bottom: "conv15_1"
top: "conv15_1"
}
layer {
name: "conv15_2"
type: "Convolution"
bottom: "conv15_1"
top: "conv15_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: true
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv15_2/relu"
type: "ReLU"
bottom: "conv15_2"
top: "conv15_2"
}
layer {
name: "conv16_1"
type: "Convolution"
bottom: "conv15_2"
top: "conv16_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv16_1/relu"
type: "ReLU"
bottom: "conv16_1"
top: "conv16_1"
}
layer {
name: "conv16_2"
type: "Convolution"
bottom: "conv16_1"
top: "conv16_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 256
bias_term: true
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv16_2/relu"
type: "ReLU"
bottom: "conv16_2"
top: "conv16_2"
}
layer {
name: "conv17_1"
type: "Convolution"
bottom: "conv16_2"
top: "conv17_1"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 64
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv17_1/relu"
type: "ReLU"
bottom: "conv17_1"
top: "conv17_1"
}
layer {
name: "conv17_2"
type: "Convolution"
bottom: "conv17_1"
top: "conv17_2"
param {
lr_mult: 0.1
decay_mult: 0.1
}
convolution_param {
num_output: 128
bias_term: true
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv17_2/relu"
type: "ReLU"
bottom: "conv17_2"
top: "conv17_2"
}
layer {
name: "conv11_mbox_loc"
type: "Convolution"
bottom: "conv11"
top: "conv11_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 12
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv11_mbox_loc_perm"
type: "Permute"
bottom: "conv11_mbox_loc"
top: "conv11_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv11_mbox_loc_flat"
type: "Flatten"
bottom: "conv11_mbox_loc_perm"
top: "conv11_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv11_mbox_conf"
type: "Convolution"
bottom: "conv11"
top: "conv11_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 63
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv11_mbox_conf_perm"
type: "Permute"
bottom: "conv11_mbox_conf"
top: "conv11_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv11_mbox_conf_flat"
type: "Flatten"
bottom: "conv11_mbox_conf_perm"
top: "conv11_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv11_mbox_priorbox"
type: "PriorBox"
bottom: "conv11"
bottom: "data"
top: "conv11_mbox_priorbox"
prior_box_param {
min_size: 60
aspect_ratio: 2
flip: true
clip: false
variance: 0.1
variance: 0.1
variance: 0.2
variance: 0.2
offset: 0.5
}
}
layer {
name: "conv13_mbox_loc"
type: "Convolution"
bottom: "conv13"
top: "conv13_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 24
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv13_mbox_loc_perm"
type: "Permute"
bottom: "conv13_mbox_loc"
top: "conv13_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv13_mbox_loc_flat"
type: "Flatten"
bottom: "conv13_mbox_loc_perm"
top: "conv13_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv13_mbox_conf"
type: "Convolution"
bottom: "conv13"
top: "conv13_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 126
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv13_mbox_conf_perm"
type: "Permute"
bottom: "conv13_mbox_conf"
top: "conv13_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv13_mbox_conf_flat"
type: "Flatten"
bottom: "conv13_mbox_conf_perm"
top: "conv13_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv13_mbox_priorbox"
type: "PriorBox"
bottom: "conv13"
bottom: "data"
top: "conv13_mbox_priorbox"
prior_box_param {
min_size: 105
max_size: 150
aspect_ratio: 2
aspect_ratio: 3
flip: true
clip: false
variance: 0.1
variance: 0.1
variance: 0.2
variance: 0.2
offset: 0.5
}
}
layer {
name: "conv14_2_mbox_loc"
type: "Convolution"
bottom: "conv14_2"
top: "conv14_2_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 24
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv14_2_mbox_loc_perm"
type: "Permute"
bottom: "conv14_2_mbox_loc"
top: "conv14_2_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv14_2_mbox_loc_flat"
type: "Flatten"
bottom: "conv14_2_mbox_loc_perm"
top: "conv14_2_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv14_2_mbox_conf"
type: "Convolution"
bottom: "conv14_2"
top: "conv14_2_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 126
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv14_2_mbox_conf_perm"
type: "Permute"
bottom: "conv14_2_mbox_conf"
top: "conv14_2_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv14_2_mbox_conf_flat"
type: "Flatten"
bottom: "conv14_2_mbox_conf_perm"
top: "conv14_2_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv14_2_mbox_priorbox"
type: "PriorBox"
bottom: "conv14_2"
bottom: "data"
top: "conv14_2_mbox_priorbox"
prior_box_param {
min_size: 150
max_size: 195
aspect_ratio: 2
aspect_ratio: 3
flip: true
clip: false
variance: 0.1
variance: 0.1
variance: 0.2
variance: 0.2
offset: 0.5
}
}
layer {
name: "conv15_2_mbox_loc"
type: "Convolution"
bottom: "conv15_2"
top: "conv15_2_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 24
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv15_2_mbox_loc_perm"
type: "Permute"
bottom: "conv15_2_mbox_loc"
top: "conv15_2_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv15_2_mbox_loc_flat"
type: "Flatten"
bottom: "conv15_2_mbox_loc_perm"
top: "conv15_2_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv15_2_mbox_conf"
type: "Convolution"
bottom: "conv15_2"
top: "conv15_2_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 126
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv15_2_mbox_conf_perm"
type: "Permute"
bottom: "conv15_2_mbox_conf"
top: "conv15_2_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv15_2_mbox_conf_flat"
type: "Flatten"
bottom: "conv15_2_mbox_conf_perm"
top: "conv15_2_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv15_2_mbox_priorbox"
type: "PriorBox"
bottom: "conv15_2"
bottom: "data"
top: "conv15_2_mbox_priorbox"
prior_box_param {
min_size: 195
max_size: 240
aspect_ratio: 2
aspect_ratio: 3
flip: true
clip: false
variance: 0.1
variance: 0.1
variance: 0.2
variance: 0.2
offset: 0.5
}
}
layer {
name: "conv16_2_mbox_loc"
type: "Convolution"
bottom: "conv16_2"
top: "conv16_2_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 24
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv16_2_mbox_loc_perm"
type: "Permute"
bottom: "conv16_2_mbox_loc"
top: "conv16_2_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv16_2_mbox_loc_flat"
type: "Flatten"
bottom: "conv16_2_mbox_loc_perm"
top: "conv16_2_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv16_2_mbox_conf"
type: "Convolution"
bottom: "conv16_2"
top: "conv16_2_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 126
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv16_2_mbox_conf_perm"
type: "Permute"
bottom: "conv16_2_mbox_conf"
top: "conv16_2_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv16_2_mbox_conf_flat"
type: "Flatten"
bottom: "conv16_2_mbox_conf_perm"
top: "conv16_2_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv16_2_mbox_priorbox"
type: "PriorBox"
bottom: "conv16_2"
bottom: "data"
top: "conv16_2_mbox_priorbox"
prior_box_param {
min_size: 240
max_size: 285
aspect_ratio: 2
aspect_ratio: 3
flip: true
clip: false
variance: 0.1
variance: 0.1
variance: 0.2
variance: 0.2
offset: 0.5
}
}
layer {
name: "conv17_2_mbox_loc"
type: "Convolution"
bottom: "conv17_2"
top: "conv17_2_mbox_loc"
param {
lr_mult: 0.1
decay_mult: 0.1
}
param {
lr_mult: 0.2
decay_mult: 0
}
convolution_param {
num_output: 24
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv17_2_mbox_loc_perm"
type: "Permute"
bottom: "conv17_2_mbox_loc"
top: "conv17_2_mbox_loc_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv17_2_mbox_loc_flat"
type: "Flatten"
bottom: "conv17_2_mbox_loc_perm"
top: "conv17_2_mbox_loc_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv17_2_mbox_conf"
type: "Convolution"
bottom: "conv17_2"
top: "conv17_2_mbox_conf"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 126
bias_term: true
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv17_2_mbox_conf_perm"
type: "Permute"
bottom: "conv17_2_mbox_conf"
top: "conv17_2_mbox_conf_perm"
permute_param {
order: 0
order: 2
order: 3
order: 1
}
}
layer {
name: "conv17_2_mbox_conf_flat"
type: "Flatten"
bottom: "conv17_2_mbox_conf_perm"
top: "conv17_2_mbox_conf_flat"
flatten_param {
axis: 1
}
}
layer {
name: "conv17_2_mbox_priorbox"
type: "PriorBox"
bottom: "conv17_2"
bottom: "data"
top: "conv17_2_mbox_priorbox"
prior_box_param {
min_size: 285
max_size: 300
aspect_ratio: 2
aspect_ratio: 3
flip: true
clip: false
variance: 0.1
variance: 0.1
variance: 0.2
variance: 0.2
offset: 0.5
}
}
layer {
name: "mbox_loc"
type: "Concat"
bottom: "conv11_mbox_loc_flat"
bottom: "conv13_mbox_loc_flat"
bottom: "conv14_2_mbox_loc_flat"
bottom: "conv15_2_mbox_loc_flat"
bottom: "conv16_2_mbox_loc_flat"
bottom: "conv17_2_mbox_loc_flat"
top: "mbox_loc"
concat_param {
axis: 1
}
}
layer {
name: "mbox_conf"
type: "Concat"
bottom: "conv11_mbox_conf_flat"
bottom: "conv13_mbox_conf_flat"
bottom: "conv14_2_mbox_conf_flat"
bottom: "conv15_2_mbox_conf_flat"
bottom: "conv16_2_mbox_conf_flat"
bottom: "conv17_2_mbox_conf_flat"
top: "mbox_conf"
concat_param {
axis: 1
}
}
layer {
name: "mbox_priorbox"
type: "Concat"
bottom: "conv11_mbox_priorbox"
bottom: "conv13_mbox_priorbox"
bottom: "conv14_2_mbox_priorbox"
bottom: "conv15_2_mbox_priorbox"
bottom: "conv16_2_mbox_priorbox"
bottom: "conv17_2_mbox_priorbox"
top: "mbox_priorbox"
concat_param {
axis: 2
}
}
layer {
name: "mbox_conf_reshape"
type: "Reshape"
bottom: "mbox_conf"
top: "mbox_conf_reshape"
reshape_param {
shape {
dim: 0
dim: -1
dim: 21
}
}
}
layer {
name: "mbox_conf_softmax"
type: "Softmax"
bottom: "mbox_conf_reshape"
top: "mbox_conf_softmax"
softmax_param {
axis: 2
}
}
layer {
name: "mbox_conf_flatten"
type: "Flatten"
bottom: "mbox_conf_softmax"
top: "mbox_conf_flatten"
flatten_param {
axis: 1
}
}
layer {
name: "detection_out"
type: "DetectionOutput"
bottom: "mbox_loc"
bottom: "mbox_conf_flatten"
bottom: "mbox_priorbox"
top: "detection_out"
include {
phase: TEST
}
detection_output_param {
num_classes: 21
share_location: true
background_label_id: 0
nms_param {
nms_threshold: 0.45
top_k: 100
}
code_type: CENTER_SIZE
keep_top_k: 100
confidence_threshold: 0.25
}
}
I1101 09:51:36.357956 7224 layer_factory.hpp:77] Creating layer input
I1101 09:51:36.366489 7224 net.cpp:100] Creating Layer input
I1101 09:51:36.366502 7224 net.cpp:408] input -> data
I1101 09:51:36.366515 7224 net.cpp:150] Setting up input
I1101 09:51:36.366521 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366525 7224 net.cpp:165] Memory required for data: 1080000
I1101 09:51:36.366529 7224 layer_factory.hpp:77] Creating layer data_input_0_split
I1101 09:51:36.366536 7224 net.cpp:100] Creating Layer data_input_0_split
I1101 09:51:36.366540 7224 net.cpp:434] data_input_0_split <- data
I1101 09:51:36.366546 7224 net.cpp:408] data_input_0_split -> data_input_0_split_0
I1101 09:51:36.366552 7224 net.cpp:408] data_input_0_split -> data_input_0_split_1
I1101 09:51:36.366559 7224 net.cpp:408] data_input_0_split -> data_input_0_split_2
I1101 09:51:36.366565 7224 net.cpp:408] data_input_0_split -> data_input_0_split_3
I1101 09:51:36.366571 7224 net.cpp:408] data_input_0_split -> data_input_0_split_4
I1101 09:51:36.366576 7224 net.cpp:408] data_input_0_split -> data_input_0_split_5
I1101 09:51:36.366582 7224 net.cpp:408] data_input_0_split -> data_input_0_split_6
I1101 09:51:36.366590 7224 net.cpp:150] Setting up data_input_0_split
I1101 09:51:36.366595 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366598 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366603 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366607 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366611 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366616 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366619 7224 net.cpp:157] Top shape: 1 3 300 300 (270000)
I1101 09:51:36.366623 7224 net.cpp:165] Memory required for data: 8640000
I1101 09:51:36.366626 7224 layer_factory.hpp:77] Creating layer conv0
I1101 09:51:36.366634 7224 net.cpp:100] Creating Layer conv0
......
......
......
I1101 09:51:36.513085 7224 net.cpp:270] This network produces output detection_out
I1101 09:51:36.513156 7224 net.cpp:283] Network initialization done.
conv0
conv1/dw
conv1
conv2/dw
conv2
conv3/dw
conv3
conv4/dw
conv4
conv5/dw
conv5
conv6/dw
conv6
conv7/dw
conv7
conv8/dw
conv8
conv9/dw
conv9
conv10/dw
conv10
conv11/dw
conv11
conv12/dw
conv12
conv13/dw
conv13
conv14_1
conv14_2
conv15_1
conv15_2
conv16_1
conv16_2
conv17_1
conv17_2
making compile
mvNCCompile v02.00, Copyright @ Movidius Ltd 2016
/usr/local/bin/ncsdk/Controllers/FileIO.py:52: UserWarning: You are using a large type. Consider reducing your data sizes for best performance
"Consider reducing your data sizes for best performance\033[0m")
make[1]: Leaving directory '/home/foreverstrong/ncs_work/ncappzoo/caffe/SSD_MobileNet'
foreverstrong@strong:~/ncs_work/ncappzoo/apps/video_objects$
foreverstrong@strong:~/ncs_work/ncappzoo/apps/video_objects$ make run_py
making prereqs
making ssd_mobilenet
(cd ../../caffe/SSD_MobileNet; make compile; cd ../../apps/video_objects; cp ../../caffe/SSD_MobileNet/graph ./graph;)
make[1]: Entering directory '/home/foreverstrong/ncs_work/ncappzoo/caffe/SSD_MobileNet'
making caffemodel
caffemodel already exists, skipping download.
making prototxt
Prototxt file already exists, skipping download.
if [ -e merge_bn.py ] ; \
then \
echo "merge_bn.py already exists. skipping download."; \
else \
echo ""; \
echo "Attempting download of merge_bn.py from this url: "; \
echo "https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/merge_bn.py"; \
wget -P . https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/merge_bn.py; \
python3 merge_bn.py --model deploy.prototxt --weight mobilenet_iter_73000.caffemodel; \
fi; \
merge_bn.py already exists. skipping download.
making compile
NCS graph file already exists, skipping compile.
make[1]: Leaving directory '/home/foreverstrong/ncs_work/ncappzoo/caffe/SSD_MobileNet'
making videos
wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/licenses.txt; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/bus_station_6094_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/motorcycle_6098_shortened_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/contrapicado_traffic_shortened_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/police_car_6095_shortened_960x540.mp4; wget -c --no-cache -P . https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/scooters_5638_shortened_960x540.mp4;
--2018-11-01 09:53:55-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/licenses.txt
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 416 Range Not Satisfiable
The file is already fully retrieved; nothing to do.
--2018-11-01 09:53:55-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/bus_station_6094_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.128.133, 151.101.192.133, 151.101.0.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.128.133|:443... connected.
HTTP request sent, awaiting response... 416 Range Not Satisfiable
The file is already fully retrieved; nothing to do.
--2018-11-01 09:53:56-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/motorcycle_6098_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.128.133, 151.101.192.133, 151.101.0.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.128.133|:443... connected.
HTTP request sent, awaiting response... 416 Range Not Satisfiable
The file is already fully retrieved; nothing to do.
--2018-11-01 09:53:56-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/contrapicado_traffic_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.192.133, 151.101.0.133, 151.101.64.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.192.133|:443... connected.
HTTP request sent, awaiting response... 416 Range Not Satisfiable
The file is already fully retrieved; nothing to do.
--2018-11-01 09:53:57-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/police_car_6095_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.192.133, 151.101.0.133, 151.101.64.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.192.133|:443... connected.
HTTP request sent, awaiting response... 416 Range Not Satisfiable
The file is already fully retrieved; nothing to do.
--2018-11-01 09:53:57-- https://raw.githubusercontent.com/nealvis/media/master/traffic_vid/scooters_5638_shortened_960x540.mp4
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 416 Range Not Satisfiable
The file is already fully retrieved; nothing to do.
making run_py
python3 ./video_objects.py
Device 0 Address: 2 - VID/PID 03e7:2150
Starting wait for connect with 2000ms timeout
Found Address: 2 - VID/PID 03e7:2150
Found EP 0x81 : max packet size is 512 bytes
Found EP 0x01 : max packet size is 512 bytes
Found and opened device
Performing bulk write of 865724 bytes...
Successfully sent 865724 bytes of data in 143.846395 ms (5.739586 MB/s)
Boot successful, device address 2
Device 0 Address: 1 - VID/PID 03e7:f63b
Found Address: 1 - VID/PID 03e7:f63b
done
Booted 1 -> VSC
actual video resolution: 960.0 x 540.0
No image from from video device, exiting
Frames per Second: 8.618121047829122
foreverstrong@strong:~/ncs_work/ncappzoo/apps/video_objects$