MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / add_yolo_node

Method add_yolo_node

src/graph/GraphBuilder.cpp:839–884  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

837}
838
839NodeID GraphBuilder::add_yolo_node(Graph &g, NodeParams params, NodeIdxPair input, ActivationLayerInfo act_info)
840{
841 check_nodeidx_pair(input, g);
842
843 // Get input tensor descriptor
844 const TensorDescriptor input_tensor_desc = get_tensor_descriptor(g, g.node(input.node_id)->outputs()[0]);
845 const bool is_nhwc = input_tensor_desc.layout == DataLayout::NHWC;
846
847 // Box format: [Objectness:1][Box:4][Classes:N]
848
849 // Activate objectness and front part of the box
850 const Coordinates box_start(0, 0, 0);
851 const Coordinates box_end = is_nhwc ? Coordinates(3, -1, -1) : Coordinates(-1, -1, 3);
852 NodeID box = g.add_node<SliceLayerNode>(box_start, box_end);
853 NodeID act_box = g.add_node<ActivationLayerNode>(act_info);
854 set_node_params(g, box, params);
855 set_node_params(g, act_box, params);
856 g.add_connection(input.node_id, input.index, box, 0);
857 g.add_connection(box, 0, act_box, 0);
858
859 // Immutable part
860 const Coordinates imm_start = is_nhwc ? Coordinates(3, 0, 0) : Coordinates(0, 0, 3);
861 const Coordinates imm_end = is_nhwc ? Coordinates(5, -1, -1) : Coordinates(-1, -1, 5);
862 NodeID imm = g.add_node<SliceLayerNode>(imm_start, imm_end);
863 set_node_params(g, imm, params);
864 g.add_connection(input.node_id, input.index, imm, 0);
865
866 // Activation classes and end part of box
867 const Coordinates cls_start = is_nhwc ? Coordinates(5, 0, 0) : Coordinates(0, 0, 5);
868 const Coordinates cls_end = Coordinates(-1, -1, -1);
869 NodeID cls = g.add_node<SliceLayerNode>(cls_start, cls_end);
870 NodeID cls_act = g.add_node<ActivationLayerNode>(act_info);
871 set_node_params(g, cls, params);
872 set_node_params(g, cls_act, params);
873 g.add_connection(input.node_id, input.index, cls, 0);
874 g.add_connection(cls, 0, cls_act, 0);
875
876 NodeID concat =
877 g.add_node<ConcatenateLayerNode>(3, descriptors::ConcatLayerDescriptor(DataLayoutDimension::CHANNEL));
878 set_node_params(g, concat, params);
879 g.add_connection(act_box, 0, concat, 0);
880 g.add_connection(imm, 0, concat, 1);
881 g.add_connection(cls_act, 0, concat, 2);
882
883 return concat;
884}
885} // namespace graph
886} // namespace arm_compute

Callers

nothing calls this directly

Calls 7

check_nodeidx_pairFunction · 0.85
get_tensor_descriptorFunction · 0.85
set_node_paramsFunction · 0.85
nodeMethod · 0.80
add_connectionMethod · 0.80
CoordinatesClass · 0.50

Tested by

no test coverage detected