在 python 的 10,000 多张图像上使用 Vision API 的最快方法

Fastest way to use Vision API on 10,000+ images with python

我似乎无法在 python 中找到可以在速度方面与 say DarkNet 竞争的方法。人们会认为会有内置的图像网络处理。我目前正在做的是:

from tqdm import tqdm
from joblib import Parallel, delayed
from google.cloud import vision, firestore


def detect_faces_uri(uri):
    client = vision.ImageAnnotatorClient()
    image = vision.types.Image()
    image.source.image_uri = uri

    response = client.face_detection(image=image)
    faces = response.face_annotations

    if faces:
        print('found face!')
        return uri

list_of_uris = ['gs://example/image.png'*...] # * 10,000+

detected_images = Parallel(n_jobs=12)(delayed(detect_faces_uri)(url) for url in tqdm(list_of_uris))

我一次处理大约 4 - 10 个,我确定可以让它运行得更快吗?

并行执行更多操作会使它完成得更快。您还可以在 single annotate request. For python see the batch_annotate_images 方法中包含 1 张以上的图像。

This 有一个单一请求的例子。您将使用带有 batch_annotate_images.

的请求数组

如果您只想快速将请求发送到 api 并稍后检索结果,您可以使用 asyncBatchAnnotate.