gpt4 book ai didi

python - 我可以使用所有 CPU 和内核来处理图像吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:15:10 25 4
gpt4 key购买 nike

我是Python编码新手

所以我有一个进行人脸识别的项目,我有20个文件夹,每个文件夹包含4张图像。但是当我运行代码时,编码过程花费了很多时间。

这是我的代码:

import face_recognition
import cv2
import numpy as np
import os
import glob

path = './dataset'
folders = [f for f in glob.glob(path + '**/*', recursive=True)]

known_face_encodings = []
known_face_names = []

for f in folders:
names = f.split('/')[2]
print('encoding file : {}'.format(names))
for images_f in glob.glob(f + '**/*.jpg'):

images = face_recognition.load_image_file(images_f)
location = face_recognition.face_locations(images)
images_encoding = face_recognition.face_encodings(images, known_face_locations = location)[0]
known_face_encodings.append(images_encoding)
known_face_names.append(names)

我可以做些什么来加快编码过程吗?如何?提前致谢

最佳答案

您可以使用它来将处理分成不同的线程:

import threading

def face_recognition_function( f ) :
names = f.split('/')[2]
print('encoding file : {}'.format(names))
for images_f in glob.glob(f + '**/*.jpg'):

images = face_recognition.load_image_file(images_f)
location = face_recognition.face_locations(images)
images_encoding = face_recognition.face_encodings(images, known_face_locations = location)[0]
known_face_encodings.append(images_encoding)
known_face_names.append(names)

threads = []
for f in folders:
t = threading.Thread(target=face_recognition_function, args=(f,))
t.start()
threads.append( t )

# threads work now on your images

for t in threads :
t.join() # wait for the completion

当前版本的代码为每个文件夹启动一个新线程。如果这以某种方式使您的计算机耗尽内存或导致不可预测的结果,您可能需要创建较少的并行线程。不过,对于 20 个文件夹,我认为这里不会发生任何问题。

关于python - 我可以使用所有 CPU 和内核来处理图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58496471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com