| 200 | } |
| 201 | |
| 202 | function decodeBBox(bbox, priors, onnx_config) { |
| 203 | var variances = onnx_config.variance |
| 204 | var loc = ndarray(bbox.data, [4420, 4]); |
| 205 | // console.log(bbox, priors); |
| 206 | var before_prior = priors.hi(null, 2), |
| 207 | after_prior = priors.lo(null, 2); |
| 208 | |
| 209 | var before_loc = loc.hi(null, 2), |
| 210 | after_loc = loc.lo(null, 2); |
| 211 | |
| 212 | var before_result = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 213 | var before_temp = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 214 | var before_temp2 = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 215 | |
| 216 | var after_result = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 217 | var after_temp = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 218 | var after_temp2 = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 219 | var after_temp3 = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 220 | var after_temp4 = ndarray(new Float32Array(before_loc.shape[0] * before_loc.shape[1]), [before_loc.shape[0], 2]); |
| 221 | |
| 222 | var boxes = ndarray(new Float32Array(before_loc.shape[0] * 4), [before_loc.shape[0], 4]); |
| 223 | |
| 224 | // Before |
| 225 | ops.mul(before_temp, before_loc, after_prior); |
| 226 | ops.muls(before_temp2, before_temp, variances[0]); |
| 227 | ops.add(before_result, before_temp2, before_prior); |
| 228 | |
| 229 | // After |
| 230 | ops.muls(after_temp, after_loc, variances[1]); |
| 231 | ops.exp(after_temp2, after_temp); |
| 232 | ops.mul(after_temp3, after_temp2, after_prior); |
| 233 | |
| 234 | for (var index = 0; index < 4; index++) |
| 235 | ops.assign(after_result.pick(null, index), after_temp3.pick(null, index)); |
| 236 | |
| 237 | ops.divs(after_temp4, after_temp3, -2); |
| 238 | ops.addeq(before_result, after_temp4); |
| 239 | |
| 240 | ops.addeq(after_result, before_result); |
| 241 | |
| 242 | ops.assign(boxes.pick(null, 0), before_result.pick(null, 0)); |
| 243 | ops.assign(boxes.pick(null, 1), before_result.pick(null, 1)); |
| 244 | ops.assign(boxes.pick(null, 2), after_result.pick(null, 0)); |
| 245 | ops.assign(boxes.pick(null, 3), after_result.pick(null, 1)); |
| 246 | |
| 247 | return boxes; |
| 248 | } |
| 249 | |
| 250 | function scaleMultiplyBBox(boxes_arr, scale) { |
| 251 | var total_result = boxes_arr.shape[0]; |