model_fatsusus / 2DImage2BMI-main /BodyFeatureExtractor.py
Jjtumarai's picture
deploy: bodyfat estimation app
1cac303
Raw
History Blame Contribute Delete
1.66 kB
import json
import os
import cv2
import torch
import sys
from Detected import Image_Processor
from Datasets_BFDF import get_dataloader
import numpy as np
mask_model = "MODEL/pose2seg_release.pkl"
keypoints_model = "COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml"
P = Image_Processor(mask_model, keypoints_model)
DEVICE = torch.device("cuda:2")
BATCH_SIZE = 64
Path = os.path.join('bodyfeature', 'BodyFeature_imagenet.json')
BodyFeature = {}
cnt = 1
loader_train, loader_val, loader_test = get_dataloader(None, dataset='Ours')
loaders = [loader_val, loader_test, loader_train]
for loader in loaders:
for (data, name, img_name, sex, age, height, weight), target in loader:
values = {}
data = data.to(DEVICE)
cnt += 1
img_e = cv2.imread(name[0])
print('Handling the %d pic %s' % (cnt, img_name[0]))
try:
F = P.Process(img_e)
except:
print("Can't Handle this pic!")
continue
# print(type(F.WSR))
values['WSR'] = float(F.WSR)
values['WTR'] = float(F.WTR)
values['WHpR'] = float(F.WHpR)
values['WHdR'] = float(F.WHdR)
values['HpHdR'] = float(F.HpHdR)
values['Area'] = float(F.Area)
values['H2W'] = float(F.H2W)
values['Age'] = float(age.numpy()[0])
values['Height'] = float(height.numpy()[0])
values['Weight'] = float(weight.numpy()[0])
values['BMI'] = float(target.numpy()[0])
values['Sex'] = int(sex.numpy()[0])
BodyFeature[img_name[0]] = values
json_str = json.dumps(BodyFeature)
with open(Path, 'w') as json_file:
json_file.write(json_str)