在 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.
我似乎无法在 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.