Probieren Sie die ähnliche Suche von Image Search mit Java SDK [Registrierung] aus.

Einführung

Beim letzten Mal habe ich ein Bild mit der Importfunktion der Bildsuche registriert. Mit der Importfunktion können nur die Parameter für V1 registriert werden, und die für V2 neu hinzugefügten Parameter können nicht registriert werden ~~. ** Es ist fertig. Es tut mir Leid. ** ** **

Daher denke ich, dass es besser ist, sich mithilfe der API zu registrieren, um Daten in die Bildsuche einzugeben. Bei der Registrierung von Daten sind einige Punkte zu beachten, daher möchte ich diese Punkte beschreiben.

So registrieren Sie Daten

Dieses Mal werden wir uns mit dem Java SDK registrieren. Informationen zum Aufbau der Umgebung finden Sie unter [Suchen].

SimpleAdd.java


package imagesearch.sample;

import java.io.InputStream;
import java.util.Base64;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.imagesearch.model.v20190325.AddImageRequest;
import com.aliyuncs.imagesearch.model.v20190325.AddImageResponse;
import com.aliyuncs.imagesearch.model.v20190325.AddImageResponse.PicInfo;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class SimpleAdd {
    /** AccessKey */
    private static final String ACCESS_KEY = "XXXXXXXXXXXXXxxx";
    /** SeacretKey */
    private static final String KEY_SEACRET = "YYYYYYYYYYYYYYY";

    public static void main(String[] args) throws Exception {
        //Initialisieren(Fall der Region Tokio
        DefaultProfile.addEndpoint("ap-northeast-1", "ImageSearch", "imagesearch.ap-northeast-1.aliyuncs.com");
        IClientProfile profile = DefaultProfile.getProfile("ap-northeast-1", ACCESS_KEY, KEY_SEACRET);
        IAcsClient client = new DefaultAcsClient(profile);

        AddImageRequest request = new AddImageRequest();
        request.setInstanceName("itemsearch");
        request.setProductId("id-0001");
        request.setPicName("item0001");
        request.setCategoryId(9);
        request.setCrop(true);
        request.setIntAttr(1000);
        request.setStrAttr("Möbel: Stuhl");
        request.setCustomContent("{'sample': 'Stichprobe'}");
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        InputStream is = loader.getResourceAsStream("item01.jpg ");
        String image = Base64.getEncoder().encodeToString(is.readAllBytes());
        request.setPicContent(image);

        AddImageResponse response = client.getAcsResponse(request);

        // Debug
        boolean checkShowJsonItemName = response.checkShowJsonItemName();
        Integer code = response.getCode();
        String message = response.getMessage();
        String requestId = response.getRequestId();
        Boolean success = response.getSuccess();
        PicInfo picInfo = response.getPicInfo();
        Integer categoryId = picInfo.getCategoryId();
        String region = picInfo.getRegion();

        System.out.printf("requestId:%s%nmessage:%s%ncheckShowJsonItemName:%s%ncode:%s%nsuccess:%s%n", requestId, message, checkShowJsonItemName, code, success);
        System.out.println("PicInfo");
        System.out.printf("\tcategoryId:%s%n\tregion:%s%n", categoryId, region);
    }
}
requestId:F009FFA3-D94C-4C95-A8D1-957F7EE06591
message:success
checkShowJsonItemName:false
code:0
success:true
PicInfo
        categoryId:9
        region:140,474,36,578

Parameterbeschreibung

ProductId

request.setProductId(productId);

Eingabe erforderlich. Unterstützt Produkt-IDs mit bis zu 512 Zeichen. Sie können mehrere Bilder in ein Produkt aufnehmen.

PicName

request.setPicName(picName);

Eingabe erforderlich. Unterstützt Bildnamen mit bis zu 512 Zeichen.

  1. Identifizieren Sie das Bild mit ProductId + PicName.
  2. Wenn das mehrfach hinzugefügte Bild dieselbe ProductId + PicName hat, wird das zuletzt hinzugefügte Bild überschrieben.

Durch die Registrierung mehrerer Bilder für ein Produkt können Sie die Genauigkeit der Suche verbessern. Ich denke, es ist gut, einige Musterbilder wie Frontbild und Diagonalbild zu registrieren.

CategoryId

request.setCategoryId(9);

