Skip to content

Commit 43e2a49

Browse files
committed
blaze_vitisai: Update models and landmark code. First working version of hand landmarks.
1 parent 0d907ba commit 43e2a49

File tree

5 files changed

+96
-11
lines changed

5 files changed

+96
-11
lines changed

blaze_detect_live.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ def get_video_dev_by_name(src):
181181
{ "blaze": "hand", "pipeline": "tfl_hand_v0_10_lite" , "model1": "blaze_tflite/models/palm_detection_lite.tflite", "model2": "blaze_tflite/models/hand_landmark_lite.tflite" },
182182
{ "blaze": "hand", "pipeline": "tfl_hand_v0_10_full" , "model1": "blaze_tflite/models/palm_detection_full.tflite", "model2": "blaze_tflite/models/hand_landmark_full.tflite" },
183183
{ "blaze": "hand", "pipeline": "pyt_hand_v0_07" , "model1": "blaze_pytorch/models/blazepalm.pth", "model2": "blaze_pytorch/models/blazehand_landmark.pth" },
184-
{ "blaze": "hand", "pipeline": "vai_hand_v0_07" , "model1": "blaze_vitisai/models/blazepalm/"+dpu_arch+"/blazepalm.xmodel","model2": "blaze_vitisai/models/blazehandlandmark/"+dpu_arch+"/blazehandlandmark.xmodel" },
184+
{ "blaze": "hand", "pipeline": "vai_hand_v0_07" , "model1": "blaze_vitisai/models/BlazePalm/"+dpu_arch+"/BlazePalm.xmodel","model2": "blaze_vitisai/models/BlazeHandLandmark/"+dpu_arch+"/BlazeHandLandmark.xmodel" },
185185
{ "blaze": "hand", "pipeline": "hai_hand_v0_10_lite" , "model1": "blaze_hailo/models/palm_detection_lite.hef", "model2": "blaze_hailo/models/hand_landmark_lite.hef" },
186186
{ "blaze": "hand", "pipeline": "hai_hand_v0_10_full" , "model1": "blaze_hailo/models/palm_detection_full.hef", "model2": "blaze_hailo/models/hand_landmark_full.hef" },
187187
{ "blaze": "face", "pipeline": "tfl_face_v0_07_front" , "model1": "blaze_tflite/models/face_detection_front_v0_07.tflite", "model2": "blaze_tflite/models/face_landmark_v0_07.tflite" },
@@ -191,6 +191,9 @@ def get_video_dev_by_name(src):
191191
{ "blaze": "face", "pipeline": "tfl_face_v0_10_sparse", "model1": "blaze_tflite/models/face_detection_full_range_sparse.tflite", "model2": "blaze_tflite/models/face_landmark.tflite" },
192192
{ "blaze": "face", "pipeline": "pyt_face_v0_07_front" , "model1": "blaze_pytorch/models/blazeface.pth", "model2": "blaze_pytorch/models/blazeface_landmark.pth" },
193193
{ "blaze": "face", "pipeline": "pyt_face_v0_07_back" , "model1": "blaze_pytorch/models/blazefaceback.pth", "model2": "blaze_pytorch/models/blazeface_landmark.pth" },
194+
{ "blaze": "face", "pipeline": "vai_face_v0_07_hybrid", "model1": "blaze_tflite/models/face_detection_front_v0_07.tflite", "model2": "blaze_vitisai/models/BlazeFaceLandmark/"+dpu_arch+"/BlazeFaceLandmark.xmodel" },
195+
{ "blaze": "face", "pipeline": "vai_face_v0_07_front" , "model1": "blaze_vitisai/models/BlazeFace/"+dpu_arch+"/BlazeFace.xmodel","model2": "blaze_vitisai/models/BlazeFaceLandmark/"+dpu_arch+"/BlazeFaceLandmark.xmodel" },
196+
{ "blaze": "face", "pipeline": "vai_face_v0_07_back" , "model1": "blaze_vitisai/models/BlazeFaceBack/"+dpu_arch+"/BlazeFaceBack.xmodel","model2": "blaze_vitisai/models/BlazeFaceLandmark/"+dpu_arch+"/BlazeFaceLandmark.xmodel" },
194197
{ "blaze": "face", "pipeline": "hai_face_v0_10_short" , "model1": "blaze_hailo/models/face_detection_short_range.hef", "model2": "blaze_hailo/models/face_landmark.hef" },
195198
{ "blaze": "face", "pipeline": "hai_face_v0_10_full" , "model1": "blaze_hailo/models/face_detection_full_range.hef", "model2": "blaze_hailo/models/face_landmark.hef" },
196199
{ "blaze": "pose", "pipeline": "tfl_pose_v0_10_lite" , "model1": "blaze_tflite/models/pose_detection.tflite", "model2": "blaze_tflite/models/pose_landmark_lite.tflite" },
@@ -276,6 +279,7 @@ def get_video_dev_by_name(src):
276279
os.mkdir(output_dir) # Create the output directory if it doesn't already exist
277280

