update the version number
[ti-machine-learning/ti-machine-learning.git] / src / app / cnn / scene / appCNNSceneLabelMatrix.c
1 /******************************************************************************/
2 /*!
3  * \file appCNNSceneLabelMatrix.c
4  */
5 /* Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  *    Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  *
14  *    Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the
17  *    distribution.
18  *
19  *    Neither the name of Texas Instruments Incorporated nor the names of
20  *    its contributors may be used to endorse or promote products derived
21  *    from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  *
35  ******************************************************************************/
38 /*******************************************************************************
39  *
40  * INCLUDES
41  *
42  ******************************************************************************/
44 #include "appCNNScene.h"
45 #ifdef TIML_ALT
46 #include "../../alt/timlAlt.h"
47 #include "../../altApp/sl/appSLAlt.h"
48 #endif
51 /******************************************************************************/
52 /*!
53  * \ingroup    appCNNScene
54  * \brief      Fill the label matrix
55  * \param[in]  map         Feature map output of a CNN
56  * \param[in]  row         Image row
57  * \param[in]  col         Image col
58  * \param[in]  channel     Image channel
59  * \param[in]  m           Row Index
60  * \param[in]  k           Col Index
61  * \param[out] labelMatrix Label matrix
62  * \param[in]  numRow      Num of rows
63  * \param[in]  numCol      Num of cols
64  * \return     Error code
65  */
66 /******************************************************************************/
68 int appCNNSceneLabelMatrix(float *map, int row, int col, int channel, int m, int k, int *labelMatrix, int numRow, int numCol)
69 {
70 #ifdef TIML_CPU
71    int   i;
72    int   j;
73    int   p;
74    float max;
75    int resolutionLossRow;
76    int resolutionLossCol;
77    int err;
79    err = 0;
80    resolutionLossRow = numRow/row;
81    resolutionLossCol = numCol/col;
83    for (i = 0; i < row; i++) {
84       for (j = 0; j < col; j++) {
85          max = -FLT_MAX;
86          for (p = 0; p < channel; p++) {
87             if (map[j + i*col + p*row*col] >= max) {
88                labelMatrix[k + resolutionLossCol/2 + j*resolutionLossCol + (m + resolutionLossRow/2 + i*resolutionLossRow)*numCol] = p;
89                max = map[j + i*col + p*row*col];
90             }
91          }
92       }
93    }
94    return err;
96 #elif defined TIML_ALT
97    return appSLLabelMatrixAlt(map, row, col, channel, m, k, labelMatrix, numRow, numCol);
98 #endif
99 }