IVGCVSW-2686 Add Serializer and Deserializer for DetectionPostProcess

Change-Id: Ife48db5fdb005ebca0a6f21862b0ce971ccf58b7
Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 3774c25..0340f56 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -289,6 +289,35 @@
     CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_DepthwiseConvolution2dLayer);
 }
 
+void SerializerVisitor::VisitDetectionPostProcessLayer(const armnn::IConnectableLayer* layer,
+                                                       const armnn::DetectionPostProcessDescriptor& descriptor,
+                                                       const armnn::ConstTensor& anchors,
+                                                       const char* name)
+{
+    auto fbBaseLayer  = CreateLayerBase(layer, serializer::LayerType::LayerType_DetectionPostProcess);
+    auto fbDescriptor = CreateDetectionPostProcessDescriptor(m_flatBufferBuilder,
+                                                             descriptor.m_MaxDetections,
+                                                             descriptor.m_MaxClassesPerDetection,
+                                                             descriptor.m_DetectionsPerClass,
+                                                             descriptor.m_NmsScoreThreshold,
+                                                             descriptor.m_NmsIouThreshold,
+                                                             descriptor.m_NumClasses,
+                                                             descriptor.m_UseRegularNms,
+                                                             descriptor.m_ScaleX,
+                                                             descriptor.m_ScaleY,
+                                                             descriptor.m_ScaleW,
+                                                             descriptor.m_ScaleH);
+
+    flatbuffers::Offset<serializer::ConstTensor> fbAnchorsConstTensorInfo = CreateConstTensorInfo(anchors);
+
+    auto flatBufferLayer = CreateDetectionPostProcessLayer(m_flatBufferBuilder,
+                                                           fbBaseLayer,
+                                                           fbDescriptor,
+                                                           fbAnchorsConstTensorInfo);
+
+    CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_DetectionPostProcessLayer);
+}
+
 void SerializerVisitor::VisitDivisionLayer(const armnn::IConnectableLayer* layer, const char* name)
 {
     auto fbDivisionBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Division);