278281

282+
nb_active_pipelines = 0
279283
for i in range(nb_blaze_pipelines):
280284
blaze = blaze_pipelines[i]["blaze"]
281285
pipeline = blaze_pipelines[i]["pipeline"]
@@ -342,7 +346,13 @@ def get_video_dev_by_name(src):
342346
if args.debug:
343347
print("[blaze_detect_live] Pipeline ",pipeline," supported and initialized.")
344348

349+
nb_active_pipelines += 1
350+
345351

352+
if nb_active_pipelines == 0:
353+
print("[ERROR] no pipelines selected !")
354+
exit()
355+
346356
print("================================================================")
347357
print("Blaze Detect Live Demo")
348358
print("================================================================")

blaze_vitisai/blaze_detect_live.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ def detect_dpu_architecture():
9494

9595
dpu_arch = detect_dpu_architecture()
9696
print("DPU Architecture : ",dpu_arch)
97-
blazepalm_model = "models/blazepalm/"+dpu_arch+"/blazepalm.xmodel"
98-
blazehandlandmark_model = "models/blazehandlandmark/"+dpu_arch+"/blazehandlandmark.xmodel"
97+
blazepalm_model = "models/BlazePalm/"+dpu_arch+"/BlazePalm.xmodel"
98+
blazehandlandmark_model = "models/BlazeHandLandmark/"+dpu_arch+"/BlazeHandLandmark.xmodel"
9999

100100
# construct the argument parser and parse the arguments
101101
ap = argparse.ArgumentParser()
@@ -158,14 +158,14 @@ def detect_dpu_architecture():
158158
blaze_detector_type = "blazepalm"
159159
blaze_landmark_type = "blazehandlandmark"
160160
blaze_title = "BlazeHandLandmark"
161-
default_detector_model="models/blazepalm/"+dpu_arch+"/blazepalm.xmodel"
162-
default_landmark_model="models/blazehandlandmark/"+dpu_arch+"/blazehandlandmark.xmodel"
163-
#elif args.blaze == "face":
164-
# blaze_detector_type = "blazeface"
165-
# blaze_landmark_type = "blazefacelandmark"
166-
# blaze_title = "BlazeFaceLandmark"
167-
# default_detector_model="models/blazeface/"+dpu_arch+"/blazeface.xmodel"
168-
# default_landmark_model="models/blazefacelandmark/"+dpu_arch+"/blazefacelandmark.xmodel"
161+
default_detector_model="models/BlazePalm/"+dpu_arch+"/BlazePalm.xmodel"
162+
default_landmark_model="models/BlazeHandLandmark/"+dpu_arch+"/BlazeHandLandmark.xmodel"
163+
elif args.blaze == "face":
164+
blaze_detector_type = "blazeface"
165+
blaze_landmark_type = "blazefacelandmark"
166+
blaze_title = "BlazeFaceLandmark"
167+
default_detector_model="models/BlazeFace/"+dpu_arch+"/BlazeFace.xmodel"
168+
default_landmark_model="models/BlazeFaceLandmark/"+dpu_arch+"/BlazeFaceLandmark.xmodel"
169169
#elif args.blaze == "pose":
170170
# blaze_detector_type = "blazepose"
171171
# blaze_landmark_type = "blazeposelandmark"

blaze_vitisai/blazedetector.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def load_model(self, model_path):
3030
# Get input scaling
3131
self.input_fixpos = self.input_tensor_buffers[0].get_tensor().get_attr("fix_point")
3232
self.input_scale = 2**self.input_fixpos
33+
if self.DEBUG:
34+
print("[BlazeDetector.load_model] Input Scale : ",self.input_scale," (fixpos=",self.input_fixpos,")")
3335

3436
# Get input/output tensors dimensions
3537
self.num_inputs = len(self.input_tensor_buffers)

blaze_vitisai/blazelandmark.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ def load_model(self, model_path):
2929
# Get input scaling
3030
self.input_fixpos = self.input_tensor_buffers[0].get_tensor().get_attr("fix_point")
3131
self.input_scale = 2**self.input_fixpos
32+
if self.DEBUG:
33+
print("[BlazeLandmark.load_model] Input Scale : ",self.input_scale," (fixpos=",self.input_fixpos,")")
3234

