[PYTHON] Versuchen Sie, die PlaidML-Bildbeurteilung auf einem Mac auszuführen

Versuchen Sie es mit PlaidML, das auf der GPU Ihres Mac mit OpenPose Part 2 auf MacBookPro ausgeführt wird. Was funktioniert außer dem Benchmark noch? Als ich es nachgeschlagen habe, habe ich einen Artikel wie diesen über Qiita gefunden, also habe ich versucht zu sehen, ob es in der aktuellen Situation (2020) funktioniert.

Umgebung

Vorbereitung

Richten Sie eine virtuelle Python-Umgebung ein.

Erstellen Sie eine virtuelle Umgebung
$ virtualenv plaidvison-plaidml

Betreten Sie die virtuelle Umgebung
$ source plaidvison-plaidml/bin/activate

Aufbau

PlaidML-Einstellung, Funktionsprüfung

Installieren Sie nach dem Aufrufen der virtuellen Umgebung das PlaidML-Paket und konfigurieren Sie das zu verwendende Gerät. Dies ist dasselbe wie OpenPose auf MacBookPro Teil 2.

Installieren Sie PlaidML- und Benchmark-Pakete
$ pip install plaidml-keras plaidbench

Stellen Sie das von PlaidML verwendete Gerät ein
$ plaidml-setup
* Verwenden Sie y mit Ausnahme der Geräteeinstellungen
・ ・ ・
<Unterlassung>
・ ・ ・
Wählen Sie im Abschnitt Geräteeinstellungen die in der Liste angezeigte Gerätenummer aus und drücken Sie die Eingabetaste.
Multiple devices detected (You can override by setting PLAIDML_DEVICE_IDS).
Please choose a default device:

   1 : llvm_cpu.0
   2 : opencl_intel_uhd_graphics_630.0
   3 : opencl_cpu.0
   4 : opencl_amd_radeon_pro_555x_compute_engine.0
   5 : metal_intel(r)_uhd_graphics_630.0
   6 : metal_amd_radeon_pro_555x.0

Default device? (1,2,3,4,5,6)[1]:6
・ ・ ・
<Unterlassung>
・ ・ ・

Überprüfen Sie nach der Installation des Pakets und dem Einstellen des Geräts den Betrieb.

Bestätigter Betrieb mit Benchmark
$ plaidbench keras mobilenet
Running 1024 examples with mobilenet, batch size 1, on backend plaid
INFO:plaidml:Opening device "metal_amd_radeon_pro_555x.0"* Wenn diese Anzeige angezeigt wird, wird sie auf dem ausgewählten Gerät ausgeführt.
Compiling network... Warming up... Running...
Example finished, elapsed: 0.545s (compile), 14.425s (execution)

-----------------------------------------------------------------------------------------
Network Name         Inference Latency         Time / FPS          
-----------------------------------------------------------------------------------------
mobilenet            14.09 ms                  0.00 ms / 1000000000.00 fps
Correctness: PASS, max_error: 1.675534622336272e-05, max_abs_error: 7.674098014831543e-07, fail_ratio: 0.0

karierte Sichteinstellungen

Einstellungen, aber Ende des Fehlers

Es scheint, dass sich die Quelle zum Zeitpunkt der Veröffentlichung des Referenzartikels im PlaidML-Repository befand, aber als ich es versuchte Der Link war defekt und als ich ihn nachschlug, wurde er unter hier gefunden.

Also werde ich es von git klonen.

$ git clone https://github.com/jbruestle/plaidvision.git

Geben Sie nach dem Klonen das Verzeichnis ein.

$ cd plaidvision

Installieren Sie die erforderlichen Pakete.

$ pip install -r requirements.txt 

Nach der Installation des Pakets habe ich es mit dem folgenden Befehl gestartet, aber aus irgendeinem Grund endete es mit einem Fehler.

