[PYTHON] Ich habe die neue Objekterkennungs-API von tensorflow unter macOS Sierra ausprobiert

Ich habe Artikel gesehen, dass Tensorflow eine API herausgegeben hat, die die Objekterkennung mit Techcrunch erleichtert, also habe ich es sofort versucht. Ich tat. Eine ausführliche Erklärung finden Sie unter github.

Zuerst installieren

Grundlegende Konfiguration

OS : macOS Sierra 10.12.5 Python-Umgebung: anaconda3-4.2.0 (Python 3.5.2) Tensorflow: v1.2.0 (Installation wurde im Voraus durchgeführt)

Modelle klonen

Ich habe die ganze Zeit das Keras-Modell verwendet, und ich hatte das Tensorflow-Modell nie verwendet, also habe ich es geklont. Was den Ort betrifft, habe ich "~ / tensorflow" gemäß dem Tutorial gemacht. Darin habe ich Modelle geklont. Es gab verschiedene Modelle. Wenn ich Zeit habe, werde ich es versuchen.

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

setup Es gab verschiedene Dinge geschrieben, also habe ich verschiedene Dinge hinzugefügt.

Zuerst habe ich einige Dinge aufgegriffen, die Pip fehlen. Ich hatte kein lxml in meiner Umgebung, also habe ich es hinzugefügt. Mit dem folgenden Befehl können Sie überprüfen, ob dies ausreicht oder nicht.

$ pip freeze

Als nächstes musste ich Protobuf installieren, aber da es in der Installation des Tutorials in Linux geschrieben wurde, installierte ich es mit Homebrew anstelle von apt-get.

$ brew install protobuf

Dann kompilieren, konfigurieren und testen. Führen Sie den folgenden Befehl in ~ / tensorflow / models / research aus.

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

Wenn Sie eine OK-Meldung erhalten, ist die Installation wahrscheinlich abgeschlossen.

Betriebstest

Führen Sie "jupyter notebook" unter "~ / tensorflow / models / research / object_detection" aus. Öffnen Sie einfach object_detection_tutorial.ipynb. Die Testbilder befinden sich in ~ / tensorflow / models / research / object_detection / test_images. Führen Sie die Ausführung in der obigen Zelle aus. Wenn Sie das Ende erreicht haben, sollte die Ausführung abgeschlossen sein. Wenn Sie Ihr eigenes Bild sofort ausprobieren möchten, ersetzen Sie "image1.jpg " oder "image2.jpg " in "test_image" und führen Sie es aus oder verwenden Sie die vorletzte Zelle.

# 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 = ['Dateiname Ihres Lieblingsbildes']
# Size, in inches, of the output images.
IMAGE_SIZE = (12,8)

Sie können es als ausführen. Sie können das Ausgabebild speichern, indem Sie die letzte Zelle neu schreiben.

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') #Zur Bestätigung
      plt.figure(figsize=IMAGE_SIZE, dpi=300) #Sie können Zeichen lesen, wenn Sie mit dpi spielen
      plt.imshow(image_np)
      plt.savefig(image_path.split('.')[0] + '_labeled.jpg') #Hier hinzufügen

Ausgabebeispiel

image7_labeled.jpg Es gibt einige Nicht-Kuh-Typen, aber es ist fair.

Schließlich

Es scheint, dass dieser Bereich bereits von Keras erstellt wurde, daher würde ich ihn gerne beim nächsten Mal ausprobieren. Ich würde es gerne mit einem Video versuchen. Dieser Artikel sieht gut aus.

Recommended Posts

Ich habe die neue Objekterkennungs-API von tensorflow unter macOS Sierra ausprobiert
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Ich habe versucht, Objekte mit YOLO v3 (TensorFlow 2.0) auf einer Windows-CPU zu erkennen!
Ich habe versucht, Remote API mit GAE / J zu verwenden
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe LINE Message API (line-bot-sdk-python) mit GAE ausprobiert
Ich habe versucht, Objekte mit YOLO v3 (TensorFlow 2.1) auf der GPU von Windows zu erkennen!
[Für diejenigen, die TPU verwenden möchten] Ich habe versucht, die Tensorflow Object Detection API 2 zu verwenden
Ich habe MLflow auf Databricks ausprobiert
Ich habe versucht, die COTOHA-API zu verwenden (es gibt auch Code auf GitHub).
Ich habe AdaNet gegen Tabellendaten ausprobiert
Ich habe versucht, eine Quip-API zu erstellen
Ich habe die Naro-Roman-API 2 ausprobiert
Logoerkennung mit der TensorFlow-Objekterkennungs-API
Ich habe Cython unter Ubuntu auf VirtualBox ausprobiert
Ich habe Teslas API berührt
Ich habe versucht, das Gesicht mit MTCNN zu erkennen
Ich habe die neuartige API von Naruro ausprobiert
Installieren Sie Java2Python unter macOS High Sierra (10.13)
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
Ich bin auf die Hatena Keyword API gestoßen
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe versucht, die COTOHA-API zu berühren
Ich habe eine Web-API erstellt
Ich habe versucht, ein Auto in 3D zu erkennen
So installieren Sie cx_Oracle unter macOS Sierra
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe versucht, das Objekterkennungs-Tutorial mit dem neuesten Deep-Learning-Algorithmus auszuführen