Die Eingabe ist optional. Bildkategorie.

  1. Für die Produktsuche: Wenn eine Kategorie festgelegt ist, hat diese Einstellung Vorrang. Andernfalls führt das System eine Kategorievorhersage durch und Sie können die Ergebnisse der vorhergesagten Kategorie in Antwort abrufen.
  2. Für die universelle Suche: Das System setzt die Kategorie auf 88888888, unabhängig davon, ob die Kategorie eingestellt ist.

Konfigurierbare Kategorien

Kategorie ID Erläuterung
0 Spitzen
1 Kleid
2 Böden
3 Tasche
4 Schuhe
5 Zubehör
6 Snack
7 Bilden
8 Flasche trinken
9 Möbel
20 Spielzeug
21 Unterwäsche
22 Digitale Geräte
88888888 Andere

PicContent

request.setPicContent(encodePicContent);

Eingabe erforderlich. Base64-codierter Bildinhalt. Unterstützt Bilder mit einer Größe von bis zu 2 MB und einer Sendelatenz von 5 Sekunden. Derzeit werden nur JPG- und PNG-Bildformate unterstützt. Sowohl vertikale als auch horizontale Pixel müssen zwischen 200 und 1024 liegen, und das Bild darf keine Rotationsinformationen enthalten.

Im Produktionsbetrieb ist es möglicherweise besser, die Konvertierungslogik vor der Registrierung einzuschließen. Außerdem weiß ich nicht, was es bedeutet, hier eine Wartezeit von 5 Sekunden für die Übertragung zu unterstützen. .. .. was willst du. Wenn jemand weiß, lassen Sie es mich bitte wissen. (Ich werde es bald in der Quelle überprüfen ...)

Crop

request.setCrop(true);

Die Eingabe ist optional. Unabhängig davon, ob eine Subjekterkennung erforderlich ist, ist die Standardeinstellung "true".

  1. Wenn true, erkennt das System das Subjekt und führt eine Suche nach dem erkannten Subjekt durch. Sie können das Ergebnis der Betrefferkennung mit Antwort erhalten.
  2. Wenn false, wird das Motiv nicht erkannt und als Ganzes gesucht.

Bei der Produktsuche denke ich, dass wahr in Ordnung ist. Wenn Sie beispielsweise nach der Atmosphäre eines Raums suchen möchten, können Sie sich mit false registrieren.

Region

request.setRegion("280,486,232,351");

Die Eingabe ist optional. Der Motivbereich des Bildes, ausgedrückt im Format x1, x2, y1, y2, x1, y1, ist der obere linke Punkt, x2, y2 ist der untere rechte Punkt. Wenn der Benutzer eine Region festlegt, wird die Suche in dieser Region unabhängig vom Wert des Crop-Parameters durchgeführt.

Wenn das zu registrierende Bild mehrere Objekte enthält (z. B. wenn versucht wird, einen Stuhl zu registrieren und ein Vorhang oder Tisch ebenfalls angezeigt wird), stellen Sie die Positionsinformationen des Zielobjekts ein, um die Genauigkeit der Suche zu verbessern. Sie können die Genauigkeit der Suche verbessern.

IntAttr

request.setIntAttr(intAttr);

Die Eingabe ist optional. Dieses Integer-Attribut, das beim Filtern zum Filtern verwendet werden kann, wird bei der Suche zurückgegeben. Sie können beispielsweise IntAttr für jedes Site-Image / Benutzer-Image festlegen und diese filtern, wenn sie durchsucht werden.

Parameter, die für Filter verwendet werden können, die aus V2 hinzugefügt wurden. Es ist jetzt möglich, in Kombination mit StrAttr zu filtern, was später beschrieben wird. Mithilfe eines Filters können Sie Daten aus der Bildsuche abrufen, die den Filterbedingungen entsprechen. Es ist praktisch, weil ich nach dem Abrufen der Daten filtern musste. Hoffentlich wäre es hilfreich, mehrere Werte einstellen zu können. .. .. Die Filterbedingungen sind ">,> =, <, <=, =". Wenn Sie den Preis für das Produkt festlegen, können Sie meiner Meinung nach die Produkte von 10.000 bis 30.000 Yen eingrenzen, die auf EC-Websites üblich sind.

StrAttr

request.setStrAttr(strAttr);

Die Eingabe ist optional. Unterstützt Zeichenfolgentypattribute mit bis zu 128 Zeichen. Es kann zum Filtern bei der Suche verwendet werden. Dieses Feld wird bei der Suche zurückgegeben.

