[PYTHON] Kann in 5 Minuten erledigt werden! Erstellen Sie eine Gesichtserkennungs-API mit Fast API und OpenCV und veröffentlichen Sie sie auf Heroku

Einführung

Hallo. Dieser Artikel ist eine Kopie des Artikels auf meiner Website (https://flat-kids.net/), aber ich dachte, er würde weit verbreitet sein, deshalb habe ich es gewagt, ihn auf Qiita zu veröffentlichen. Ich tat.

Jetzt studiere ich Computer Vision und suche nach Möglichkeiten, diese Technologie konkret einzusetzen. Ich denke, dass die Methode zum Erstellen einer API eine der guten Ideen ist, die als gemeinsames Modul in verschiedenen Umgebungen und Sprachen verwendet werden kann. Natürlich gibt es einige Nachteile. Als ich nach einem Python-Framework suchte, mit dem sich leicht eine API erstellen lässt, habe ich etwas namens FastAPI gefunden. Daher habe ich eine Gesichtserkennungs-API mit FastAPI erstellt. Da dies eine große Sache ist, möchte ich sofort auf Heroku veröffentlichen.

Übrigens, kann es in 5 Minuten erledigt werden (lacht) Timer starten!

Was ist FastAPI?

FastAPI ist ein modernes, schnelles (Hochleistungs-) Webframework zum Erstellen von APIs in Python 3.6+, das auf Standard-Python-Typ-Hinweisen basiert. Es ist ein sehr einfach zu bedienendes Framework, daher hoffe ich, dass viele Leute es verwenden werden. Die offizielle Website lautet https://fastapi.tiangolo.com/.

Was ist die Gesichtserkennungs-API?

Erstellen Sie nach dem Hochladen des Bildes, das Sie erkennen möchten, eine API, die die von JSON erkannte Nummer und die rechteckigen Koordinaten zurückgibt. Wenn Sie anhand des Ergebnisses versuchen, einen Frame auf übliche Weise hinzuzufügen, sieht er folgendermaßen aus. screenshot.181.png

Bild: http://gahag.net/

Annahme

Bitte machen Sie im Voraus Folgendes.

--Heroku Benutzer registriert (Free Plan) --Github Benutzer registriert

Ich denke, Sie sollten Folgendes tun, aber diesmal ist es nicht obligatorisch.

Verfahren

  1. Erstellen Sie ein GitHub-Remote-Repository
  2. In Heroku bereitstellen
  3. API abgeschlossen !?

① Erstellen Sie ein GitHub-Remote-Repository

Ich möchte die Details des Quellcodes später auf meiner Website schreiben. Der diesmal verwendete Quellcode ist unter Github zu finden. Erstellen Sie Ihr eigenes Github-Remote-Repository und legen Sie die Quelle darin ab.

Die Konfiguration ist wie folgt.

.
├── cascades
│   └── haarcascade_frontalface_default.xml
├── detect
│   └── detect_face.py
├── .gitignore
├── Aptfile
├── Procfile
├── const.py
├── main.py
├── requirements.txt
└── women.jpg

"Cascades / haarcascade_frontalface_default.xml" ist eine trainierte Datei des Kaskadenklassifikators, die Gesichter erkennen kann. Die Logik zur Gesichtserkennung ist in "Detect / Detect_face.py" geschrieben. ".Gitignore" ist das, was Sie mit git nicht verwalten möchten. "Aptfile" ist eine Datei, die zur Verwendung von OpenCV mit Heroku erforderlich ist. Details werden später beschrieben. "Procfile" ist eine Datei, die zum Ausführen von FastAPI auf Heroku erforderlich ist. "Const.py" wird verwendet, weil es einfach ist, CONST zu verwenden. "Main.py" ist die von uvicorn ausgeführte Datei. "Requirements.txt" ist eine Datei, die abhängige Bibliotheken verwaltet. Erforderlich für den Einsatz mit Heruku. "Women.jpg " ist ein Beispielbild.

② In Heroku bereitstellen

Nachdem die Quelle fertig ist, können wir die API auf Heroku veröffentlichen. Erstellen Sie zunächst eine neue App. screenshot.173.png

Gib ihm einen App-Namen. screenshot.174_.png

Wählen Sie die Registerkarte Bereitstellen, stellen Sie eine Verbindung mit Ihrem Github-Konto her und wählen Sie dann das Repository aus, das Sie bereitstellen möchten. screenshot.182_.png

OpenCV installiert das Paket "opencv-contrib-python", aber allein damit erhalte ich einen Importfehler. "ImportError: libSM.so.6: Freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis" Daher sind "Buildpacks hinzufügen" und "Aptfile-Datei erstellen" erforderlich. Da das Aptfile in den Quellen vorbereitet ist, fügen Sie nur Buildpacks mit Heroku hinzu. Fügen Sie "https://github.com/heroku/heroku-buildpack-apt" in Buildpacks auf der Registerkarte "Einstellungen" hinzu.

screenshot.179.png

Kehren Sie zur Registerkarte Bereitstellen zurück und stellen Sie bereit. Wählen Sie diesmal Manuelle Bereitstellung. screenshot.177.png

③ API abgeschlossen !?

Wenn Deploy Glück hat und erfolgreich ist, klicken Sie oben rechts auf dem Heroku-Bildschirm auf "App öffnen". {“detail”:”Not Found”} Hast du so ein Display bekommen? Es ist ein Fehler! !! Es tut mir leid für diejenigen, die sagen.

Um die von Ihnen erstellte API aufzurufen, können Sie einfach / docs nach der URL hinzufügen. screenshot.182.png

Sie können es tatsächlich ausprobieren, indem Sie auf "Try it Out" klicken. screenshot.183.png

Wählen Sie das Bild aus, das Sie erkennen möchten, und führen Sie es aus. Ist das Ergebnis so zurückgekommen? screenshot.184.png

** (Hinweis) Informationen zur Bildgröße ** Die Bildgröße beträgt 0,2 MB oder weniger. Es kann nicht richtig erkannt werden, wenn die Größe groß ist. Es scheint, dass verschiedene Anpassungen notwendig sind.

abschließend

Das ist alles. Timer stoppen! War es innerhalb von 5 Minuten? (Lol) Wenn es nicht funktioniert hat, tut es mir wirklich leid: Sweat_smile: Es tut mir leid, dass ich mich nur entschuldigt und es nicht gelöst habe: Sweat_smile :: Sweat_smile: Ich wusste nicht, wie ich FastAPI mit Heroku bereitstellen sollte, also habe ich einen Artikel erstellt. Ich hoffe es hilft jemandem: erröten:

Recommended Posts

Kann in 5 Minuten erledigt werden! Erstellen Sie eine Gesichtserkennungs-API mit Fast API und OpenCV und veröffentlichen Sie sie auf Heroku
Wenn ihr in der Scope-Küche das mit einem Rand machen könnt ~ ♪
Überlegen Sie, wann Sie mit Python3 und Scala3 in 10 Jahren gute Arbeit leisten können.
Sie können es in 3 Minuten tun! So erstellen Sie einen funktionierenden QR-Code (GIF)!
Bis Sie mit Python unter Windows 7 eine maschinelle Lernumgebung erstellen und ausführen
Zeichnen Sie eine Aquarellillusion mit Kantenerkennung in Python3 und openCV3
Was Sie mit API Vol.1 tun können
[Kann in 10 Minuten erledigt werden] Erstellen Sie schnell eine lokale Website mit Django
Bis die mit Flasche erstellte Webanwendung auf Heroku veröffentlicht (bereitgestellt) wird
Erstellen Sie eine saubere Datenbank zum Testen mit FastAPI und führen Sie Unittest of API mit pytest aus
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Sie können auch mit Python problemlos eine GUI erstellen
[Für Anfänger] Sie können es von Grund auf neu machen! Erstellen von APIs mit AWS SAM und Ausgeben von Open API-Dokumenten in Python
Schritte zum schnellen Erstellen einer umfassenden Lernumgebung auf einem Mac mit TensorFlow und OpenCV
Was Sie mit Tensorflow 2.x tun können und was nicht
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Wenn Sie TinderBot in Python schreiben, kann sie das tun
Ein Hinweis beim Berühren der Gesichtserkennungs-API von Microsoft mit Python
SVG-Diagramm mit matplotlib mit Heroku erstellen (auf Japanisch angezeigt)
Erstellen Sie ein Bereitstellungsskript mit Stoff und Küche und verwenden Sie es erneut
Erstellen Sie eine Web-API, die Bilder mit Django liefern kann
Gesichtserkennung mit Python + OpenCV
Anime-Gesichtserkennung mit OpenCV
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Erstellen Sie eine temporäre Datei mit Django als Zip und geben Sie sie zurück
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
So stellen Sie eine Django-App in nur 5 Minuten für Heroku bereit
ZOOM, indem Sie Ihr Gesicht durch ein Twitter-Symbol mit openCV-Gesichtserkennung ersetzen
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
So fügen Sie OpenCV in Raspberry Pi ein und sammeln mit Python ganz einfach Bilder von Gesichtserkennungsergebnissen
Schritte zum Erstellen eines allgemeinen Benutzers in CentOs und zum Ausführen des Befehls sudo (Hinweis)