Fix index error and yolo test passed 39/284039/1
authorKwanghoon Son <k.son@samsung.com>
Wed, 9 Nov 2022 05:03:28 +0000 (00:03 -0500)
committerKwanghoon Son <k.son@samsung.com>
Wed, 9 Nov 2022 05:03:28 +0000 (00:03 -0500)
Change-Id: I190e1b6d379fdfa5871d55562571213252b94779
Signed-off-by: Kwanghoon Son <k.son@samsung.com>
mv_machine_learning/inference/src/ObjectDecoder.cpp

index cf5f283..e14fea9 100644 (file)
@@ -20,7 +20,6 @@
 #include <unistd.h>
 #include <fstream>
 #include <string>
-#include <iostream>
 using namespace std;
 
 namespace mediavision
@@ -205,10 +204,9 @@ void ObjectDecoder::decodeYOLO(BoxesList &boxesList)
                strideIdx++;
 
                int startAnchorIdx = 0;
-               int endAnchorIdx =
-                               (static_cast<int>(mScaleW) / stride * static_cast<int>(mScaleH) / stride) * yoloAnchor.offsetAnchors;
+               int endAnchorIdx = (static_cast<int>(mScaleW) / stride * static_cast<int>(mScaleH) / stride);
 
-               for (int anchorIdx = startAnchorIdx; anchorIdx < endAnchorIdx; anchorIdx += yoloAnchor.offsetAnchors) {
+               for (int anchorIdx = startAnchorIdx; anchorIdx < endAnchorIdx; anchorIdx++) {
                        // for each grid cell
                        for (int offset = 0; offset < yoloAnchor.offsetAnchors; ++offset) {
                                //for each BOX
@@ -216,7 +214,7 @@ void ObjectDecoder::decodeYOLO(BoxesList &boxesList)
                                float boxScore =
                                                decodeYOLOScore(anchorIdx * mBoxOffset + (mNumberOfOjects + 5) * offset + 4, strideIdx);
 
-                               auto anchorBox = decodeInfo.vAnchorBoxes[strideIdx][anchorIdx + offset];
+                               auto anchorBox = decodeInfo.vAnchorBoxes[strideIdx][anchorIdx * yoloAnchor.offsetAnchors + offset];
 
                                for (int objIdx = 0; objIdx < mNumberOfOjects; ++objIdx) { //each box to every object
                                        float objScore = decodeYOLOScore(
@@ -224,9 +222,6 @@ void ObjectDecoder::decodeYOLO(BoxesList &boxesList)
 
                                        if (boxScore * objScore < mMeta.GetScoreThreshold())
                                                continue;
-                                       cout << "strideIdx" << strideIdx << ", anchorIdx" << anchorIdx << ", boxScore : " << boxScore
-                                                << ", objScore : " << objScore << ", objIdx" << objIdx << endl;
-
                                        Box box = decodeYOLOBox(anchorIdx, objScore, objIdx, (mNumberOfOjects + 5) * offset, strideIdx);
 
                                        if (!decodeInfo.vAnchorBoxes.empty()) {