Tensorflow предоставил свою модель оценки поз: multi_person_mobilenet_v1_075_float.tflite
. hosted_models
Я обнаружил, что вывод этой модели проводной.Фигура в сгенерированной тепловой карте выглядит случайной.Кто-нибудь запускал его успешно?
Я подписался на блог: browser-with-tenorflow
Я прикрепил свой код ниже:
for(int i = 0; i < keyPointsNum; i ++) {
for(int x = 0; x < outputW; x++){
for(int y = 0; y < outputH; y++){
heatMapArray[0][x][y][i] = (float)(1.0 / ( Math.exp(heatMapArray[0][x][y][i] * -1) + 1));
}
}
}
// 2. argmax2d
int[][] keyPointsRaw = new int[keyPointsNum][2];
float[] scores = new float[keyPointsNum];
for(int i=0; i<keyPointsNum; i++){
float maxScore = -10000f;
for(int y = 0; y < outputW; y++){
for(int x = 0; x < outputH; x++){
if(maxScore < heatMapArray[0][y][x][i]){
maxScore = heatMapArray[0][y][x][i];
keyPointsRaw[i][X] = x;
keyPointsRaw[i][Y] = y;
scores[i] = maxScore;
}
}
}
}
// 3. keypoint
float[][] keyPoints = new float[keyPointsNum][2];
for(int k=0; k<keyPointsNum; k++){
float[] offsetVector = {offsets[0][keyPointsRaw[k][1]][keyPointsRaw[k][0]][k], offsets[0][keyPointsRaw[k][1]][keyPointsRaw[k][0]][k+17]};
keyPoints[k][X] = keyPointsRaw[k][X] * 16 + offsetVector[X];
keyPoints[k][Y] = keyPointsRaw[k][Y] * 16 + offsetVector[Y];
}