[PYTHON] J'ai essayé la nouvelle API de détection d'objets de tensorflow sur macOS Sierra

J'ai vu article que tensorflow a publié une API qui facilite la reconnaissance d'objets avec techcrunch, donc je l'ai essayé immédiatement. J'ai fait. Une explication détaillée peut être lue sur github.

Première installation

Configuration de base

OS : macOS Sierra 10.12.5 environnement python: anaconda3-4.2.0 (python 3.5.2) tensorflow: v1.2.0 (l'installation a été effectuée à l'avance)

modèles clone

J'ai utilisé le modèle keras tout le temps, et je n'avais jamais utilisé le modèle tensorflow, donc je l'ai cloné. Quant à l'endroit, j'ai fait ~ / tensorflow selon le tutoriel. En cela, j'ai cloné des modèles. Il y avait différents modèles, donc si j'ai le temps, je vais l'essayer.

$ cd
$ mkdir tensorflow 
$ cd tensorflow
$ git clone https://github.com/tensorflow/models.git

setup Il y avait diverses choses écrites, j'ai donc ajouté diverses choses.

Tout d'abord, j'ai ramassé certaines choses qui manquaient à pip. Je n'avais pas lxml dans mon environnement, alors je l'ai ajouté. Vous pouvez vérifier si cela suffit ou pas avec la commande ci-dessous.

$ pip freeze

Ensuite, j'ai dû installer Protobuf, mais comme il était écrit dans le corps de linux lors de l'installation du tutoriel, je l'ai installé en utilisant homebrew au lieu d'apt-get.

$ brew install protobuf

Puis compilez, configurez et testez. Exécutez la commande suivante dans ~ / tensorflow / models / research.

$ protoc object_detection/protos/*.proto --python_out=.
$ export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
$ python object_detection/builders/model_builder_test.py

Si vous obtenez un message OK, l'installation est probablement terminée.

Test de fonctionnement

Exécutez jupyter notebook à ~ / tensorflow / models / research / object_detection. Ouvrez simplement ʻobject_detection_tutorial.ipynb. Les images de test se trouvent dans ~ / tensorflow / models / research / object_detection / test_images. Exécutez à partir de la cellule ci-dessus et lorsque vous atteignez la fin, l'exécution devrait être terminée. Si vous voulez essayer votre propre image immédiatement, remplacez ʻimage1.jpg ou ʻimage2.jpg dans test_image` et exécutez, ou utilisez l'avant-dernière cellule.

# For the sake of simplicity we will use only 2 images:
# image1.jpg
# image2.jpg
# If you want to test the code with your images, just add path to the images to the TEST_IMAGE_PATHS.
PATH_TO_TEST_IMAGES_DIR = 'test_images'
# TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(1, 3) ]
TEST_IMAGE_PATHS = ['Nom de fichier de votre image préférée']
# Size, in inches, of the output images.
IMAGE_SIZE = (12,8)

Vous pouvez l'exécuter en tant que. Vous pouvez enregistrer l'image de sortie en réécrivant la dernière cellule.

with detection_graph.as_default():
  with tf.Session(graph=detection_graph) as sess:
    for image_path in TEST_IMAGE_PATHS:
      image = Image.open(image_path)
      # the array based representation of the image will be used later in order to prepare the
      # result image with boxes and labels on it.
      image_np = load_image_into_numpy_array(image)
      # Expand dimensions since the model expects images to have shape: [1, None, None, 3]
      image_np_expanded = np.expand_dims(image_np, axis=0)
      image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
      # Each box represents a part of the image where a particular object was detected.
      boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
      # Each score represent how level of confidence for each of the objects.
      # Score is shown on the result image, together with the class label.
      scores = detection_graph.get_tensor_by_name('detection_scores:0')
      classes = detection_graph.get_tensor_by_name('detection_classes:0')
      num_detections = detection_graph.get_tensor_by_name('num_detections:0')
      # Actual detection.
      (boxes, scores, classes, num_detections) = sess.run(
          [boxes, scores, classes, num_detections],
          feed_dict={image_tensor: image_np_expanded})
      # Visualization of the results of a detection.
      vis_util.visualize_boxes_and_labels_on_image_array(
          image_np,
          np.squeeze(boxes),
          np.squeeze(classes).astype(np.int32),
          np.squeeze(scores),
          category_index,
          use_normalized_coordinates=True,
          line_thickness=8)
      print(image_path.split('.')[0]+'_labeled.jpg') #Pour confirmation
      plt.figure(figsize=IMAGE_SIZE, dpi=300) #Vous pourrez lire les caractères si vous jouez avec dpi
      plt.imshow(image_np)
      plt.savefig(image_path.split('.')[0] + '_labeled.jpg') #Ajouter ici

Exemple de sortie

image7_labeled.jpg Il y a des gars qui ne sont pas des vaches, mais c'est juste.

finalement

Il semble que cette zone ait déjà été faite par Keras, je voudrais donc l'essayer la prochaine fois. J'aimerais l'essayer avec une vidéo. Cet article semble bon.

Recommended Posts

J'ai essayé la nouvelle API de détection d'objets de tensorflow sur macOS Sierra
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.0) sur un processeur Windows!
J'ai essayé d'utiliser l'API à distance avec GAE / J
J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai essayé l'API de message LINE (line-bot-sdk-python) avec GAE
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.1) sur le GPU de windows!
[Pour ceux qui veulent utiliser TPU] J'ai essayé d'utiliser l'API de détection d'objets Tensorflow 2
J'ai essayé MLflow sur Databricks
J'ai essayé d'utiliser l'API COTOHA (il y a aussi du code sur GitHub)
J'ai essayé AdaNet pour les données de table
J'ai essayé de créer l'API Quip
J'ai essayé le roman Naro API 2
Détection de logo à l'aide de l'API de détection d'objets TensorFlow
J'ai essayé Cython sur Ubuntu sur VirtualBox
J'ai touché l'API de Tesla
J'ai essayé la détection de visage avec MTCNN
J'ai essayé l'API du roman Naruro
Installez Java2Python sur macOS High Sierra (10.13)
J'ai essayé d'utiliser l'API checkio
J'ai essayé d'utiliser l'API de données YOUTUBE V3
Je suis tombé sur l'API Hatena Keyword
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé de toucher l'API COTOHA
J'ai créé une API Web
J'ai essayé la détection 3D d'une voiture
Comment installer cx_Oracle sur macOS Sierra
J'ai essayé d'utiliser l'API BigQuery Storage
J'ai essayé d'exécuter le didacticiel de détection d'objets en utilisant le dernier algorithme d'apprentissage en profondeur