Nano Hash - криптовалюты, майнинг, программирование

Ярлыки изображений клиентской библиотеки Google Cloud Vision (PHP) — количество результатов?

Я использую упомянутую выше библиотеку (клиентская библиотека Google Cloud Vision v1) в PHP для назначения меток изображениям... пока все хорошо. Все это работает, за исключением того, что он возвращает меньше результатов, чем на тестовой странице Google... насколько я понимаю, это связано с параметром "max_results", который по умолчанию равен 10, но я не могу найти, где/как установить это вручную... Был аналогичный вопрос здесь на Python, и там это было так же просто, как передать его в качестве параметра - я пробовал много вариантов, чтобы сделать это в PHP, но, видимо, я делаю что-то не так...

Вот ссылка на документацию: https://googleapis.github.io/google-cloud-php/#/docs/cloud-vision/v0.19.3/vision/v1/imageannotatorclient?method=labelDetection. I я предполагаю, что мне нужно передать его параметру "OptionalArgs"... но не совсем уверен, как это сделать...

Вот более или менее мой код:

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Vision\V1\ImageAnnotatorClient;

$this->client = new ImageAnnotatorClient();
$response = $this->client->labelDetection(...THE IMAGE...);
$labels = $response->getLabelAnnotations();

if ($labels) {
    foreach ($labels as $label) {
        // do something with $label->getDescription()
    }
}

Кто-нибудь знает, как получить больше результатов в массиве $labels?


Ответы:


1

Новый метод

Поскольку другой ответ, который я предоставил, кажется устаревшим, я собираюсь предоставить образец, в котором используется setMaxResults объекта Feature.

$imageAnnotatorClient = new ImageAnnotatorClient();
$gcsImageUri = 'some/image.jpg';
$source = new ImageSource();
$source->setGcsImageUri($gcsImageUri);
$image = new Image();
$image->setSource($source);
$type = Feature_Type::FACE_DETECTION;
$featuresElement = new Feature();
$featuresElement->setType($type);
$featuresElement->setMaxResults(100); // SET MAX RESULTS HERE
$features = [$featuresElement];
$requestsElement = new AnnotateImageRequest();
$requestsElement->setImage($image);
$requestsElement->setFeatures($features);
$requests = [$requestsElement];
$imageAnnotatorClient->batchAnnotateImages($requests);

Устаревший метод

Значение maxResults указывается в Конструктор изображений

пример этого кода можно найти в исходном коде объекта Image.

 $imageResource = fopen(__DIR__ . '/assets/family-photo.jpg', 'r');
 $image = new Image($imageResource, [
   'FACE_DETECTION',
   'LOGO_DETECTION'
 ], [
     'maxResults' => [
         'FACE_DETECTION' => 1
     ],
     'imageContext' => [
          ....
     ]
   ]
]);
25.03.2019
  • Привет, Крейгтс, Спасибо за ответ. Я видел это в документах и ​​файлах зависимостей, но это просто создает объект, представляющий изображение, которое нужно аннотировать... Я могу успешно это сделать... но как мне на самом деле получить нужные мне метки отсюда? Если я передам этот объект ImageAnnotatorClient-> labelDetection(), он не сработает... насколько я понимаю, вы не должны этого делать. Итак, есть идеи? 26.03.2019

  • 2

    Итак, для тех, кому это все еще может понадобиться, вот рабочий пример

        use Google\Cloud\Vision\Image;
        use Google\Cloud\Vision\VisionClient;
    
        $imageResource = fopen(__DIR__ .'/'. $fileIMG, 'r');
    
        $thePic = new Image($imageResource, [
             'LABEL_DETECTION',
              'LOGO_DETECTION',
              'TEXT_DETECTION'
         ], [
             'maxResults' => [
                 'LABEL_DETECTION' => 20,
                 'LOGO_DETECTION' => 20,
                 'TEXT_DETECTION' => 20
             ],
             'imageContext' => []
         ]);
    
    
        $vision = new VisionClient();
        $result = $vision->annotate($thePic);
    
        $finalLabels = array();
    
        // do the same for $results->text(), $results->logos()
        if($result->labels()){
            foreach ($result->labels() as $key => $annonObj) {
                $tmp = $annonObj->info();
                $finalLabels[] = $tmp['description'];
            }
        }
    

    Но... как говорится в официальной документации

    • Обратите внимание, что этот клиент будет объявлен устаревшим в нашем следующем выпуске. В целях
    • чтобы получать последние функции и обновления, пожалуйста,
    • самое время ознакомиться с {@see Google\Cloud\Vision\V1\ImageAnnotatorClient}.

    Так что мне все еще нужен способ сделать это, используя класс ImageAnnotatorClient... есть какие-нибудь идеи?

    26.03.2019
  • Я обновил свой ответ новым методом установки maxResults. Удачного кодирования! 26.03.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..