3335
# Get input/output tensors dimensions
3436
self.num_inputs = len(self.input_tensor_buffers)
@@ -61,6 +63,10 @@ def preprocess(self, x):
6163
# format = RGB
6264
# dtype = float32
6365
# range = 0.0 - 1.0
66+
67+
#x = (x / 255.0) * self.input_scale
68+
x = x * self.input_scale
69+
x = x.astype(np.int8)
6470
return x
6571

6672
def predict(self, x):
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,68 @@
11
# TODO : get models from github.com/AlbertaBeef/blaze_tutorial
2+
3+
#[BlazeDetector.load_model] Model File : models/BlazePalm/B512/BlazePalm.xmodel
4+
#[BlazeDetector.load_model] Input Scale : 128 (fixpos= 7 )
5+
#[BlazeDetector.load_model] Number of Inputs : 1
6+
#[BlazeDetector.load_model] Input[ 0 ] Shape : (1, 256, 256, 3)
7+
#[BlazeDetector.load_model] Number of Outputs : 2
8+
#[BlazeDetector.load_model] Output[ 0 ] Shape : (1, 2944, 1)
9+
#[BlazeDetector.load_model] Output[ 1 ] Shape : (1, 2944, 18)
10+
#[BlazeDetector.load_model] Num Anchors : 2944
11+
#[BlazeDetectorBase.config_model] Anchor Options : {'num_layers': 5, 'min_scale': 0.1171875, 'max_scale': 0.75, 'input_size_height': 256, 'input_size_width': 256, 'anchor_offset_x': 0.5, 'anchor_offset_y': 0.5, 'strides': [8, 16, 32, 32, 32], 'aspect_ratios': [1.0], 'reduce_boxes_in_lowest_layer': False, 'interpolated_scale_aspect_ratio': 1.0, 'fixed_anchor_size': True}
12+
#[BlazeDetectorBase.config_model] Anchors Shape : (2944, 4)
13+
#[BlazeDetectorBase.config_model] Model Config : {'num_classes': 1, 'num_anchors': 2944, 'num_coords': 18, 'score_clipping_thresh': 100.0, 'x_scale': 256.0, 'y_scale': 256.0, 'h_scale': 256.0, 'w_scale': 256.0, 'min_score_thresh': 0.7, 'min_suppression_threshold': 0.3, 'num_keypoints': 7, 'detection2roi_method': 'box', 'kp1': 0, 'kp2': 2, 'theta0': 1.5707963267948966, 'dscale': 2.6, 'dy': -0.5}
14+
15+
16+
#[BlazeLandmark.load_model] Model File : models/BlazeHandLandmark/B512/BlazeHandLandmark.xmodel
17+
#[BlazeLandmark.load_model] Input Scale : 128 (fixpos= 7 )
18+
#[BlazeLandmark.load_model] Number of Inputs : 1
19+
#[BlazeLandmark.load_model] Input[ 0 ] Shape : (1, 256, 256, 3)
20+
#[BlazeLandmark.load_model] Number of Outputs : 3
21+
#[BlazeLandmark.load_model] Output[ 0 ] Shape : (1,)
22+
#[BlazeLandmark.load_model] Output[ 1 ] Shape : (1,)
23+
#[BlazeLandmark.load_model] Output[ 2 ] Shape : (1, 21, 3)
24+
25+
26+
#[BlazeDetector.load_model] Model File : models/BlazeFace/B512/BlazeFace.xmodel
27+
#[BlazeDetector.load_model] Input Scale : 128 (fixpos= 7 )
28+
#[BlazeDetector.load_model] Number of Inputs : 1
29+
#[BlazeDetector.load_model] Input[ 0 ] Shape : (1, 128, 128, 3)
30+
#[BlazeDetector.load_model] Number of Outputs : 2
31+
#[BlazeDetector.load_model] Output[ 0 ] Shape : (1, 896, 1)
32+
#[BlazeDetector.load_model] Output[ 1 ] Shape : (1, 896, 16)
33+
#[BlazeDetector.load_model] Num Anchors : 896
34+
#[BlazeDetectorBase.config_model] Anchor Options : {'num_layers': 4, 'min_scale': 0.1484375, 'max_scale': 0.75, 'input_size_height': 128, 'input_size_width': 128, 'anchor_offset_x': 0.5, 'anchor_offset_y': 0.5, 'strides': [8, 16, 16, 16], 'aspect_ratios': [1.0], 'reduce_boxes_in_lowest_layer': False, 'interpolated_scale_aspect_ratio': 1.0, 'fixed_anchor_size': True}
35+
#[BlazeDetectorBase.config_model] Anchors Shape : (896, 4)
36+
#[BlazeDetectorBase.config_model] Model Config : {'num_classes': 1, 'num_anchors': 896, 'num_coords': 16, 'score_clipping_thresh': 100.0, 'x_scale': 128.0, 'y_scale': 128.0, 'h_scale': 128.0, 'w_scale': 128.0, 'min_score_thresh': 0.75, 'min_suppression_threshold': 0.3, 'num_keypoints': 6, 'detection2roi_method': 'box', 'kp1': 1, 'kp2': 0, 'theta0': 0.0, 'dscale': 1.5, 'dy': 0.0}
37+
#[BlazeLandmark.load_model] Model File : models/BlazeFaceLandmark/B512/BlazeFaceLandmark.xmodel
38+
#WARNING: Logging before InitGoogleLogging() is written to STDERR
39+
#F0312 16:00:08.870633 991 op_imp.cpp:110] [UNILOG][FATAL][VAILIB_CPU_RUNNER_OPEN_LIB_ERROR][dlopen can not open lib!] lib=libvart_op_imp_prelu.so;error=libvart_op_imp_prelu.so: cannot open shared object file: No such file or directory;op=xir::Op{name = BlazeFaceLandmark__BlazeFaceLandmark_Sequential_backbone1__PReLU_1__ret_9, type = prelu}
40+
#*** Check failure stack trace: ***
41+
#Aborted
42+
43+
44+
#[BlazeDetector.load_model] Model File : blaze_vitisai/models/BlazeFaceBack/B512/BlazeFaceBack.xmodel
45+
#[BlazeDetector.load_model] Input Scale : 128 (fixpos= 7 )
46+
#[BlazeDetector.load_model] Number of Inputs : 1
47+
#[BlazeDetector.load_model] Input[ 0 ] Shape : (1, 256, 256, 3)
48+
#[BlazeDetector.load_model] Number of Outputs : 2
49+
#[BlazeDetector.load_model] Output[ 0 ] Shape : (1, 896, 1)
50+
#[BlazeDetector.load_model] Output[ 1 ] Shape : (1, 896, 16)
51+
#[BlazeDetector.load_model] Num Anchors : 896
52+
#[BlazeDetectorBase.config_model] Anchor Options : {'num_layers': 4, 'min_scale': 0.15625, 'max_scale': 0.75, 'input_size_height': 256, 'input_size_width': 256, 'anchor_offset_x': 0.5, 'anchor_offset_y': 0.5, 'strides': [16, 32, 32, 32], 'aspect_ratios': [1.0], 'reduce_boxes_in_lowest_layer': False, 'interpolated_scale_aspect_ratio': 1.0, 'fixed_anchor_size': True}
53+
#[BlazeDetectorBase.config_model] Anchors Shape : (896, 4)
54+
#[BlazeDetectorBase.config_model] Model Config : {'num_classes': 1, 'num_anchors': 896, 'num_coords': 16, 'score_clipping_thresh': 100.0, 'x_scale': 256.0, 'y_scale': 256.0, 'h_scale': 256.0, 'w_scale': 256.0, 'min_score_thresh': 0.65, 'min_suppression_threshold': 0.3, 'num_keypoints': 6, 'detection2roi_method': 'box', 'kp1': 1, 'kp2': 0, 'theta0': 0.0, 'dscale': 1.5, 'dy': 0.0}
55+
#[BlazeLandmark.load_model] Model File : blaze_vitisai/models/BlazeFaceLandmark/B512/BlazeFaceLandmark.xmodel
56+
#WARNING: Logging before InitGoogleLogging() is written to STDERR
57+
#F0312 16:05:40.381615 1093 op_imp.cpp:110] [UNILOG][FATAL][VAILIB_CPU_RUNNER_OPEN_LIB_ERROR][dlopen can not open lib!] lib=libvart_op_imp_prelu.so;error=libvart_op_imp_prelu.so: cannot open shared object file: No such file or directory;op=xir::Op{name = BlazeFaceLandmark__BlazeFaceLandmark_Sequential_backbone1__PReLU_1__ret_9, type = prelu}
58+
#*** Check failure stack trace: ***
59+
#Aborted
60+
61+
62+
#[BlazeLandmark.load_model] Model File : blaze_vitisai/models/BlazeFaceLandmark/B512/BlazeFaceLandmark.xmodel
63+
#WARNING: Logging before InitGoogleLogging() is written to STDERR
64+
#F0312 16:11:32.505277 1163 op_imp.cpp:110] [UNILOG][FATAL][VAILIB_CPU_RUNNER_OPEN_LIB_ERROR][dlopen can not open lib!] lib=libvart_op_imp_prelu.so;error=libvart_op_imp_prelu.so: cannot open shared object file: No such file or directory;op=xir::Op{name = BlazeFaceLandmark__BlazeFaceLandmark_Sequential_backbone1__PReLU_1__ret_9, type = prelu}
65+
#*** Check failure stack trace: ***
66+
#Aborted
67+
68+

0 commit comments

Comments
 (0)