$ python plaidvision.py mobilenet
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Using PlaidML backend.
INFO:plaidml:Opening device "metal_amd_radeon_pro_555x.0"
Traceback (most recent call last):
  File "plaidvision.py", line 320, in <module>
    main()
  File "plaidvision.py", line 289, in main
    predictions = model.classify(frame)
  File "plaidvision.py", line 219, in classify
    img = scipy.misc.imresize(img, self.shape).astype(float)
AttributeError: module 'scipy.misc' has no attribute 'imresize'

Fehler untersuchen und beheben, aber

Es scheint, dass ein Fehler vorliegt, da es kein Attribut namens imresize gibt. Daher habe ich es überprüft und versucht, die Quelle von plaidvision.py zu ändern, während ich mich auf Folgendes beziehe.

<Unterlassung>
import pygame
import scipy.misc
from PIL import Image <-Fügen Sie diese Zeile hinzu

<Unterlassung>

Der Teil, der hier imresize nennt

    def classify(self, img, top_n=5):
        if img.shape != self.shape:
            img = scipy.misc.imresize(img, self.shape).astype(float)   <==Hier
        data = np.expand_dims(img, axis=0)
        data = self.preprocess_input(data)
        predictions = self.model.predict(data)
        return self.decode_predictions(predictions, top=top_n)[0]

Ändern Sie wie unten

    def classify(self, img, top_n=5):
        if img.shape != self.shape:
            img = np.array(Image.fromarray(img).resize((int(self.shape[1]),int(self.shape[0])), resample=0)).astype(float)  <==Ändere dich so
        data = np.expand_dims(img, axis=0)
        data = self.preprocess_input(data)
        predictions = self.model.predict(data)
        return self.decode_predictions(predictions, top=top_n)[0]

Nach der Korrektur, als ich versuchte, sie erneut auszuführen, wurde die Fehlerbeendigung nicht angezeigt, aber das graue Fenster wurde angezeigt und nichts wurde angezeigt.

graywindow.png

Anzeigeprobleme behoben

Als ich nach dem Grund suchte, fand ich solche Informationen.

Anscheinend gab es ein Problem mit der Kompatibilität zwischen dem standardmäßig installierten Pygame und dem Mac, und es scheint, dass ich eine andere Version von Pygame installieren musste.

Deinstallieren Sie also das aktuell enthaltene Pygame.

$ pip uninstall pygame

Geben Sie dann die Version an und installieren Sie sie.

$ pip install pygame==2.0.0.dev6

Ergebnis ist

Nach der Installation von pygame habe ich versucht, es auszuführen.

$ python plaidvision.py mobilenet

Diesmal funktionierte es ohne Probleme und ich konnte das Bild beurteilen.

success.png

Recommended Posts

Versuchen Sie, die PlaidML-Bildbeurteilung auf einem Mac auszuführen
Versuchen Sie, Jupyter Notebook auf einem Mac auszuführen
Versuchen Sie Deepdream auf dem Mac
Versuchen Sie, Tensorflow auf Docker + Anaconda auszuführen
Versuchen Sie, Kobukis 3D-Simulator auf ROS auszuführen
GPU ~ Implementierung von PlaidML auf Mac ~ (Stand Mai 2020)
Versuchen Sie, Distributed TensorFlow auf der Google Cloud Platform auszuführen
Python auf Mac
Versuchen Sie, MLB-Daten auf Mac und Python zu importieren
Versuchen Sie, Pyston 0.1 auszuführen
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
Versuchen Sie es mit E-Cell 4 unter Windows 7 oder Mac OS X.
Installieren Sie pyenv auf dem Mac
Pyenv + virtualenv auf dem Mac
Installieren Sie Ansible auf einem Mac
Installieren Sie Python auf dem Mac
Installieren von Python 3 in einer Mac-Umgebung
numba Installation auf dem Mac
Führen Sie OpenMVG auf einem Mac aus
Probieren Sie FEniCS unter Windows aus!
Versuchen Sie Poerty unter Windows
Installieren Sie Python 3.4 auf einem Mac
Installieren Sie Caffe auf dem Mac
Installieren Sie Mecab auf dem Mac
Installieren Sie Mecab-Python auf dem Mac