Hier können Sie eine Zeichenfolge festlegen und filtern. Die Filterbedingung, die verwendet werden kann, ist "=,! =". Darüber hinaus ist es ein Filter mit einer genauen Übereinstimmung. Es ist ziemlich unpraktisch. .. .. Eine realistische Möglichkeit besteht darin, Parameter in Bits umzuwandeln und zu setzen. .. .. Es ist immer noch schwer zu bedienen. Es wäre sehr hilfreich, wenn Sie mehrere Parameter festlegen und reguläre Ausdrücke verwenden könnten.

CustomContent

request.setCustomContent("Benutzerdefiniert");

Die Eingabe ist optional. Unterstützt benutzerdefinierte Inhalte mit bis zu 4096 Zeichen. Dieses Feld wird bei der Suche zurückgegeben. Sie können beispielsweise Text wie eine Bildbeschreibung hinzufügen.

Sie können die Verwendung vereinfachen, indem Sie JSON usw. festlegen.

Systemlimit

Systemlimits-Benutzerhandbuch | Alibaba Cloud Document Center https://jp.alibabacloud.com/help/doc-detail/74408.htm

Hier sind einige Dinge zu beachten, die Sie bei der Registrierung beachten sollten.

  1. Die Bildgröße beträgt 2 MB oder weniger, die Pixel für Länge und Breite 200 oder mehr und 1024 oder weniger
  2. Unterstützt zwei Arten von Bildern, JPG und PNG. Bilder können keine Rotationsinformationen enthalten
  3. Einschränkungen bei der Verwendung der Parallelverarbeitung
  4. Sie können die Anzahl der Suchvorgänge und zusätzlichen parallelen Prozesse (Abfrage / Sekunde (QPS), die beim Erstellen einer Instanz ausgewählt wurden) auf der Konsole überprüfen. Derzeit können Sie 5 Abfragen pro Sekunde oder 10 Abfragen pro Sekunde auswählen. Dies bedeutet, dass Sie bis zu 5 oder 10 Suchanfragen pro Sekunde parallel verarbeiten können. (Maximal 1 Anfrage pro Sekunde für die kostenlose Version)
  5. Die Standardabfrage / Sekunde (QPS) für Löschvorgänge ist 20. Dies bedeutet, dass Sie bis zu 20 Löschanforderungen pro Sekunde parallel verarbeiten können.

Zusammenfassung

Folgende Punkte sind zu beachten

  1. Bildtyp
  2. Bildgröße
  3. Bei kontinuierlicher Registrierung werden API-Aufrufbeschränkungen angewendet
  4. Es ist schwierig, IntAttr und StrAttr zu entwerfen, die für Filterbedingungen verwendet werden können.
  5. Wenn Sie sich mit demselben Schlüssel registrieren, wird dieser überschrieben (beachten Sie, dass es keine Einschränkungen für Primärschlüssel gibt).

Recommended Posts

Probieren Sie die ähnliche Suche von Image Search mit Java SDK [Registrierung] aus.
Versuchen Sie eine ähnliche Suche in der Bildsuche mit dem Java SDK [Suche]
Versuchen Sie es mit dem Java SDK von Hyperledger Iroha
Versuchen Sie die Bildklassifizierung mit TensorFlow Lite unter Android (JAVA).
Versuchen Sie, mit Java zu kratzen [Hinweis]
Versuchen Sie Spark Submit to EMR mit AWS SDK für Java
Versuchen Sie es mit Redis mit Java (jar)
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Versuchen Sie es mit der IBM Java-Methodenverfolgung
[Java] Wo haben Sie versucht, Java zu verwenden?
Versuchen Sie es mit dem Java Framework Nablarch [Web Application]
Versuchen Sie es mit der Stream-API in Java
Java lernen Versuchen Sie es mit einem Scanner oder einer Karte
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie es mit der REST-API von JobScheduler - Java RestClient-Implementierung -
Versuchen Sie es mit der Wii-Fernbedienung in Java
Versuchen Sie, mit Scala mithilfe der Standardbibliothek von Java Text zu einem Bild hinzuzufügen
Versuchen Sie, Firebase Cloud-Funktionen unter Android (Java) zu verwenden.
Versuchen Sie es mit der RestClient Test-Klasse der REST-API-Java von JobScheduler.
Versuchen Sie es mit Sourcetrail (Win-Version) mit Java-Code
Versuchen Sie, die Cloud Vision-API von GCP in Java zu verwenden
Versuchen Sie es mit Sourcetrail (MacOS-Version) mit Java-Code
Versuchen Sie, mit JZOS von Java aus auf das Dataset zuzugreifen
Versuchen Sie die Kommunikation mit gRPC auf einem Android + Java-Server
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java