| 2115 | |
| 2116 | template<typename Dtype> |
| 2117 | void DataTransformer<Dtype>::generateLabelMap(Dtype* transformed_label, cv::Mat& img_aug, MetaData meta) { |
| 2118 | int rezX = img_aug.cols; |
| 2119 | int rezY = img_aug.rows; |
| 2120 | int stride = param_.stride(); |
| 2121 | int grid_x = rezX / stride; |
| 2122 | int grid_y = rezY / stride; |
| 2123 | int channelOffset = grid_y * grid_x; |
| 2124 | int mode = 6; // TO DO: make this as a parameter |
| 2125 | |
| 2126 | // TO DO: in transform_nv, generate the weight Map for MPI images |
| 2127 | // clear out transformed_label, it may remain things for last batch |
| 2128 | // for (int g_y = 0; g_y < grid_y; g_y++){ |
| 2129 | // for (int g_x = 0; g_x < grid_x; g_x++){ |
| 2130 | // for (int i = 0; i < np; i++){ |
| 2131 | // if (meta.joint_self.isVisible[i] == 3){ |
| 2132 | // transformed_label[i*channelOffset + g_y*grid_x + g_x] = 0; |
| 2133 | // } |
| 2134 | // else{ |
| 2135 | // transformed_label[i*channelOffset + g_y*grid_x + g_x] = 1; |
| 2136 | // } |
| 2137 | // } |
| 2138 | // //background channel weight map |
| 2139 | // if (meta.joint_self.isVisible[0] == 3){ |
| 2140 | // transformed_label[np*channelOffset + g_y*grid_x + g_x] = 0; |
| 2141 | // } |
| 2142 | // else{ |
| 2143 | // transformed_label[np*channelOffset + g_y*grid_x + g_x] = 1; |
| 2144 | // } |
| 2145 | // } |
| 2146 | // } |
| 2147 | |
| 2148 | for (int g_y = 0; g_y < grid_y; g_y++){ |
| 2149 | for (int g_x = 0; g_x < grid_x; g_x++){ |
| 2150 | for (int i = np+1; i < 2*(np+1); i++){ |
| 2151 | if (mode == 6 && i == (2*np + 1)) |
| 2152 | continue; |
| 2153 | transformed_label[i*channelOffset + g_y*grid_x + g_x] = 0; |
| 2154 | } |
| 2155 | } |
| 2156 | } |
| 2157 | |
| 2158 | //LOG(INFO) << "label cleaned"; |
| 2159 | |
| 2160 | if (np == 37){ |
| 2161 | for (int i = 0; i < 18; i++){ |
| 2162 | cv::Point2f center = meta.joint_self.joints[i]; |
| 2163 | if(meta.joint_self.isVisible[i] <= 1){ |
| 2164 | putGaussianMaps(transformed_label + (i+np+1)*channelOffset, center, param_.stride(), |
| 2165 | grid_x, grid_y, param_.sigma()); //self |
| 2166 | } |
| 2167 | for(int j = 0; j < meta.numOtherPeople; j++){ //for every other person |
| 2168 | cv::Point2f center = meta.joint_others[j].joints[i]; |
| 2169 | if(meta.joint_others[j].isVisible[i] <= 1){ |
| 2170 | putGaussianMaps(transformed_label + (i+np+1)*channelOffset, center, param_.stride(), |
| 2171 | grid_x, grid_y, param_.sigma()); |
| 2172 | } |
| 2173 | } |
| 2174 | } |