mirror of
https://gitlab.com/yikestone/ros_openvino_tiny-yolov3.git
synced 2025-08-03 21:54:10 +05:30
Added service and weight files
This commit is contained in:
parent
ab43bbcdce
commit
febba33f14
133
CMakeLists.txt
Normal file
133
CMakeLists.txt
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
cmake_minimum_required(VERSION 2.8.3)
|
||||||
|
project(openvino_object_detection)
|
||||||
|
|
||||||
|
find_package(InferenceEngine 1.5)
|
||||||
|
|
||||||
|
find_package(catkin REQUIRED COMPONENTS
|
||||||
|
message_generation roscpp InferenceEngine sensor_msgs cv_bridge)
|
||||||
|
|
||||||
|
if(UNIX OR APPLE)
|
||||||
|
# Linker flags.
|
||||||
|
if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
|
||||||
|
# GCC specific flags. ICC is compatible with them.
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack -z relro -z now")
|
||||||
|
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||||
|
# In Clang, -z flags are not compatible, they need to be passed to linker via -Wl.
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Compiler flags.
|
||||||
|
if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
|
||||||
|
# GCC specific flags.
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector-strong")
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector")
|
||||||
|
endif()
|
||||||
|
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||||
|
# Clang is compatbile with some of the flags.
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector")
|
||||||
|
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
|
||||||
|
# Same as above, with exception that ICC compilation crashes with -fPIE option, even
|
||||||
|
# though it uses -pie linker option that require -fPIE during compilation. Checksec
|
||||||
|
# shows that it generates correct PIE anyway if only -pie is provided.
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Generic flags.
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fno-operator-names -Wformat -Wformat-security -Wall")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||||
|
|
||||||
|
# Add OpenMP support
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add x86 intrinsic compiler support
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
||||||
|
execute_process(
|
||||||
|
COMMAND bash -c "lscpu | grep -qi flags | grep -qi flags | grep -qi f16c"
|
||||||
|
RESULT_VARIABLE SUPPORT_F16C)
|
||||||
|
if (SUPPORT_F16C EQUAL 0)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mf16c")
|
||||||
|
add_definitions(-DSUPPORT_MF16C)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND bash -c "lscpu | grep -qi flags | grep -qi flags | grep -qi sse4_1"
|
||||||
|
RESULT_VARIABLE SUPPORT_SSE41)
|
||||||
|
if (SUPPORT_SSE41 EQUAL 0)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
## Generate messages in the 'msg' folder
|
||||||
|
add_message_files(FILES
|
||||||
|
Object.msg
|
||||||
|
)
|
||||||
|
|
||||||
|
add_service_files(FILES
|
||||||
|
Objects.srv
|
||||||
|
)
|
||||||
|
|
||||||
|
generate_messages(DEPENDENCIES
|
||||||
|
std_msgs
|
||||||
|
sensor_msgs
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
catkin_package(
|
||||||
|
CATKIN_DEPENDS
|
||||||
|
message_runtime
|
||||||
|
std_msgs
|
||||||
|
sensor_msgs
|
||||||
|
)
|
||||||
|
|
||||||
|
find_package(OpenCV REQUIRED)
|
||||||
|
|
||||||
|
message( ${InferenceEngine_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
include ${catkin_INCLUDE_DIRS}
|
||||||
|
${InferenceEngine_INCLUDE_DIRS}
|
||||||
|
${InferenceEngine_INCLUDE_DIRS}/../samples
|
||||||
|
${InferenceEngine_INCLUDE_DIRS}/../samples/common
|
||||||
|
${InferenceEngine_DIR}/../src
|
||||||
|
${InferenceEngine_DIR}/../src/extension
|
||||||
|
${OpenCV_INCLUDE_DIRS}
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
add_executable(object_detection
|
||||||
|
src/main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(object_detection_test
|
||||||
|
src/test.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(object_detection ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
|
||||||
|
|
||||||
|
add_dependencies(object_detection_test ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
|
||||||
|
|
||||||
|
set_target_properties(object_detection PROPERTIES "CMAKE_CXX_FLAGS" "${CMAKE_CXX_FLAGS} -fPIE"
|
||||||
|
COMPILE_PDB_NAME object_detection)
|
||||||
|
|
||||||
|
target_link_libraries(object_detection
|
||||||
|
IE::ie_cpu_extension
|
||||||
|
gflags
|
||||||
|
dl
|
||||||
|
pthread
|
||||||
|
${catkin_LIBRARIES}
|
||||||
|
${InferenceEngine_LIBRARIES}
|
||||||
|
${OpenCV_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(object_detection_test
|
||||||
|
${catkin_LIBRARIES}
|
||||||
|
|
||||||
|
${OpenCV_LIBRARIES}
|
||||||
|
)
|
0
irmodels/tiny-YoloV3/FP16/.gitkeep
Normal file
0
irmodels/tiny-YoloV3/FP16/.gitkeep
Normal file
BIN
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.bin
Normal file
BIN
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.bin
Normal file
Binary file not shown.
80
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.labels
Normal file
80
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.labels
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
person
|
||||||
|
bicycle
|
||||||
|
car
|
||||||
|
motorbike
|
||||||
|
aeroplane
|
||||||
|
bus
|
||||||
|
train
|
||||||
|
truck
|
||||||
|
boat
|
||||||
|
traffic light
|
||||||
|
fire hydrant
|
||||||
|
stop sign
|
||||||
|
parking meter
|
||||||
|
bench
|
||||||
|
bird
|
||||||
|
cat
|
||||||
|
dog
|
||||||
|
horse
|
||||||
|
sheep
|
||||||
|
cow
|
||||||
|
elephant
|
||||||
|
bear
|
||||||
|
zebra
|
||||||
|
giraffe
|
||||||
|
backpack
|
||||||
|
umbrella
|
||||||
|
handbag
|
||||||
|
tie
|
||||||
|
suitcase
|
||||||
|
frisbee
|
||||||
|
skis
|
||||||
|
snowboard
|
||||||
|
sports ball
|
||||||
|
kite
|
||||||
|
baseball bat
|
||||||
|
baseball glove
|
||||||
|
skateboard
|
||||||
|
surfboard
|
||||||
|
tennis racket
|
||||||
|
bottle
|
||||||
|
wine glass
|
||||||
|
cup
|
||||||
|
fork
|
||||||
|
knife
|
||||||
|
spoon
|
||||||
|
bowl
|
||||||
|
banana
|
||||||
|
apple
|
||||||
|
sandwich
|
||||||
|
orange
|
||||||
|
broccoli
|
||||||
|
carrot
|
||||||
|
hot dog
|
||||||
|
pizza
|
||||||
|
donut
|
||||||
|
cake
|
||||||
|
chair
|
||||||
|
sofa
|
||||||
|
pottedplant
|
||||||
|
bed
|
||||||
|
diningtable
|
||||||
|
toilet
|
||||||
|
tvmonitor
|
||||||
|
laptop
|
||||||
|
mouse
|
||||||
|
remote
|
||||||
|
keyboard
|
||||||
|
cell phone
|
||||||
|
microwave
|
||||||
|
oven
|
||||||
|
toaster
|
||||||
|
sink
|
||||||
|
refrigerator
|
||||||
|
book
|
||||||
|
clock
|
||||||
|
vase
|
||||||
|
scissors
|
||||||
|
teddy bear
|
||||||
|
hair drier
|
||||||
|
toothbrush
|
139
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.mapping
Normal file
139
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.mapping
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<mapping>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="2" name="LeakyReLU_859" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="1" name="detector/yolo-v3-tiny/Conv/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_3/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="11" name="LeakyReLU_858" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_5/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="18" name="detector/yolo-v3-tiny/pool2_5/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_1/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="5" name="LeakyReLU_" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_5/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="16" name="detector/yolo-v3-tiny/Conv_5/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_3/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="12" name="detector/yolo-v3-tiny/pool2_3/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/upsampled" out_port_id="0"/>
|
||||||
|
<IR id="25" name="detector/yolo-v3-tiny/ResizeNearestNeighbor" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/ResizeNearestNeighbor" out_port_id="0"/>
|
||||||
|
<IR id="25" name="detector/yolo-v3-tiny/ResizeNearestNeighbor" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_4/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="13" name="detector/yolo-v3-tiny/Conv_4/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_9/BiasAdd" out_port_id="0"/>
|
||||||
|
<IR id="33" name="detector/yolo-v3-tiny/Conv_9/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_2/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="7" name="detector/yolo-v3-tiny/Conv_2/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_2/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="9" name="detector/yolo-v3-tiny/pool2_2/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_5/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="17" name="LeakyReLU_863" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/truediv" out_port_id="0"/>
|
||||||
|
<IR id="0" name="inputs" out_port_id="0"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_4/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="14" name="LeakyReLU_856" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_4/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="15" name="detector/yolo-v3-tiny/pool2_4/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_1/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="4" name="detector/yolo-v3-tiny/Conv_1/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_6/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="19" name="detector/yolo-v3-tiny/Conv_6/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_7/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="22" name="LeakyReLU_865" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/concat_3" out_port_id="0"/>
|
||||||
|
<IR id="26" name="detector/yolo-v3-tiny/concat_3" out_port_id="2"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_3/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="10" name="detector/yolo-v3-tiny/Conv_3/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="3" name="detector/yolo-v3-tiny/pool2/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_10/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="23" name="detector/yolo-v3-tiny/Conv_10/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_1/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="6" name="detector/yolo-v3-tiny/pool2_1/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_6/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="20" name="LeakyReLU_860" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_11/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="28" name="LeakyReLU_857" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_11/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="27" name="detector/yolo-v3-tiny/Conv_11/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_7/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="21" name="detector/yolo-v3-tiny/Conv_7/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_12/BiasAdd" out_port_id="0"/>
|
||||||
|
<IR id="29" name="detector/yolo-v3-tiny/Conv_12/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_2/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="8" name="LeakyReLU_861" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_8/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="32" name="LeakyReLU_864" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_10/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="24" name="LeakyReLU_862" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_8/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="31" name="detector/yolo-v3-tiny/Conv_8/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
</mapping>
|
783
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.xml
Normal file
783
irmodels/tiny-YoloV3/FP16/frozen_yolov3-tiny-mine.xml
Normal file
@ -0,0 +1,783 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<net batch="1" name="frozen_yolov3-tiny-mine" version="4">
|
||||||
|
<layers>
|
||||||
|
<layer id="0" name="inputs" precision="FP16" type="Input">
|
||||||
|
<output>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>3</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="1" name="detector/yolo-v3-tiny/Conv/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="16" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>3</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="0" size="864"/>
|
||||||
|
<biases offset="864" size="32"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="2" name="LeakyReLU_859" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="3" name="detector/yolo-v3-tiny/pool2/MaxPool" precision="FP16" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="4" name="detector/yolo-v3-tiny/Conv_1/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="32" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="896" size="9216"/>
|
||||||
|
<biases offset="10112" size="64"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="5" name="LeakyReLU_" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="6" name="detector/yolo-v3-tiny/pool2_1/MaxPool" precision="FP16" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="7" name="detector/yolo-v3-tiny/Conv_2/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="64" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="10176" size="36864"/>
|
||||||
|
<biases offset="47040" size="128"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="8" name="LeakyReLU_861" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="9" name="detector/yolo-v3-tiny/pool2_2/MaxPool" precision="FP16" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="10" name="detector/yolo-v3-tiny/Conv_3/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="128" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="47168" size="147456"/>
|
||||||
|
<biases offset="194624" size="256"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="11" name="LeakyReLU_858" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="12" name="detector/yolo-v3-tiny/pool2_3/MaxPool" precision="FP16" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="13" name="detector/yolo-v3-tiny/Conv_4/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="256" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="194880" size="589824"/>
|
||||||
|
<biases offset="784704" size="512"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="14" name="LeakyReLU_856" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="15" name="detector/yolo-v3-tiny/pool2_4/MaxPool" precision="FP16" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="16" name="detector/yolo-v3-tiny/Conv_5/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="512" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="785216" size="2359296"/>
|
||||||
|
<biases offset="3144512" size="1024"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="17" name="LeakyReLU_863" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="18" name="detector/yolo-v3-tiny/pool2_5/MaxPool" precision="FP16" type="Pooling">
|
||||||
|
<data auto_pad="same_upper" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="1,1" pool-method="max" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="19" name="detector/yolo-v3-tiny/Conv_6/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="1024" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="3145536" size="9437184"/>
|
||||||
|
<biases offset="12582720" size="2048"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="20" name="LeakyReLU_860" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="21" name="detector/yolo-v3-tiny/Conv_7/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="256" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="12584768" size="524288"/>
|
||||||
|
<biases offset="13109056" size="512"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="22" name="LeakyReLU_865" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="23" name="detector/yolo-v3-tiny/Conv_10/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="128" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="13109568" size="65536"/>
|
||||||
|
<biases offset="13175104" size="256"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="24" name="LeakyReLU_862" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="25" name="detector/yolo-v3-tiny/ResizeNearestNeighbor" precision="FP16" type="Resample">
|
||||||
|
<data antialias="0" factor="2.0" type="caffe.ResampleParameter.NEAREST"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="26" name="detector/yolo-v3-tiny/concat_3" precision="FP16" type="Concat">
|
||||||
|
<data axis="1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="2">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>384</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="27" name="detector/yolo-v3-tiny/Conv_11/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="256" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>384</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="13175360" size="1769472"/>
|
||||||
|
<biases offset="14944832" size="512"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="28" name="LeakyReLU_857" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="29" name="detector/yolo-v3-tiny/Conv_12/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="255" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="14945344" size="130560"/>
|
||||||
|
<biases offset="15075904" size="510"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="30" name="detector/yolo-v3-tiny/Conv_12/BiasAdd/YoloRegion" precision="FP16" type="RegionYolo">
|
||||||
|
<data anchors="10,14,23,27,37,58,81,82,135,169,344,319" axis="1" classes="80" coords="4" do_softmax="0" end_axis="3" mask="0,1,2" num="6"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="31" name="detector/yolo-v3-tiny/Conv_8/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="512" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="15076414" size="2359296"/>
|
||||||
|
<biases offset="17435710" size="1024"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="32" name="LeakyReLU_864" precision="FP16" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="33" name="detector/yolo-v3-tiny/Conv_9/Conv2D" precision="FP16" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="255" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="17436734" size="261120"/>
|
||||||
|
<biases offset="17697854" size="510"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="34" name="detector/yolo-v3-tiny/Conv_9/BiasAdd/YoloRegion" precision="FP16" type="RegionYolo">
|
||||||
|
<data anchors="10,14,23,27,37,58,81,82,135,169,344,319" axis="1" classes="80" coords="4" do_softmax="0" end_axis="3" mask="0,1,2" num="6"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
</layers>
|
||||||
|
<edges>
|
||||||
|
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
|
||||||
|
<edge from-layer="1" from-port="3" to-layer="2" to-port="0"/>
|
||||||
|
<edge from-layer="2" from-port="1" to-layer="3" to-port="0"/>
|
||||||
|
<edge from-layer="3" from-port="1" to-layer="4" to-port="0"/>
|
||||||
|
<edge from-layer="4" from-port="3" to-layer="5" to-port="0"/>
|
||||||
|
<edge from-layer="5" from-port="1" to-layer="6" to-port="0"/>
|
||||||
|
<edge from-layer="6" from-port="1" to-layer="7" to-port="0"/>
|
||||||
|
<edge from-layer="7" from-port="3" to-layer="8" to-port="0"/>
|
||||||
|
<edge from-layer="8" from-port="1" to-layer="9" to-port="0"/>
|
||||||
|
<edge from-layer="9" from-port="1" to-layer="10" to-port="0"/>
|
||||||
|
<edge from-layer="10" from-port="3" to-layer="11" to-port="0"/>
|
||||||
|
<edge from-layer="11" from-port="1" to-layer="12" to-port="0"/>
|
||||||
|
<edge from-layer="12" from-port="1" to-layer="13" to-port="0"/>
|
||||||
|
<edge from-layer="13" from-port="3" to-layer="14" to-port="0"/>
|
||||||
|
<edge from-layer="14" from-port="1" to-layer="15" to-port="0"/>
|
||||||
|
<edge from-layer="15" from-port="1" to-layer="16" to-port="0"/>
|
||||||
|
<edge from-layer="16" from-port="3" to-layer="17" to-port="0"/>
|
||||||
|
<edge from-layer="17" from-port="1" to-layer="18" to-port="0"/>
|
||||||
|
<edge from-layer="18" from-port="1" to-layer="19" to-port="0"/>
|
||||||
|
<edge from-layer="19" from-port="3" to-layer="20" to-port="0"/>
|
||||||
|
<edge from-layer="20" from-port="1" to-layer="21" to-port="0"/>
|
||||||
|
<edge from-layer="21" from-port="3" to-layer="22" to-port="0"/>
|
||||||
|
<edge from-layer="22" from-port="1" to-layer="23" to-port="0"/>
|
||||||
|
<edge from-layer="23" from-port="3" to-layer="24" to-port="0"/>
|
||||||
|
<edge from-layer="24" from-port="1" to-layer="25" to-port="0"/>
|
||||||
|
<edge from-layer="25" from-port="1" to-layer="26" to-port="0"/>
|
||||||
|
<edge from-layer="14" from-port="1" to-layer="26" to-port="1"/>
|
||||||
|
<edge from-layer="26" from-port="2" to-layer="27" to-port="0"/>
|
||||||
|
<edge from-layer="27" from-port="3" to-layer="28" to-port="0"/>
|
||||||
|
<edge from-layer="28" from-port="1" to-layer="29" to-port="0"/>
|
||||||
|
<edge from-layer="29" from-port="3" to-layer="30" to-port="0"/>
|
||||||
|
<edge from-layer="22" from-port="1" to-layer="31" to-port="0"/>
|
||||||
|
<edge from-layer="31" from-port="3" to-layer="32" to-port="0"/>
|
||||||
|
<edge from-layer="32" from-port="1" to-layer="33" to-port="0"/>
|
||||||
|
<edge from-layer="33" from-port="3" to-layer="34" to-port="0"/>
|
||||||
|
</edges>
|
||||||
|
<meta_data>
|
||||||
|
<MO_version value="1.5.12.49d067a0"/>
|
||||||
|
<cli_parameters>
|
||||||
|
<data_type value="FP16"/>
|
||||||
|
<disable_fusing value="False"/>
|
||||||
|
<disable_gfusing value="False"/>
|
||||||
|
<disable_nhwc_to_nchw value="False"/>
|
||||||
|
<disable_resnet_optimization value="False"/>
|
||||||
|
<extensions value="DIR"/>
|
||||||
|
<framework value="tf"/>
|
||||||
|
<generate_deprecated_IR_V2 value="False"/>
|
||||||
|
<input_model value="DIR/frozen_yolov3-tiny-mine.pb"/>
|
||||||
|
<input_model_is_text value="False"/>
|
||||||
|
<input_shape value="[1,416,416,3]"/>
|
||||||
|
<log_level value="ERROR"/>
|
||||||
|
<mean_values value="()"/>
|
||||||
|
<move_to_preprocess value="False"/>
|
||||||
|
<offload_unsupported_operations_to_tf value="False"/>
|
||||||
|
<output_dir value="DIR"/>
|
||||||
|
<reverse_input_channels value="False"/>
|
||||||
|
<scale_values value="()"/>
|
||||||
|
<silent value="False"/>
|
||||||
|
<tensorflow_use_custom_operations_config value="DIR/yolo_v3_tiny_changed.json"/>
|
||||||
|
<version value="False"/>
|
||||||
|
<unset unset_cli_parameters="batch, finegrain_fusing, freeze_placeholder_with_value, input, input_checkpoint, input_meta_graph, model_name, output, saved_model_dir, saved_model_tags, scale, tensorboard_logdir, tensorflow_custom_layer_libraries, tensorflow_custom_operations_config_update, tensorflow_object_detection_api_pipeline_config, tensorflow_operation_patterns, tensorflow_subgraph_patterns"/>
|
||||||
|
</cli_parameters>
|
||||||
|
</meta_data>
|
||||||
|
</net>
|
0
irmodels/tiny-YoloV3/FP32/.gitkeep
Normal file
0
irmodels/tiny-YoloV3/FP32/.gitkeep
Normal file
BIN
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.bin
Normal file
BIN
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.bin
Normal file
Binary file not shown.
80
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.labels
Normal file
80
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.labels
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
person
|
||||||
|
bicycle
|
||||||
|
car
|
||||||
|
motorbike
|
||||||
|
aeroplane
|
||||||
|
bus
|
||||||
|
train
|
||||||
|
truck
|
||||||
|
boat
|
||||||
|
traffic light
|
||||||
|
fire hydrant
|
||||||
|
stop sign
|
||||||
|
parking meter
|
||||||
|
bench
|
||||||
|
bird
|
||||||
|
cat
|
||||||
|
dog
|
||||||
|
horse
|
||||||
|
sheep
|
||||||
|
cow
|
||||||
|
elephant
|
||||||
|
bear
|
||||||
|
zebra
|
||||||
|
giraffe
|
||||||
|
backpack
|
||||||
|
umbrella
|
||||||
|
handbag
|
||||||
|
tie
|
||||||
|
suitcase
|
||||||
|
frisbee
|
||||||
|
skis
|
||||||
|
snowboard
|
||||||
|
sports ball
|
||||||
|
kite
|
||||||
|
baseball bat
|
||||||
|
baseball glove
|
||||||
|
skateboard
|
||||||
|
surfboard
|
||||||
|
tennis racket
|
||||||
|
bottle
|
||||||
|
wine glass
|
||||||
|
cup
|
||||||
|
fork
|
||||||
|
knife
|
||||||
|
spoon
|
||||||
|
bowl
|
||||||
|
banana
|
||||||
|
apple
|
||||||
|
sandwich
|
||||||
|
orange
|
||||||
|
broccoli
|
||||||
|
carrot
|
||||||
|
hot dog
|
||||||
|
pizza
|
||||||
|
donut
|
||||||
|
cake
|
||||||
|
chair
|
||||||
|
sofa
|
||||||
|
pottedplant
|
||||||
|
bed
|
||||||
|
diningtable
|
||||||
|
toilet
|
||||||
|
tvmonitor
|
||||||
|
laptop
|
||||||
|
mouse
|
||||||
|
remote
|
||||||
|
keyboard
|
||||||
|
cell phone
|
||||||
|
microwave
|
||||||
|
oven
|
||||||
|
toaster
|
||||||
|
sink
|
||||||
|
refrigerator
|
||||||
|
book
|
||||||
|
clock
|
||||||
|
vase
|
||||||
|
scissors
|
||||||
|
teddy bear
|
||||||
|
hair drier
|
||||||
|
toothbrush
|
139
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.mapping
Normal file
139
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.mapping
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<mapping>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_4/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="14" name="LeakyReLU_863" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_1/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="5" name="LeakyReLU_865" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_1/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="6" name="detector/yolo-v3-tiny/pool2_1/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_2/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="7" name="detector/yolo-v3-tiny/Conv_2/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_1/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="4" name="detector/yolo-v3-tiny/Conv_1/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_8/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="32" name="LeakyReLU_864" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_6/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="20" name="LeakyReLU_856" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_9/BiasAdd" out_port_id="0"/>
|
||||||
|
<IR id="33" name="detector/yolo-v3-tiny/Conv_9/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_4/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="15" name="detector/yolo-v3-tiny/pool2_4/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_2/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="9" name="detector/yolo-v3-tiny/pool2_2/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_6/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="19" name="detector/yolo-v3-tiny/Conv_6/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="1" name="detector/yolo-v3-tiny/Conv/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_3/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="10" name="detector/yolo-v3-tiny/Conv_3/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_7/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="22" name="LeakyReLU_861" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_3/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="11" name="LeakyReLU_859" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_8/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="31" name="detector/yolo-v3-tiny/Conv_8/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_11/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="28" name="LeakyReLU_860" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="2" name="LeakyReLU_" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_4/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="13" name="detector/yolo-v3-tiny/Conv_4/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_10/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="23" name="detector/yolo-v3-tiny/Conv_10/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/upsampled" out_port_id="0"/>
|
||||||
|
<IR id="25" name="detector/yolo-v3-tiny/ResizeNearestNeighbor" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/ResizeNearestNeighbor" out_port_id="0"/>
|
||||||
|
<IR id="25" name="detector/yolo-v3-tiny/ResizeNearestNeighbor" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_12/BiasAdd" out_port_id="0"/>
|
||||||
|
<IR id="29" name="detector/yolo-v3-tiny/Conv_12/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/truediv" out_port_id="0"/>
|
||||||
|
<IR id="0" name="inputs" out_port_id="0"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_5/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="17" name="LeakyReLU_862" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_10/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="24" name="LeakyReLU_857" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_2/LeakyRelu" out_port_id="0"/>
|
||||||
|
<IR id="8" name="LeakyReLU_858" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_11/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="27" name="detector/yolo-v3-tiny/Conv_11/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_5/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="16" name="detector/yolo-v3-tiny/Conv_5/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="3" name="detector/yolo-v3-tiny/pool2/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/Conv_7/BatchNorm/FusedBatchNorm" out_port_id="0"/>
|
||||||
|
<IR id="21" name="detector/yolo-v3-tiny/Conv_7/Conv2D" out_port_id="3"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_5/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="18" name="detector/yolo-v3-tiny/pool2_5/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/pool2_3/MaxPool" out_port_id="0"/>
|
||||||
|
<IR id="12" name="detector/yolo-v3-tiny/pool2_3/MaxPool" out_port_id="1"/>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<framework name="detector/yolo-v3-tiny/concat_3" out_port_id="0"/>
|
||||||
|
<IR id="26" name="detector/yolo-v3-tiny/concat_3" out_port_id="2"/>
|
||||||
|
</map>
|
||||||
|
</mapping>
|
783
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.xml
Normal file
783
irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.xml
Normal file
@ -0,0 +1,783 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<net batch="1" name="frozen_yolov3-tiny-mine" version="4">
|
||||||
|
<layers>
|
||||||
|
<layer id="0" name="inputs" precision="FP32" type="Input">
|
||||||
|
<output>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>3</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="1" name="detector/yolo-v3-tiny/Conv/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="16" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>3</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="0" size="1728"/>
|
||||||
|
<biases offset="1728" size="64"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="2" name="LeakyReLU_" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="3" name="detector/yolo-v3-tiny/pool2/MaxPool" precision="FP32" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
<dim>416</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="4" name="detector/yolo-v3-tiny/Conv_1/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="32" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>16</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="1792" size="18432"/>
|
||||||
|
<biases offset="20224" size="128"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="5" name="LeakyReLU_865" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="6" name="detector/yolo-v3-tiny/pool2_1/MaxPool" precision="FP32" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
<dim>208</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="7" name="detector/yolo-v3-tiny/Conv_2/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="64" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>32</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="20352" size="73728"/>
|
||||||
|
<biases offset="94080" size="256"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="8" name="LeakyReLU_858" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="9" name="detector/yolo-v3-tiny/pool2_2/MaxPool" precision="FP32" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
<dim>104</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="10" name="detector/yolo-v3-tiny/Conv_3/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="128" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>64</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="94336" size="294912"/>
|
||||||
|
<biases offset="389248" size="512"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="11" name="LeakyReLU_859" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="12" name="detector/yolo-v3-tiny/pool2_3/MaxPool" precision="FP32" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
<dim>52</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="13" name="detector/yolo-v3-tiny/Conv_4/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="256" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="389760" size="1179648"/>
|
||||||
|
<biases offset="1569408" size="1024"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="14" name="LeakyReLU_863" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="15" name="detector/yolo-v3-tiny/pool2_4/MaxPool" precision="FP32" type="Pooling">
|
||||||
|
<data auto_pad="valid" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="0,0" pool-method="max" strides="2,2"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="16" name="detector/yolo-v3-tiny/Conv_5/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="512" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="1570432" size="4718592"/>
|
||||||
|
<biases offset="6289024" size="2048"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="17" name="LeakyReLU_862" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="18" name="detector/yolo-v3-tiny/pool2_5/MaxPool" precision="FP32" type="Pooling">
|
||||||
|
<data auto_pad="same_upper" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="1,1" pool-method="max" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="19" name="detector/yolo-v3-tiny/Conv_6/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="1024" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="6291072" size="18874368"/>
|
||||||
|
<biases offset="25165440" size="4096"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="20" name="LeakyReLU_856" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="21" name="detector/yolo-v3-tiny/Conv_7/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="256" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>1024</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="25169536" size="1048576"/>
|
||||||
|
<biases offset="26218112" size="1024"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="22" name="LeakyReLU_861" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="23" name="detector/yolo-v3-tiny/Conv_10/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="128" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="26219136" size="131072"/>
|
||||||
|
<biases offset="26350208" size="512"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="24" name="LeakyReLU_857" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="25" name="detector/yolo-v3-tiny/ResizeNearestNeighbor" precision="FP32" type="Resample">
|
||||||
|
<data antialias="0" factor="2.0" type="caffe.ResampleParameter.NEAREST"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="26" name="detector/yolo-v3-tiny/concat_3" precision="FP32" type="Concat">
|
||||||
|
<data axis="1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>128</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="2">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>384</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="27" name="detector/yolo-v3-tiny/Conv_11/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="256" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>384</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="26350720" size="3538944"/>
|
||||||
|
<biases offset="29889664" size="1024"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="28" name="LeakyReLU_860" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="29" name="detector/yolo-v3-tiny/Conv_12/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="255" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="29890688" size="261120"/>
|
||||||
|
<biases offset="30151808" size="1020"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="30" name="detector/yolo-v3-tiny/Conv_12/BiasAdd/YoloRegion" precision="FP32" type="RegionYolo">
|
||||||
|
<data anchors="10,14,23,27,37,58,81,82,135,169,344,319" axis="1" classes="80" coords="4" do_softmax="0" end_axis="3" mask="0,1,2" num="6"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
<dim>26</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="31" name="detector/yolo-v3-tiny/Conv_8/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="3,3" output="512" pads_begin="1,1" pads_end="1,1" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>256</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="30152828" size="4718592"/>
|
||||||
|
<biases offset="34871420" size="2048"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="32" name="LeakyReLU_864" precision="FP32" type="ReLU">
|
||||||
|
<data negative_slope="0.10000000149011612"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
<layer id="33" name="detector/yolo-v3-tiny/Conv_9/Conv2D" precision="FP32" type="Convolution">
|
||||||
|
<data auto_pad="same_upper" dilations="1,1" group="1" kernel="1,1" output="255" pads_begin="0,0" pads_end="0,0" strides="1,1"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>512</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="3">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
<blobs>
|
||||||
|
<weights offset="34873468" size="522240"/>
|
||||||
|
<biases offset="35395708" size="1020"/>
|
||||||
|
</blobs>
|
||||||
|
</layer>
|
||||||
|
<layer id="34" name="detector/yolo-v3-tiny/Conv_9/BiasAdd/YoloRegion" precision="FP32" type="RegionYolo">
|
||||||
|
<data anchors="10,14,23,27,37,58,81,82,135,169,344,319" axis="1" classes="80" coords="4" do_softmax="0" end_axis="3" mask="0,1,2" num="6"/>
|
||||||
|
<input>
|
||||||
|
<port id="0">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<port id="1">
|
||||||
|
<dim>1</dim>
|
||||||
|
<dim>255</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
<dim>13</dim>
|
||||||
|
</port>
|
||||||
|
</output>
|
||||||
|
</layer>
|
||||||
|
</layers>
|
||||||
|
<edges>
|
||||||
|
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
|
||||||
|
<edge from-layer="1" from-port="3" to-layer="2" to-port="0"/>
|
||||||
|
<edge from-layer="2" from-port="1" to-layer="3" to-port="0"/>
|
||||||
|
<edge from-layer="3" from-port="1" to-layer="4" to-port="0"/>
|
||||||
|
<edge from-layer="4" from-port="3" to-layer="5" to-port="0"/>
|
||||||
|
<edge from-layer="5" from-port="1" to-layer="6" to-port="0"/>
|
||||||
|
<edge from-layer="6" from-port="1" to-layer="7" to-port="0"/>
|
||||||
|
<edge from-layer="7" from-port="3" to-layer="8" to-port="0"/>
|
||||||
|
<edge from-layer="8" from-port="1" to-layer="9" to-port="0"/>
|
||||||
|
<edge from-layer="9" from-port="1" to-layer="10" to-port="0"/>
|
||||||
|
<edge from-layer="10" from-port="3" to-layer="11" to-port="0"/>
|
||||||
|
<edge from-layer="11" from-port="1" to-layer="12" to-port="0"/>
|
||||||
|
<edge from-layer="12" from-port="1" to-layer="13" to-port="0"/>
|
||||||
|
<edge from-layer="13" from-port="3" to-layer="14" to-port="0"/>
|
||||||
|
<edge from-layer="14" from-port="1" to-layer="15" to-port="0"/>
|
||||||
|
<edge from-layer="15" from-port="1" to-layer="16" to-port="0"/>
|
||||||
|
<edge from-layer="16" from-port="3" to-layer="17" to-port="0"/>
|
||||||
|
<edge from-layer="17" from-port="1" to-layer="18" to-port="0"/>
|
||||||
|
<edge from-layer="18" from-port="1" to-layer="19" to-port="0"/>
|
||||||
|
<edge from-layer="19" from-port="3" to-layer="20" to-port="0"/>
|
||||||
|
<edge from-layer="20" from-port="1" to-layer="21" to-port="0"/>
|
||||||
|
<edge from-layer="21" from-port="3" to-layer="22" to-port="0"/>
|
||||||
|
<edge from-layer="22" from-port="1" to-layer="23" to-port="0"/>
|
||||||
|
<edge from-layer="23" from-port="3" to-layer="24" to-port="0"/>
|
||||||
|
<edge from-layer="24" from-port="1" to-layer="25" to-port="0"/>
|
||||||
|
<edge from-layer="25" from-port="1" to-layer="26" to-port="0"/>
|
||||||
|
<edge from-layer="14" from-port="1" to-layer="26" to-port="1"/>
|
||||||
|
<edge from-layer="26" from-port="2" to-layer="27" to-port="0"/>
|
||||||
|
<edge from-layer="27" from-port="3" to-layer="28" to-port="0"/>
|
||||||
|
<edge from-layer="28" from-port="1" to-layer="29" to-port="0"/>
|
||||||
|
<edge from-layer="29" from-port="3" to-layer="30" to-port="0"/>
|
||||||
|
<edge from-layer="22" from-port="1" to-layer="31" to-port="0"/>
|
||||||
|
<edge from-layer="31" from-port="3" to-layer="32" to-port="0"/>
|
||||||
|
<edge from-layer="32" from-port="1" to-layer="33" to-port="0"/>
|
||||||
|
<edge from-layer="33" from-port="3" to-layer="34" to-port="0"/>
|
||||||
|
</edges>
|
||||||
|
<meta_data>
|
||||||
|
<MO_version value="1.5.12.49d067a0"/>
|
||||||
|
<cli_parameters>
|
||||||
|
<data_type value="FP32"/>
|
||||||
|
<disable_fusing value="False"/>
|
||||||
|
<disable_gfusing value="False"/>
|
||||||
|
<disable_nhwc_to_nchw value="False"/>
|
||||||
|
<disable_resnet_optimization value="False"/>
|
||||||
|
<extensions value="DIR"/>
|
||||||
|
<framework value="tf"/>
|
||||||
|
<generate_deprecated_IR_V2 value="False"/>
|
||||||
|
<input_model value="DIR/frozen_yolov3-tiny-mine.pb"/>
|
||||||
|
<input_model_is_text value="False"/>
|
||||||
|
<input_shape value="[1,416,416,3]"/>
|
||||||
|
<log_level value="ERROR"/>
|
||||||
|
<mean_values value="()"/>
|
||||||
|
<move_to_preprocess value="False"/>
|
||||||
|
<offload_unsupported_operations_to_tf value="False"/>
|
||||||
|
<output_dir value="DIR"/>
|
||||||
|
<reverse_input_channels value="False"/>
|
||||||
|
<scale_values value="()"/>
|
||||||
|
<silent value="False"/>
|
||||||
|
<tensorflow_use_custom_operations_config value="DIR/yolo_v3_tiny_changed.json"/>
|
||||||
|
<version value="False"/>
|
||||||
|
<unset unset_cli_parameters="batch, finegrain_fusing, freeze_placeholder_with_value, input, input_checkpoint, input_meta_graph, model_name, output, saved_model_dir, saved_model_tags, scale, tensorboard_logdir, tensorflow_custom_layer_libraries, tensorflow_custom_operations_config_update, tensorflow_object_detection_api_pipeline_config, tensorflow_operation_patterns, tensorflow_subgraph_patterns"/>
|
||||||
|
</cli_parameters>
|
||||||
|
</meta_data>
|
||||||
|
</net>
|
9
launch/tiny_yolov3.launch
Normal file
9
launch/tiny_yolov3.launch
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<launch>
|
||||||
|
<node name="object_detection" pkg="openvino_object_detection" type="object_detection">
|
||||||
|
|
||||||
|
<param name="target" value="CPU"/>
|
||||||
|
<param name="model" value="$(find openvino_object_detection)/irmodels/tiny-YoloV3/FP32/frozen_yolov3-tiny-mine.xml"/>
|
||||||
|
<param name="width" value="648"/>
|
||||||
|
<param name="height" value="488"/>
|
||||||
|
</node>
|
||||||
|
</launch>
|
16
msg/Object.msg
Normal file
16
msg/Object.msg
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
string label
|
||||||
|
|
||||||
|
#confidence of result
|
||||||
|
float32 confidence
|
||||||
|
|
||||||
|
#normalized value of box center point coordinate x
|
||||||
|
float32 x
|
||||||
|
|
||||||
|
#normalized value of box center point coordinate y
|
||||||
|
float32 y
|
||||||
|
|
||||||
|
#normalized value of box height
|
||||||
|
float32 h
|
||||||
|
|
||||||
|
#normalized value of box width
|
||||||
|
float32 w
|
33
package.xml
Normal file
33
package.xml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<package format="2">
|
||||||
|
<name>openvino_object_detection</name>
|
||||||
|
<version>1.0.1</version>
|
||||||
|
<description>The openvino package for tiny yolov3 object detection</description>
|
||||||
|
|
||||||
|
<maintainer email="rishabh_kundu@rediffmail.com">Rishabh Kundu</maintainer>
|
||||||
|
|
||||||
|
<license>MIT</license>
|
||||||
|
|
||||||
|
<buildtool_depend>catkin</buildtool_depend>
|
||||||
|
<buildtool_depend>genmsg</buildtool_depend>
|
||||||
|
|
||||||
|
<build_depend>roscpp</build_depend>
|
||||||
|
<build_depend>OpenCV</build_depend>
|
||||||
|
<build_depend>message_generation</build_depend>
|
||||||
|
<build_depend>InferenceEngine</build_depend>
|
||||||
|
<build_depend>sensor_msgs</build_depend>
|
||||||
|
|
||||||
|
<build_export_depend>roscpp</build_export_depend>
|
||||||
|
<build_export_depend>OpenCV</build_export_depend>
|
||||||
|
<build_export_depend>InferenceEngine</build_export_depend>
|
||||||
|
<build_export_depend>sensor_msgs</build_export_depend>
|
||||||
|
<exec_depend>roscpp</exec_depend>
|
||||||
|
<exec_depend>OpenCV</exec_depend>
|
||||||
|
<exec_depend>InferenceEngine</exec_depend>
|
||||||
|
<exec_depend>sensor_msgs</exec_depend>
|
||||||
|
<exec_depend>std_msgs</exec_depend>
|
||||||
|
|
||||||
|
<build_export_depend>message_generation</build_export_depend>
|
||||||
|
<exec_depend>message_runtime</exec_depend>
|
||||||
|
|
||||||
|
</package>
|
250
src/main.cpp
Normal file
250
src/main.cpp
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
// Copyright (C) 2018 Intel Corporation
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief The entry point for the Inference Engine object_detection demo
|
||||||
|
* application \file object_detection_demo_yolov3_async/main.cpp \example
|
||||||
|
* object_detection_demo_yolov3_async/main.cpp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "object_detection_demo_yolov3_async.hpp"
|
||||||
|
|
||||||
|
InferRequest::Ptr async_infer_request_curr;
|
||||||
|
std::string inputName;
|
||||||
|
CNNNetReader netReader;
|
||||||
|
OutputsDataMap outputInf;
|
||||||
|
bool auto_resize;
|
||||||
|
InputsDataMap inputInf;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
std::vector<std::string> labels;
|
||||||
|
typedef std::chrono::duration<double, std::ratio<1, 1000>> ms;
|
||||||
|
|
||||||
|
bool getObjects(openvino_object_detection::Objects::Request &req,
|
||||||
|
openvino_object_detection::Objects::Response &res) {
|
||||||
|
auto t = std::chrono::high_resolution_clock::now();
|
||||||
|
cv::Mat frame = cv_bridge::toCvCopy(req.img, "bgr8")->image;
|
||||||
|
|
||||||
|
FrameToBlob(frame, async_infer_request_curr, inputName, auto_resize);
|
||||||
|
|
||||||
|
async_infer_request_curr->StartAsync();
|
||||||
|
|
||||||
|
if (OK ==
|
||||||
|
async_infer_request_curr->Wait(IInferRequest::WaitMode::RESULT_READY)) {
|
||||||
|
|
||||||
|
// ---------------------------Processing output
|
||||||
|
// blobs-------------------------------------------------- Processing
|
||||||
|
// results of the CURRENT request
|
||||||
|
unsigned long resized_im_h = inputInf.begin()->second.get()->getDims()[0];
|
||||||
|
unsigned long resized_im_w = inputInf.begin()->second.get()->getDims()[1];
|
||||||
|
std::vector<DetectionObject> objects;
|
||||||
|
// Parsing outputs
|
||||||
|
for (auto &output : outputInf) {
|
||||||
|
auto output_name = output.first;
|
||||||
|
// slog::info << "output_name = " + output_name << slog::endl;
|
||||||
|
|
||||||
|
CNNLayerPtr layer =
|
||||||
|
netReader.getNetwork().getLayerByName(output_name.c_str());
|
||||||
|
Blob::Ptr blob = async_infer_request_curr->GetBlob(output_name);
|
||||||
|
ParseYOLOV3Output(layer, blob, resized_im_h, resized_im_w, height, width,
|
||||||
|
req.t, objects);
|
||||||
|
}
|
||||||
|
// Filtering overlapping boxes
|
||||||
|
std::sort(objects.begin(), objects.end());
|
||||||
|
for (int i = 0; i < objects.size(); ++i) {
|
||||||
|
if (objects[i].confidence == 0)
|
||||||
|
continue;
|
||||||
|
for (int j = i + 1; j < objects.size(); ++j) {
|
||||||
|
if (IntersectionOverUnion(objects[i], objects[j]) >= req.iou_t) {
|
||||||
|
objects[j].confidence = 0;
|
||||||
|
}
|
||||||
|
// if (objects[j].confidence == 1) {
|
||||||
|
// objects[j].confidence = 0;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res.len = 0;
|
||||||
|
for (auto &object : objects) {
|
||||||
|
if (object.confidence < req.t)
|
||||||
|
continue;
|
||||||
|
openvino_object_detection::Object tmp;
|
||||||
|
tmp.confidence = object.confidence;
|
||||||
|
tmp.label = labels[object.class_id];
|
||||||
|
tmp.x = (object.xmin + object.xmax) / 2.0;
|
||||||
|
tmp.y = (object.ymin + object.ymax) / 2.0;
|
||||||
|
tmp.w = object.xmax - object.xmin;
|
||||||
|
tmp.h = object.ymax - object.ymin;
|
||||||
|
res.objects.push_back(tmp);
|
||||||
|
res.len++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res.ms = std::chrono::duration_cast<ms>(
|
||||||
|
std::chrono::high_resolution_clock::now() - t)
|
||||||
|
.count();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
ros::init(argc, argv, "object_detection");
|
||||||
|
ros::NodeHandle n;
|
||||||
|
ros::ServiceServer conf_service =
|
||||||
|
n.advertiseService("tiny_yolov3", getObjects);
|
||||||
|
std::string dev;
|
||||||
|
std::string def = "CPU";
|
||||||
|
n.param("/object_detection/target", dev, def);
|
||||||
|
n.param("/object_detection/width", width, 648);
|
||||||
|
n.param("/object_detection/height", height, 488);
|
||||||
|
auto_resize = n.hasParam("/object_detection/auto_resize");
|
||||||
|
std::cout << dev.c_str() << std::endl;
|
||||||
|
try {
|
||||||
|
/** This demo covers a certain topology and cannot be generalized for any
|
||||||
|
* object detection **/
|
||||||
|
std::cout << "InferenceEngine: " << GetInferenceEngineVersion()
|
||||||
|
<< std::endl;
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// --------------------------- 1. Load Plugin for inference engine
|
||||||
|
// -------------------------------------
|
||||||
|
slog::info << "Loading plugin" << slog::endl;
|
||||||
|
InferencePlugin plugin =
|
||||||
|
PluginDispatcher({"../lib", ""}).getPluginByDevice(dev.c_str());
|
||||||
|
printPluginVersion(plugin, std::cout);
|
||||||
|
|
||||||
|
/**Loading extensions to the plugin **/
|
||||||
|
|
||||||
|
/** Loading default extensions **/
|
||||||
|
if (dev == "CPU") {
|
||||||
|
/**
|
||||||
|
* cpu_extensions library is compiled from the "extension" folder
|
||||||
|
*containing custom CPU layer implementations.
|
||||||
|
**/
|
||||||
|
plugin.AddExtension(std::make_shared<Extensions::Cpu::CpuExtensions>());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n.hasParam("/object_detection/l")) {
|
||||||
|
std::string l_flags;
|
||||||
|
n.getParam("/object_detection/l", l_flags);
|
||||||
|
// CPU extensions are loaded as a shared library and passed as a pointer
|
||||||
|
// to the base extension
|
||||||
|
IExtensionPtr extension_ptr =
|
||||||
|
make_so_pointer<IExtension>(l_flags.c_str());
|
||||||
|
plugin.AddExtension(extension_ptr);
|
||||||
|
}
|
||||||
|
if (n.hasParam("/object_detection/c")) {
|
||||||
|
std::string c_flags;
|
||||||
|
n.getParam("/object_detection/c", c_flags);
|
||||||
|
// GPU extensions are loaded from an .xml description and OpenCL kernel
|
||||||
|
// files
|
||||||
|
plugin.SetConfig(
|
||||||
|
{{PluginConfigParams::KEY_CONFIG_FILE, c_flags.c_str()}});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Per-layer metrics **/
|
||||||
|
if (n.hasParam("/object_detection/pc")) {
|
||||||
|
plugin.SetConfig(
|
||||||
|
{{PluginConfigParams::KEY_PERF_COUNT, PluginConfigParams::YES}});
|
||||||
|
}
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// --------------- 2. Reading the IR generated by the Model Optimizer
|
||||||
|
// (.xml and .bin files) ------------
|
||||||
|
slog::info << "Loading network files" << slog::endl;
|
||||||
|
/** Reading network model **/
|
||||||
|
std::string model;
|
||||||
|
if (!n.getParam("/object_detection/model", model)) {
|
||||||
|
std::cout << "Model not found";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
netReader.ReadNetwork(model);
|
||||||
|
/** Setting batch size to 1 **/
|
||||||
|
slog::info << "Batch size is forced to 1." << slog::endl;
|
||||||
|
netReader.getNetwork().setBatchSize(1);
|
||||||
|
/** Extracting the model name and loading its weights **/
|
||||||
|
std::string binFileName = fileNameNoExt(model) + ".bin";
|
||||||
|
netReader.ReadWeights(binFileName);
|
||||||
|
/** Reading labels (if specified) **/
|
||||||
|
std::string labelFileName = fileNameNoExt(model) + ".labels";
|
||||||
|
std::vector<std::string> label_list;
|
||||||
|
std::ifstream inputFile(labelFileName);
|
||||||
|
std::copy(std::istream_iterator<std::string>(inputFile),
|
||||||
|
std::istream_iterator<std::string>(),
|
||||||
|
std::back_inserter(label_list));
|
||||||
|
labels = label_list;
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/** YOLOV3-based network should have one input and three output **/
|
||||||
|
// --------------------------- 3. Configuring input and output
|
||||||
|
// -----------------------------------------
|
||||||
|
// --------------------------------- Preparing input blobs
|
||||||
|
// ---------------------------------------------
|
||||||
|
slog::info << "Checking that the inputs are as the demo expects"
|
||||||
|
<< slog::endl;
|
||||||
|
InputsDataMap inputInfo(netReader.getNetwork().getInputsInfo());
|
||||||
|
inputInf = inputInfo;
|
||||||
|
if (inputInfo.size() != 1) {
|
||||||
|
throw std::logic_error(
|
||||||
|
"This demo accepts networks that have only one input");
|
||||||
|
}
|
||||||
|
InputInfo::Ptr &input = inputInfo.begin()->second;
|
||||||
|
inputName = inputInfo.begin()->first;
|
||||||
|
input->setPrecision(Precision::U8);
|
||||||
|
if (n.hasParam("auto_resize")) {
|
||||||
|
input->getPreProcess().setResizeAlgorithm(
|
||||||
|
ResizeAlgorithm::RESIZE_BILINEAR);
|
||||||
|
input->getInputData()->setLayout(Layout::NHWC);
|
||||||
|
} else {
|
||||||
|
input->getInputData()->setLayout(Layout::NCHW);
|
||||||
|
}
|
||||||
|
// --------------------------------- Preparing output blobs
|
||||||
|
// -------------------------------------------
|
||||||
|
slog::info << "Checking that the outputs are as the demo expects"
|
||||||
|
<< slog::endl;
|
||||||
|
OutputsDataMap outputInfo(netReader.getNetwork().getOutputsInfo());
|
||||||
|
outputInf = outputInfo;
|
||||||
|
// if (outputInfo.size() != 3) {
|
||||||
|
// throw std::logic_error("This demo only accepts networks with three
|
||||||
|
// layers");
|
||||||
|
//}
|
||||||
|
for (auto &output : outputInfo) {
|
||||||
|
output.second->setPrecision(Precision::FP32);
|
||||||
|
output.second->setLayout(Layout::NCHW);
|
||||||
|
}
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// --------------------------- 4. Loading model to the plugin
|
||||||
|
// ------------------------------------------
|
||||||
|
slog::info << "Loading model to the plugin" << slog::endl;
|
||||||
|
ExecutableNetwork network = plugin.LoadNetwork(netReader.getNetwork(), {});
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// --------------------------- 5. Creating infer request
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
async_infer_request_curr = network.CreateInferRequestPtr();
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// --------------------------- 6. Doing inference
|
||||||
|
// ------------------------------------------------------
|
||||||
|
slog::info << "Start inference " << slog::endl;
|
||||||
|
|
||||||
|
ros::spin();
|
||||||
|
|
||||||
|
/** Showing performace results **/
|
||||||
|
if (n.hasParam("/object_detection/pc")) {
|
||||||
|
printPerformanceCounts(*async_infer_request_curr, std::cout);
|
||||||
|
}
|
||||||
|
} catch (const std::exception &error) {
|
||||||
|
std::cerr << "[ ERROR ] " << error.what() << std::endl;
|
||||||
|
return 1;
|
||||||
|
} catch (...) {
|
||||||
|
std::cerr << "[ ERROR ] Unknown/internal exception happened." << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
slog::info << "Execution successful" << slog::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
220
src/object_detection_demo_yolov3_async.hpp
Normal file
220
src/object_detection_demo_yolov3_async.hpp
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
// Copyright (C) 2018 Intel Corporation
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
//
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <chrono>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <ext_list.hpp>
|
||||||
|
#include <fstream>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <iterator>
|
||||||
|
#include <memory>
|
||||||
|
#include <random>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
// ROS packages
|
||||||
|
#include <cv_bridge/cv_bridge.h>
|
||||||
|
#include <openvino_object_detection/Object.h>
|
||||||
|
#include <openvino_object_detection/Objects.h>
|
||||||
|
#include <ros/ros.h>
|
||||||
|
#include <sensor_msgs/Image.h>
|
||||||
|
|
||||||
|
#include <inference_engine.hpp>
|
||||||
|
|
||||||
|
#include <samples/ocv_common.hpp>
|
||||||
|
#include <samples/slog.hpp>
|
||||||
|
|
||||||
|
using namespace InferenceEngine;
|
||||||
|
|
||||||
|
#define yolo_scale_13 13
|
||||||
|
#define yolo_scale_26 26
|
||||||
|
#define yolo_scale_52 52
|
||||||
|
|
||||||
|
void FrameToBlob(const cv::Mat &frame, InferRequest::Ptr &inferRequest,
|
||||||
|
const std::string &inputName, bool auto_resize) {
|
||||||
|
if (auto_resize) {
|
||||||
|
/* Just set input blob containing read image. Resize and layout conversion
|
||||||
|
* will be done automatically */
|
||||||
|
inferRequest->SetBlob(inputName, wrapMat2Blob(frame));
|
||||||
|
} else {
|
||||||
|
/* Resize and copy data from the image to the input blob */
|
||||||
|
Blob::Ptr frameBlob = inferRequest->GetBlob(inputName);
|
||||||
|
matU8ToBlob<uint8_t>(frame, frameBlob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int EntryIndex(int side, int lcoords, int lclasses, int location,
|
||||||
|
int entry) {
|
||||||
|
int n = location / (side * side);
|
||||||
|
int loc = location % (side * side);
|
||||||
|
return n * side * side * (lcoords + lclasses + 1) + entry * side * side + loc;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct DetectionObject {
|
||||||
|
int xmin, ymin, xmax, ymax, class_id;
|
||||||
|
float confidence;
|
||||||
|
|
||||||
|
DetectionObject(double x, double y, double h, double w, int class_id,
|
||||||
|
float confidence, float h_scale, float w_scale) {
|
||||||
|
this->xmin = static_cast<int>((x - w / 2) * w_scale);
|
||||||
|
this->ymin = static_cast<int>((y - h / 2) * h_scale);
|
||||||
|
this->xmax = static_cast<int>(this->xmin + w * w_scale);
|
||||||
|
this->ymax = static_cast<int>(this->ymin + h * h_scale);
|
||||||
|
this->class_id = class_id;
|
||||||
|
this->confidence = confidence;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator<(const DetectionObject &s2) const {
|
||||||
|
return this->confidence < s2.confidence;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
double IntersectionOverUnion(const DetectionObject &box_1,
|
||||||
|
const DetectionObject &box_2) {
|
||||||
|
double width_of_overlap_area =
|
||||||
|
fmin(box_1.xmax, box_2.xmax) - fmax(box_1.xmin, box_2.xmin);
|
||||||
|
double height_of_overlap_area =
|
||||||
|
fmin(box_1.ymax, box_2.ymax) - fmax(box_1.ymin, box_2.ymin);
|
||||||
|
double area_of_overlap;
|
||||||
|
if (width_of_overlap_area < 0 || height_of_overlap_area < 0)
|
||||||
|
area_of_overlap = 0;
|
||||||
|
else
|
||||||
|
area_of_overlap = width_of_overlap_area * height_of_overlap_area;
|
||||||
|
double box_1_area = (box_1.ymax - box_1.ymin) * (box_1.xmax - box_1.xmin);
|
||||||
|
double box_2_area = (box_2.ymax - box_2.ymin) * (box_2.xmax - box_2.xmin);
|
||||||
|
double area_of_union = box_1_area + box_2_area - area_of_overlap;
|
||||||
|
return area_of_overlap / area_of_union;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ParseYOLOV3Output(const CNNLayerPtr &layer, const Blob::Ptr &blob,
|
||||||
|
const unsigned long resized_im_h,
|
||||||
|
const unsigned long resized_im_w,
|
||||||
|
const unsigned long original_im_h,
|
||||||
|
const unsigned long original_im_w,
|
||||||
|
const double threshold,
|
||||||
|
std::vector<DetectionObject> &objects) {
|
||||||
|
// --------------------------- Validating output parameters
|
||||||
|
// -------------------------------------
|
||||||
|
if (layer->type != "RegionYolo")
|
||||||
|
throw std::runtime_error("Invalid output type: " + layer->type +
|
||||||
|
". RegionYolo expected");
|
||||||
|
const int out_blob_h = static_cast<int>(blob->getTensorDesc().getDims()[2]);
|
||||||
|
const int out_blob_w = static_cast<int>(blob->getTensorDesc().getDims()[3]);
|
||||||
|
if (out_blob_h != out_blob_w)
|
||||||
|
throw std::runtime_error("Invalid size of output " + layer->name +
|
||||||
|
" It should be in NCHW layout and H should be "
|
||||||
|
"equal to W. Current H = " +
|
||||||
|
std::to_string(out_blob_h) +
|
||||||
|
", current W = " + std::to_string(out_blob_h));
|
||||||
|
// --------------------------- Extracting layer parameters
|
||||||
|
// -------------------------------------
|
||||||
|
auto num = layer->GetParamAsInt("num");
|
||||||
|
try {
|
||||||
|
num = layer->GetParamAsInts("mask").size();
|
||||||
|
} catch (...) {
|
||||||
|
}
|
||||||
|
auto coords = layer->GetParamAsInt("coords");
|
||||||
|
auto classes = layer->GetParamAsInt("classes");
|
||||||
|
std::vector<float> anchors = {10.0, 13.0, 16.0, 30.0, 33.0, 23.0,
|
||||||
|
30.0, 61.0, 62.0, 45.0, 59.0, 119.0,
|
||||||
|
116.0, 90.0, 156.0, 198.0, 373.0, 326.0};
|
||||||
|
try {
|
||||||
|
anchors = layer->GetParamAsFloats("anchors");
|
||||||
|
} catch (...) {
|
||||||
|
}
|
||||||
|
auto side = out_blob_h;
|
||||||
|
int anchor_offset = 0;
|
||||||
|
|
||||||
|
// throw std::runtime_error("anchors.size() ==" +
|
||||||
|
// std::to_string(anchors.size()));
|
||||||
|
|
||||||
|
if (anchors.size() == 18) { // YoloV3
|
||||||
|
switch (side) {
|
||||||
|
case yolo_scale_13:
|
||||||
|
anchor_offset = 2 * 6;
|
||||||
|
break;
|
||||||
|
case yolo_scale_26:
|
||||||
|
anchor_offset = 2 * 3;
|
||||||
|
break;
|
||||||
|
case yolo_scale_52:
|
||||||
|
anchor_offset = 2 * 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw std::runtime_error("Invalid output size");
|
||||||
|
}
|
||||||
|
} else if (anchors.size() == 12) { // tiny-YoloV3
|
||||||
|
switch (side) {
|
||||||
|
case yolo_scale_13:
|
||||||
|
anchor_offset = 2 * 3;
|
||||||
|
break;
|
||||||
|
case yolo_scale_26:
|
||||||
|
anchor_offset = 2 * 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw std::runtime_error("Invalid output size");
|
||||||
|
}
|
||||||
|
} else { // ???
|
||||||
|
switch (side) {
|
||||||
|
case yolo_scale_13:
|
||||||
|
anchor_offset = 2 * 6;
|
||||||
|
break;
|
||||||
|
case yolo_scale_26:
|
||||||
|
anchor_offset = 2 * 3;
|
||||||
|
break;
|
||||||
|
case yolo_scale_52:
|
||||||
|
anchor_offset = 2 * 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw std::runtime_error("Invalid output size");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
auto side_square = side * side;
|
||||||
|
const float *output_blob =
|
||||||
|
blob->buffer().as<PrecisionTrait<Precision::FP32>::value_type *>();
|
||||||
|
// --------------------------- Parsing YOLO Region output
|
||||||
|
// -------------------------------------
|
||||||
|
for (int i = 0; i < side_square; ++i) {
|
||||||
|
int row = i / side;
|
||||||
|
int col = i % side;
|
||||||
|
for (int n = 0; n < num; ++n) {
|
||||||
|
int obj_index =
|
||||||
|
EntryIndex(side, coords, classes, n * side * side + i, coords);
|
||||||
|
int box_index = EntryIndex(side, coords, classes, n * side * side + i, 0);
|
||||||
|
float scale = output_blob[obj_index];
|
||||||
|
if (scale < threshold)
|
||||||
|
continue;
|
||||||
|
double x = (col + output_blob[box_index + 0 * side_square]) / side *
|
||||||
|
resized_im_w;
|
||||||
|
double y = (row + output_blob[box_index + 1 * side_square]) / side *
|
||||||
|
resized_im_h;
|
||||||
|
double height = std::exp(output_blob[box_index + 3 * side_square]) *
|
||||||
|
anchors[anchor_offset + 2 * n + 1];
|
||||||
|
double width = std::exp(output_blob[box_index + 2 * side_square]) *
|
||||||
|
anchors[anchor_offset + 2 * n];
|
||||||
|
for (int j = 0; j < classes; ++j) {
|
||||||
|
int class_index = EntryIndex(side, coords, classes, n * side_square + i,
|
||||||
|
coords + 1 + j);
|
||||||
|
float prob = scale * output_blob[class_index];
|
||||||
|
if (prob < threshold)
|
||||||
|
continue;
|
||||||
|
DetectionObject obj(x, y, height, width, j, prob,
|
||||||
|
static_cast<float>(original_im_h) /
|
||||||
|
static_cast<float>(resized_im_h),
|
||||||
|
static_cast<float>(original_im_w) /
|
||||||
|
static_cast<float>(resized_im_w));
|
||||||
|
objects.push_back(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
47
src/test.cpp
Normal file
47
src/test.cpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#include <cv_bridge/cv_bridge.h>
|
||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
#include <openvino_object_detection/Object.h>
|
||||||
|
#include <openvino_object_detection/Objects.h>
|
||||||
|
#include <ros/ros.h>
|
||||||
|
#include <sensor_msgs/Image.h>
|
||||||
|
using namespace cv;
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
ros::init(argc, argv, "object_detection_test");
|
||||||
|
// Handle creation
|
||||||
|
ros::NodeHandle n;
|
||||||
|
Mat frame;
|
||||||
|
VideoCapture cap("/home/yikes/vid/2.avi");
|
||||||
|
ros::ServiceClient client =
|
||||||
|
n.serviceClient<openvino_object_detection::Objects>("/tiny_yolov3");
|
||||||
|
openvino_object_detection::Objects t;
|
||||||
|
sensor_msgs::Image output_image_msg;
|
||||||
|
cv::namedWindow("view");
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
cap >> frame;
|
||||||
|
t.request.t = 0.5;
|
||||||
|
t.request.iou_t = 0.4;
|
||||||
|
t.request.img =
|
||||||
|
*cv_bridge::CvImage(std_msgs::Header(), "bgr8", frame).toImageMsg();
|
||||||
|
if (client.call(t)) {
|
||||||
|
std::cout << t.response.ms << "\n";
|
||||||
|
|
||||||
|
for (openvino_object_detection::Object obj : t.response.objects) {
|
||||||
|
std::ostringstream conf;
|
||||||
|
conf << ":" << std::fixed << std::setprecision(3) << obj.confidence;
|
||||||
|
cv::putText(frame, (std::string)obj.label + conf.str(),
|
||||||
|
cv::Point2f(obj.x - obj.w / 2, obj.y - obj.h / 2 - 5),
|
||||||
|
cv::FONT_HERSHEY_COMPLEX_SMALL, 1, cv::Scalar(0, 0, 255), 1,
|
||||||
|
cv::LINE_AA);
|
||||||
|
cv::rectangle(frame, cv::Point2f(obj.x - obj.w / 2, obj.y - obj.h / 2),
|
||||||
|
cv::Point2f(obj.x + obj.w / 2, obj.y + obj.h / 2),
|
||||||
|
cv::Scalar(0, 0, 255), 1, cv::LINE_AA);
|
||||||
|
}
|
||||||
|
|
||||||
|
cv::imshow("view", frame);
|
||||||
|
cv::waitKey(300);
|
||||||
|
}
|
||||||
|
ros::spinOnce();
|
||||||
|
}
|
||||||
|
}
|
7
srv/Objects.srv
Normal file
7
srv/Objects.srv
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
sensor_msgs/Image img
|
||||||
|
float32 t
|
||||||
|
float32 iou_t
|
||||||
|
---
|
||||||
|
int16 len
|
||||||
|
Object[] objects
|
||||||
|
int32 ms
|
Loading…
x
Reference in New Issue
Block a user