--Die Slide-Version dieses praktischen Materials ist auf dem Speaker Deck ** verfügbar. ――Ich denke, die Folienversion hat ein besseres Design und ist leichter zu sehen. ――Dieser Artikel von Qiita hat andererseits den Vorteil, dass Sie den Quellcode kopieren und einfügen können. ――Ich denke, es wäre gut, wenn sowohl die Folienversion als auch die Qiita-Version zusammen verwendet würden. - https://speakerdeck.com/hayate_h/awshanzuon-sabaresuakitekutiyade-you-ming-ren-shi-bie-sabisuwozuo-rou -
-Verwenden Sie Amazon Rekognition (Image Analysis AI) Und erstellen Sie eine Promi-Identifikations-API.
―― Bereiten Sie zum Beispiel ein Bild von Ken Watanabe vor, einem berühmten Schauspieler, der stolz auf Japan in der Welt ist, und laden Sie es in die diesmal erstellte KI.
"Er / Sie ist Ken Watanabe mit 100% igem Vertrauen."
Wird angezeigt.――Wir stellen kurz die drei diesmal verwendeten Dienste vor. ―― Lassen Sie uns mit der Idee fortfahren, "sich daran zu gewöhnen, anstatt zu lernen".
—— Dienste und Architekturen, bei denen Benutzer den Server nicht kennen müssen. --Hinweis: Dies bedeutet nicht, dass der Server überhaupt nicht vorhanden ist. Der Server wird von AWS verwaltet.
――Es ist ein Service, den AWS für (einen Teil) des Betriebsmanagements übernimmt. ――Der Inhalt und Umfang des Betriebsmanagements, für das Sie verantwortlich sind, hängt vom jeweiligen Service ab. In vielen Fällen bieten wir jedoch nicht nur "regelmäßige Backups erstellen", sondern auch "automatisch skalieren, wenn der Zugriff zunimmt". .. ――Wenn der Umfang des Betriebsmanagements breit ist und die Benutzer fast keinen Aufwand betreiben, wird er häufig als „vollständig verwalteter Dienst“ bezeichnet. ――Selbst wenn es "verwaltet" wird, ist es nicht immer "serverlos".
Greifen Sie auf die AWS Management Console zu und melden Sie sich mit Ihren IAM-Benutzerinformationen an.
https://console.aws.amazon.com/
** Zusätzliche Anmeldeinformationen ** ――In diesem praktischen Verfahren gehen wir davon aus, dass die IAM-Richtlinie ** "AdministratorAccess" dem IAM-Benutzer übergeben wird, der das praktische Vorgehen ** implementiert.
Wenn die Berechtigung "AdministratorAccess" nicht erteilt wird, kann im folgenden Verfahren ein Fehler auftreten, z. B. dass keine Ressource erstellt werden kann.
Fügen Sie in diesem Fall eine entsprechende Richtlinie hinzu und versuchen Sie es erneut. ―― Darüber hinaus waren die auf der folgenden Site beschriebenen IAM-Einstellungen sehr hilfreich.
Es wurde bestätigt, dass alle praktischen Verfahren durchgeführt werden können.
--Drücken Sie auf den Ortsnamen oben rechts auf dem Bildschirm und wählen Sie "Asien-Pazifik (Tokio) ap-nordost-1".
--Drücken Sie die Sprache unten links auf dem Bildschirm und wählen Sie "Japanisch".
Lassen Sie uns zunächst eine Lambda-Funktion erstellen und die grundlegende Verwendung lernen.
Geben Sie auf dem Bildschirm der Verwaltungskonsole im Suchfenster "Lambda" ein und wählen Sie das angezeigte "Lambda" aus.
--Wenn der Lambda-Bildschirm geöffnet wird, klicken Sie auf die Schaltfläche "Funktion erstellen".
Wählen Sie auf dem Bildschirm zur Funktionserstellung Folgendes aus und geben Sie Folgendes ein. --Wählen Sie "Von Grund auf neu erstellen" --Geben Sie "<< Name >> -rekognition-handson" in "Funktionsname" ein --Beispiel: higuchi-rekognition-handson --Wählen Sie "Python 3.8" für "Runtime" --Öffnen Sie "Berechtigungen" - "Standardausführungsrolle ändern" und wählen Sie "Neue Rolle mit grundlegenden Lambda-Berechtigungen erstellen".
Nachdem Sie die obigen Einstellungen vorgenommen haben, klicken Sie unten rechts auf dem Bildschirm auf die Schaltfläche "Funktion erstellen".
Die Lambda-Funktion wird erstellt.
――Ich schreibe den Code, der von nun an funktioniert.
―― Schreiben wir zunächst einfachen Python-Code, um zu erfahren, wie Lambda funktioniert.
lambda_function.py
def lambda_handler(event, context):
a = 'Pen'
b = 'Pineapple'
c = 'Apple'
x = a + b + c + a
return {
'statusCode': 200,
'body': x
}
Drücken Sie nach dem Schreiben die Schaltfläche "Bereitstellen" und dann oben rechts "Test".
Der Bildschirm "Test Event Settings" wird angezeigt. Nachdem Sie die folgenden Einstellungen vorgenommen haben, klicken Sie auf die Schaltfläche "Erstellen". --Wählen Sie "Neues Testereignis erstellen".
Geben Sie "SimpleEvent" als Ereignisnamen ein
--Klicken Sie oben rechts auf "Test".
Der Test wird in dem zuvor erstellten Testereignis ausgeführt.
Lambda wurde getestet.
Wenn Sie oben auf dem Bildschirm "Erfolg" sehen, ist der Code ein Beweis dafür, dass es funktioniert hat.
--Klicken Sie auf Details, um die Ergebnisse der Funktionsausführung zu erweitern. ――Hier ist „body“ „PenPineappleApplePen“, die von Ihnen erwartete Ausgabe.
Detaillierte Protokolle beim Ausführen von Lambda finden Sie unter "CloudWatch-Protokolle". --Klicken Sie auf "Überwachung" -> "CloudWatch-Protokolle anzeigen", um zur Seite "CloudWatch-Protokolle" zu gelangen.
Sie können das Protokoll überprüfen, indem Sie im Bildschirm "Protokolldatenstrom" "20xx / xx / xx [$ LATEST] xxxxxx" auswählen. Bitte benutzen Sie es zum Zeitpunkt des Debacks.
Wenn Sie Logger usw. einstellen, wird das Protokoll hier ausgegeben.
--Wählen Sie oben auf dem Lambda-Bildschirm "Einstellungen"
--Wählen Sie "Bearbeiten" unter "Grundeinstellungen" am unteren Rand des Bildschirms "Einstellungen".
Gehen Sie zum unteren Rand des Bildschirms "Einstellungen bearbeiten" und klicken Sie auf "xxx-Rollen in der IAM-Konsole anzeigen".
Auf einer separaten Registerkarte wird der IAM-Rollenbildschirm geöffnet. --Klicken Sie auf die Schaltfläche "Richtlinie anhängen".
Geben Sie "Rekognition" in das Suchfenster ein, überprüfen Sie die Richtlinie "Amazon RekognitionReadOnlyAccess" und klicken Sie auf die Schaltfläche "Attach Policy".
Stellen Sie auf dem Bildschirm der IAM-Konsole sicher, dass "AmazonRekognitionReadOnlyAccess" angehängt ist.
Sie haben Lambda jetzt die Erlaubnis gegeben, die Anerkennung anzurufen.
Kehrt zum Bildschirm Lambda-Bearbeitungseinstellungen zurück.
Ändern Sie das Timeout auf "10 Sekunden".
Klicken Sie nach den obigen Einstellungen auf die Schaltfläche "Speichern".
lambda_function.py
import boto3
import base64
import logging
import traceback
#Logger-Einstellungen
logger = logging.getLogger()
logger.setLevel(logging.INFO)
#Erstellen Sie eine Erkennungsinstanz
rekognition = boto3.client('rekognition')
# lambda_Definition der Handlerfunktion (Hauptlogik)
def lambda_handler(event, context):
logger.info(f'Received event = {event}')
#Da die Binärdaten im Base64-Format codiert empfangen werden, werden sie in den Bytetyp decodiert.
received_body = base64.b64decode(event['body-json'])
#Schließt von AWS angegebene Dateiinformationen aus (Byte-Zeichenfolge)'\r\n'Körperinformationen der Dateien, die vom 4. und den folgenden hochgeladen wurden)
images = received_body.split(b'\r\n',4)
image = images[4]
#Übergeben Sie die erfassten Bildinformationen im Blob-Format an Rekognition, um die Berühmtheit zu identifizieren
response = rekognition.recognize_celebrities(
Image={'Bytes': image}
)
logger.info(f'Rekognition response = {response}')
try:
#Extrahieren Sie die Zuverlässigkeit des Prominentennamens aus der Erkennungsantwort und antworten Sie dem API-Aufrufer.
label = response['CelebrityFaces'][0]
name = label['Name']
conf = round(label['Face']['Confidence'])
output = f'He/She is {name} with {conf}% confidence.'
logger.info(f'API response = {output}')
return output
except IndexError as e:
#Wenn Sie aus der Antwort von Rekognition keine Informationen zu Prominenten erhalten, bitten Sie sie, ein anderes Foto zu verwenden.
logger.info(f"Coudn't detect celebrities in the Photo. Exception = {e}")
logger.info(traceback.format_exc())
return "Couldn't detect celebrities in the uploaded photo. Please upload another photo."
--Erste Zeile boto3 importieren
response = rekognition.recognize_celebrities (Image = {'Bytes': image})
return Anweisung
―― Von hier aus werden wir API Gateway und Lambda verbinden.
--Klicken Sie oben rechts auf dem Bildschirm auf "API erstellen".
--Klicken Sie auf die Schaltfläche "Erstellen" der REST-API.
--API wird mit "Ressourcen" x "Methoden" entwickelt.
Zum Beispiel "GET to / users" oder "POST to / users / 12345".
Erstellen Sie zunächst eine Ressource. Wählen Sie unter Aktionen die Option Ressource erstellen aus.
Geben Sie "Rekognition" in den Ressourcennamen ein und klicken Sie auf die Schaltfläche "Create Resource".
--Nächste erstellen Sie eine Methode. Wählen Sie nach Auswahl der Ressource Aktionen → Methode erstellen.
--Wählen Sie "POST" aus dem Pulldown-Menü und drücken Sie die "Check Button".
--Wählen Sie im Integrationstyp "Lambda-Funktion", wählen Sie "<< Name >> -rekognition-handson", das zuvor in der Lambda-Funktion erstellt wurde, und klicken Sie dann auf die Schaltfläche "Speichern".
--Wählen Sie "Integrationsanforderung".
Erweitern Sie "Mapping Templates" am unteren Bildschirmrand und wählen Sie "If No Template Defined (Recommended)" im Element "Request Body Passthrough".
Klicken Sie im Element "Inhaltstyp" auf "Zuordnungsvorlage hinzufügen".
Geben Sie im Element "Inhaltstyp" "Multipart / Formulardaten" ein und drücken Sie die Check-Taste.
Am unteren Bildschirmrand wird ein Bildschirm zur Vorlagenerstellung hinzugefügt. --Wählen Sie aus dem Pulldown-Menü für die Vorlagengenerierung "Durchgangsmethodenanforderung" und klicken Sie auf "Speichern".
--Wählen Sie "Einstellungen" auf der linken Seite des Bildschirms und klicken Sie auf "Binären Medientyp hinzufügen" im Element "Binylmedientyp" am unteren Rand des Bildschirms "Einstellungen".
--Geben Sie multipart / form-data
ein und klicken Sie auf die Schaltfläche" Save Save Changes ".
--Wählen Sie "Ressourcen" im linken Bereich des Bildschirms und wählen Sie dann "API bereitstellen" unter "Aktionen" oben auf dem Bildschirm.
Nehmen Sie im API-Bereitstellungsbildschirm die folgenden Einstellungen vor und klicken Sie auf die Schaltfläche "Bereitstellen".
Bereitgestellte Stufe: Wählen Sie "Neue Stufe". --Stufenname: Geben Sie "dev" ein
Wählen Sie im linken Bereich des Bildschirms "Stage" und dann "dev" - "rekognition" - "POST".
Die URL der als "Anruf-URL" erstellten API wird auf der rechten Seite des Bildschirms angezeigt. Kopieren Sie sie.
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Promi-Anerkennung KI zum Anfassen</title>
</head>
<body>
<p>Die Erkennung von Prominenten erfolgt mit Amazon Rekognition, einer Bildidentifizierungs-KI!</p>
<form action="****API-Gateway-URL einfügen****" enctype="multipart/form-data" method="POST">
<input type="file" name="Wählen Sie eine Fotodatei aus" />
<input type="submit" name="hochladen"/>
</form>
</body>
</html>
--Öffnen Sie die erstellte Index.html in Ihrem Browser. (Wählen Sie eine Datei aus und ziehen Sie sie per Drag & Drop in den Browser, um sie zu öffnen.)
―― Zum Beispiel versuchen wir es mit "Watabe of the World", einem Komiker (?), Auf den Japan in der Welt stolz ist.
--Wählen Sie eine Datei und klicken Sie auf "Senden" ...
--"Er / Sie ist Ken Watabe mit 100% Selbstvertrauen."
Wird angezeigt!
--Wählen Sie auf dem API-Gateway-Bildschirm den erstellten "<< Name >> - api-handson" aus.
--Wählen Sie auf dem API-Gateway-Bildschirm den erstellten "<< Name >> - api-handson" aus.
--Wählen Sie mit "Ressource" im linken Bereich des Bildschirms "API löschen" aus der Aktion.
--Wählen Sie auf dem Listenbildschirm "<< Name >> -rekognition-handson".
--Wählen Sie oben auf dem Bildschirm "Überwachung" und klicken Sie auf die Schaltfläche "CloudWatch-Protokoll anzeigen".
Übergänge zum Bildschirm CloudWatch-Protokolle. Wählen Sie unter Aktionen die Option Protokollgruppe löschen aus.
Ein Bestätigungsbildschirm wird angezeigt. Klicken Sie daher auf die Schaltfläche "Löschen".
Kehren Sie zum Lambda-Bildschirm zurück und öffnen Sie "Einstellungen".
Drücken Sie "Bearbeiten" in "Grundeinstellungen" am unteren Rand des Lambda-Bildschirms.
Gehen Sie zum unteren Rand des Bildschirms "Einstellungen bearbeiten" und wählen Sie "xxx-Rollen in der IAM-Konsole anzeigen".
Übergänge zum IAM-Rollenbildschirm. Wählen Sie oben rechts auf dem Bildschirm "Rolle löschen".
Ein Bestätigungsbildschirm wird angezeigt. Klicken Sie daher auf "Ja, löschen".
Kehren Sie zum Lambda-Bildschirm zurück und wählen Sie "Funktion löschen" unter "Aktionen" oben auf dem Bildschirm.
Ein Bestätigungsbildschirm wird angezeigt. Wählen Sie "Löschen".
Die Meldung "Es wurde erfolgreich gelöscht." Wird angezeigt.
** Dies ist das Ende der Reinigung. Danke für deine harte Arbeit. ** ** **
Serviceklassifizierung | Einstufung | Gebühr | Ergänzung |
---|---|---|---|
Gebühren für die Datenkommunikation | Inn zu AWS | 0.000USD/GB | |
〃 | Raus aus AWS | 0.114USD/GB | Erste 1GB-10TB |
CloudWatch | Protokollsammlung | 0.760USD/GB | |
〃 | Protokoll speichern | 0.033USD/GB | |
Lambda | Rechnungsstellung anfordern | 0.20USD/1 Million | |
〃 | Abrechnung der Ausführungszeit | 0.0000002083USD /128MB,100 Millisekunden |
|
API Gateway | REST API | 4.25USD/1 Million | Erste 303,3 Millionen Anrufe eingegangen |
Rekognition | Image | 0.0013USD/1 Bild | Erste 1 Million |
Recommended Posts