Bereiten Sie sich vor dem Start auf den nächsten Schnellstart vor. Da es sich bei 1-3 um Projekteinstellungen handelt, entsprechen sie den Anweisungen im Schnellstart, 4,5 unterscheiden sich jedoch geringfügig.
Stellen Sie sicher, dass das in 1 erstellte Projekt mit Ihrem Rechnungskonto verknüpft ist. (Die Gültigkeit der Abrechnung erfolgt auf eigenes Risiko.)
Wenn Sie auf die Schaltfläche "Aktivieren" klicken, wird der Bildschirm zur Auswahl eines Projekts angezeigt. Wählen Sie das in 1 und "Weiter" erstellte Projekt aus. (In der Vergangenheit gab es Zeiten, in denen die API nicht aktiviert werden konnte, aber als ich das Projekt neu erstellte, funktionierte es einwandfrei. Ich kenne die Ursache nicht.)
Was ist ein Dienstkonto?
Ein Dienstkonto ist ein spezielles Google-Konto, das zu einer Anwendung oder virtuellen Maschine (VM) gehört und nicht zu einem einzelnen Endbenutzer. Anwendungen können ein Dienstkonto verwenden, um die Dienst-API von Google aufzurufen, ohne dass Benutzer daran beteiligt sein müssen.
Wenn beispielsweise eine Compute Engine-VM auf einem Dienstkonto ausgeführt wird, können Sie diesem Konto Zugriff auf die erforderlichen Ressourcen gewähren. Das Dienstkonto wird somit zur Identität des Dienstes, und die Berechtigungen des Dienstkontos steuern die Ressourcen, auf die der Dienst zugreifen kann.
Durch Festlegen der Berechtigungen des Dienstkontos steuern Sie die Ressourcen, auf die der Dienst zugreifen kann. Im Moment möchte ich ein Dienstkonto mit nur der Berechtigung "Anzeigen" für "Speichern" erstellen. (Um das Video einmal in "Google Cloud Storage" hochzuladen und von dort zu laden.)
Als ich es über den Schnellstart-Link erstellt habe, kannte ich die Ursache nicht, aber es hat nicht funktioniert
--Geben Sie den Namen des Dienstkontos ein und wählen Sie "Erstellen"
--Wählen Sie Speicher> Speicherobjekt-Viewer
aus Rolle
--Wählen Sie "Weiter"
--Wählen Sie "Erstellen" aus "Schlüssel erstellen"
Da der Dateipfad der JSON-Datei angegeben werden muss, wird die Umgebungsvariable beim Schnellstart festgelegt. Hier wird der Pfad direkt vom Labor angegeben, sodass keine Einstellung erforderlich ist.
Gehen Sie zu Speicherbrowser - Speicher - Google Cloud Platform (https://console.cloud.google.com/storage/browser?hl=ja) und wählen Sie "Bucket erstellen".
Geben Sie einen Namen für Ihren Bucket ein und wählen Sie "Erstellen". (Regionen hier interessieren mich nicht.)
Laden Sie das Video hoch, sobald der Bucket erstellt wurde.
Ich habe dog.mp4
direkt unter den Eimer hochgeladen.
Bitte achten Sie auf die kostenlose Speicherkapazität und Downloadkapazität.
Cloud Storage-Preise| Cloud Storage | Google Cloud
Auf Colaboratory,
--File
> Neues Notizbuch für Python 3
Machen Sie ein neues Notizbuch aus.
Installieren Sie das Python-Paket "Cloud Video Intelligence API".
!pip install -U google-cloud-videointelligence
Laden Sie die JSON-Datei hoch, die Sie beim Erstellen des Dienstkontos aus "Datei" im linken Bereich von Colaboratory heruntergeladen haben.
import json
from google.oauth2 import service_account
service_account_key_name = <JSON-Dateiname>
info = json.load(open(service_account_key_name))
creds = service_account.Credentials.from_service_account_info(info)
Erstellen Sie einen Client, indem Sie hier das Zertifikat angeben.
from google.cloud import videointelligence
video_client = videointelligence.VideoIntelligenceServiceClient(credentials=creds)
Dieses Mal habe ich die Videodatei direkt unter den Bucket hochgeladen, also wie folgt.
video_url = "gs://<Eimername>/<Name der Videodatei>"
Von hier aus ist es dasselbe wie beim Schnellstart.
features = [videointelligence.enums.Feature.LABEL_DETECTION]
operation = video_client.annotate_video(
video_url, features=features)
print('\nProcessing video for label annotations:')
result = operation.result(timeout=120)
print('\nFinished processing.')
# first result is retrieved because a single video was processed
segment_labels = result.annotation_results[0].segment_label_annotations
for i, segment_label in enumerate(segment_labels):
print('Video label description: {}'.format(
segment_label.entity.description))
for category_entity in segment_label.category_entities:
print('\tLabel category description: {}'.format(
category_entity.description))
for i, segment in enumerate(segment_label.segments):
start_time = (segment.segment.start_time_offset.seconds +
segment.segment.start_time_offset.nanos / 1e9)
end_time = (segment.segment.end_time_offset.seconds +
segment.segment.end_time_offset.nanos / 1e9)
positions = '{}s to {}s'.format(start_time, end_time)
confidence = segment.confidence
print('\tSegment {}: {}'.format(i, positions))
print('\tConfidence: {}'.format(confidence))
print('\n')
Das Analyseergebnis wird sicher angezeigt.
PermissionDenied: 403 The caller does not have permission
Die Berechtigungen, die Mitgliedern (Dienstkonten) gewährt wurden, wurden von der Seite IAM-IAM und Administration-Google Cloud Platform entfernt. Danach habe ich das Dienstkonto neu erstellt und es hat funktioniert. Die Ursache ist jedoch unbekannt.
Recommended Posts