movenet
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
movenet [2021/10/13 14:32] – [Compilation de tensorflow avec avx2 fma] serge | movenet [2021/12/16 09:07] (Version actuelle) – [Ressources] serge | ||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* https:// | * https:// | ||
- | =====Compilation | + | =====Optimisation |
- | * https://technofob.com/2019/06/14/how-to-compile-tensorflow-2-0-with-avx2-fma-instructions-on-mac/ | + | Movenet appelle Tensorflow Lite, qui n'est pas optimisé pour GPU. Inutile d' |
+ | Il ne tourne que sur CPU, et demande à avoir AVX2 et FMA.\\ | ||
+ | Pour compiler Tensorflow, voir **[[linux_compiler_tensorflow_avec_bazel|]]** | ||
+ | |||
+ | Altrnatives, | ||
+ | * https://www.intel.com/content/www/us/en/ | ||
- | python3 -m pip install wheel setuptools mock future> | ||
=====Exemple===== | =====Exemple===== | ||
* https:// | * https:// | ||
- | <code python> | + | <file python |
from time import time | from time import time | ||
import cv2 | import cv2 | ||
Ligne 19: | Ligne 23: | ||
def draw(frame, keypoints_with_scores): | def draw(frame, keypoints_with_scores): | ||
- | """ | ||
for item in keypoints_with_scores[0][0]: | for item in keypoints_with_scores[0][0]: | ||
- | if item[2] > 0.5: # confiance | + | if item[2] > 0.3: # confiance |
- | x = int(item[1]*640) # numpy array x est le 2ème | + | x = int(item[1]*720) # numpy array x est le 2ème |
- | y = int(item[0]*640) - 80 | + | y = int(item[0]*720) |
cv2.circle(frame, | cv2.circle(frame, | ||
return frame | return frame | ||
- | interpreter | + | models |
+ | "lite-model_movenet_singlepose_thunder_tflite_float16_4.tflite", | ||
+ | | ||
+ | |||
+ | interpreter = tf.lite.Interpreter(model_path=models[0]) | ||
interpreter.allocate_tensors() | interpreter.allocate_tensors() | ||
cv2.namedWindow(' | cv2.namedWindow(' | ||
- | cam = cv2.VideoCapture(0) | + | cam = cv2.VideoCapture(2) |
+ | cam.set(cv2.CAP_PROP_FRAME_WIDTH, | ||
+ | cam.set(cv2.CAP_PROP_FRAME_HEIGHT, | ||
t0 = time() | t0 = time() | ||
nbr = 0 | nbr = 0 | ||
Ligne 42: | Ligne 52: | ||
if not ret: | if not ret: | ||
continue | continue | ||
+ | |||
+ | # Extraction d'une image carrée [rows, columns] | ||
+ | frame = frame[:, 280:1000] | ||
image = tf.expand_dims(frame, | image = tf.expand_dims(frame, | ||
Ligne 73: | Ligne 86: | ||
cv2.destroyAllWindows() | cv2.destroyAllWindows() | ||
- | </code> | + | </file> |
+ | |||
+ | =====Des essais amusants===== | ||
+ | * **[[https:// | ||
+ | |||
+ | |||
{{tag> | {{tag> |
movenet.1634135574.txt.gz · Dernière modification : 2021/10/13 14:32 de serge