我实现了一个简单的人脸识别解决方案。
输入
在我的识别函数中,我解码参考图像和帧以匹配如下
def decode_base64_image(base64_string):
image_data = base64.b64decode(base64_string)
image = Image.open(io.BytesIO(image_data))
image_array = np.array(image)
return image_array
def recognize_face(reference_image_base64, frame_to_match_base64):
# Decode the reference image from base64
reference_image = decode_base64_image(reference_image_base64)
# Decode the frame to match from base64
frame_to_match = decode_base64_image(frame_to_match_base64)
known_face_encodings = face_recognition.face_encodings(reference_image)
...........
执行良好,没有任何问题。
尝试将代码扩展为API,并调用如下函数
# Perform face recognition on the frame
face_data = recognize_face(reference_image_base64, frame_to_match_base64)
但是当我使用 Flask 执行 API 并调用我的测试脚本时,如下所示
# Load the reference image and encode it to base64
reference_image_path = 'FileName.jpg'
with open(reference_image_path, 'rb') as f:
reference_image_bytes = f.read()
reference_image_base64 = base64.b64encode(reference_image_bytes).decode('utf-8')
..............
# Encode the frame to base64
_, frame_to_match_bytes = cv2.imencode('.jpg', frame)
frame_to_match_base64 = base64.b64encode(frame_to_match_bytes).decode('utf-8')
# Prepare the request data
data = {
'reference_image': reference_image_base64,
'frame_to_match': frame_to_match_base64
}
# Send the POST request to the API
response = requests.post('http://localhost:5000/match_face', json=data)
result = response.json().get('result')
API Flask 控制台抛出错误
known_face_encodings=face_recognition.face_encodings(reference_image)
AttributeError:模块“face_recognition”没有属性“face_encodings”
通过在两种情况(正常函数和 API)中添加以下行来确认,两种情况下的相同输出均为 1076
print(f"size of ref image is : {len(reference_image)}")
我在遵循程序或调用顺序时是否遗漏了任何内容? 有什么建议可以尝试吗?
开发环境 -Python 3.10.13 -cv2 4.9.0 -人脸识别1.3.0
尝试将Python中的face_recognition库作为函数 - 成功, 尝试了与 API 相同的代码并进行了一些修改 - 失败
您是否在 GPU 上运行人脸识别?在 GPU 中几乎需要 5-10 毫秒。
尝试使用 dlib==19.24 在 GPU 上运行面部识别,下面我分享 Dockerfile 在 GPU 上构建 dlib。构建 dlib 后,您可以使用它作为基础 docker 镜像,并且可以在此基础镜像上安装人脸识别。
我花了一年的时间来获得这一认可,很乐意提供帮助:)
FROM nvidia/cuda:12.0.0-cudnn8-devel-ubuntu22.04
# Set environment variables for GPU acceleration
ENV CUDA_HOME /usr/local/cuda
ENV LD_LIBRARY_PATH \ $LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
ENV PATH $PATH:/usr/local/cuda/bin
# Install Python 3.10 and required dependencies
RUN apt-get update && apt-get install -y python3 python3-dev python3-pip
RUN apt install -y \
cmake \
build-essential \
libopenblas-dev \
libjpeg-dev \
libpng-dev \
libx11-dev \
libgtk-3-dev \
&& rm -rf /var/lib/apt/lists/*
# Install dlib and its dependencies
RUN pip3 install dlib==19.24.0
# Set the working directory
WORKDIR /app
# Copy your application code into the image
COPY . /app
# Run your application (replace "your_script.py" with your
actual Python script)
CMD ["bash"]