📝 add how to python in face_mesh model
This commit is contained in:
		
							parent
							
								
									cccf6244d3
								
							
						
					
					
						commit
						6bb12c80b1
					
				| 
						 | 
					@ -254,6 +254,45 @@ and for iOS modify `kNumFaces` in
 | 
				
			||||||
Tip: Maximum number of faces to detect/process is set to 1 by default. To change
 | 
					Tip: Maximum number of faces to detect/process is set to 1 by default. To change
 | 
				
			||||||
it, in the graph file modify the option of `ConstantSidePacketCalculator`.
 | 
					it, in the graph file modify the option of `ConstantSidePacketCalculator`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Python
 | 
				
			||||||
 | 
					Although not having oficial support for Python, you can easily run Face Landmark TFlite model at Python, with TFlite Interpreter.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```python
 | 
				
			||||||
 | 
					import tensorflow as tf
 | 
				
			||||||
 | 
					from tensorflow import keras
 | 
				
			||||||
 | 
					import numpy as np
 | 
				
			||||||
 | 
					from PIL import Image
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def doLabel(pil_img):
 | 
				
			||||||
 | 
					    interpreter = tf.lite.Interpreter(model_path='face_landmark.tflite')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    interpreter.allocate_tensors()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    input_details = interpreter.get_input_details()
 | 
				
			||||||
 | 
					    output_details = interpreter.get_output_details()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    floating_model = input_details[0]['dtype'] == np.float32
 | 
				
			||||||
 | 
					    height = input_details[0]['shape'][1]
 | 
				
			||||||
 | 
					    width = input_details[0]['shape'][2]
 | 
				
			||||||
 | 
					    img = pil_img.resize((width, height))
 | 
				
			||||||
 | 
					    input_data = np.expand_dims(img, axis=0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if floating_model:
 | 
				
			||||||
 | 
					        input_data = (np.float32(input_data) - 127.5) /127.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    interpreter.set_tensor(input_details[0]['index'], input_data)
 | 
				
			||||||
 | 
					    interpreter.invoke()
 | 
				
			||||||
 | 
					    output_data = interpreter.get_tensor(output_details[0]['index'])
 | 
				
			||||||
 | 
					    results = np.squeeze(output_data)
 | 
				
			||||||
 | 
					    results.shape = (468,3)
 | 
				
			||||||
 | 
					    return results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					The output is an array with the 468 annotations. X and Y values are between 0 and 192.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Face Effect Example
 | 
					### Face Effect Example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Face effect example showcases real-time mobile face effect application use case
 | 
					Face effect example showcases real-time mobile face effect application use case
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user