MogFace模型Python入门实战:调用API完成第一个人脸检测程序
MogFace模型Python入门实战:调用API完成第一个人脸检测程序
你是不是也对AI人脸检测感到好奇,想亲手写个程序试试?今天,我们就来一起动手,用Python写一个最简单的程序,调用MogFace模型来检测图片里的人脸。整个过程就像搭积木一样简单,不需要你懂复杂的AI算法,只要会一点Python基础就行。
这篇文章的目标很明确:让你在10分钟内,从零开始,写出一个能跑通的人脸检测程序。我们会从安装一个叫requests的库开始,一步步教你如何向MogFace的WebUI发送请求,拿到检测结果,最后再把检测到的人脸框画在图片上。代码我都准备好了,你只需要复制粘贴,跟着做就行。
1. 动手前的准备工作
在开始写代码之前,我们需要先把“工具箱”准备好。别担心,工具不多,安装也很简单。
1.1 确保Python环境就绪
首先,你得确保电脑上已经安装了Python。打开你的命令行(Windows上是CMD或PowerShell,Mac或Linux上是终端),输入下面的命令检查一下:
python --version或者
python3 --version如果能看到类似Python 3.8.10这样的版本号,说明Python已经装好了。如果提示“找不到命令”,那你需要先去Python官网下载并安装一个,建议选择Python 3.7或以上的版本。
1.2 安装必要的Python库
我们这个程序只需要两个额外的库:requests和matplotlib。
requests:这是Python里用来发送网络请求的“神器”,我们用它来和MogFace的API“对话”。matplotlib:这是一个画图库,我们用它来把检测到的人脸框显示出来。
安装它们只需要一行命令。在命令行里输入:
pip install requests matplotlib如果用的是Mac或Linux,或者你的系统里pip命令对应的是Python 2,可以试试用pip3:
pip3 install requests matplotlib看到“Successfully installed”的字样,就说明安装成功了。
1.3 准备一张测试图片和MogFace服务
最后,准备两样东西:
- 一张包含人脸的图片:找一张你喜欢的照片,或者从网上下载一张清晰的人脸图片,把它保存在你准备写代码的文件夹里。我们假设这张图片叫
test_face.jpg。 - 一个正在运行的MogFace WebUI服务:你需要已经按照MogFace的官方说明,在本地或者某个服务器上启动了它的WebUI界面。通常启动后,它会在本地的一个地址运行,比如
http://127.0.0.1:7860。请确保这个服务是启动状态,我们才能调用它。
好了,工具齐备,我们可以开始写代码了!
2. 编写你的第一个人脸检测程序
我们将把整个程序分成几个小步骤,就像拼图一样,一块块拼起来。完整的代码在最后,你可以先看看整体结构。
2.1 第一步:导入需要的工具包
打开你的代码编辑器(比如VS Code、PyCharm,甚至记事本也行),新建一个Python文件,命名为first_face_detection.py。然后在文件的最开头,把我们需要的“工具”引进来。
import requests import matplotlib.pyplot as plt import matplotlib.patches as patches from PIL import Image import io import jsonrequests:用来发请求。matplotlib.pyplot和patches:用来画图和画框。PIL的Image:用来处理图片。io:用于在内存中处理图片数据。json:用来解析API返回的数据。
2.2 第二步:设置请求的目标和图片
接下来,我们要告诉程序两件事:找谁帮忙(API地址),以及帮我们看哪张图。
# 1. 设置MogFace WebUI的API地址 # 请根据你的实际服务地址修改,默认通常是下面这个 api_url = "http://127.0.0.1:7860/face/detect" # 2. 准备要检测的图片文件路径 image_path = "test_face.jpg" # 请确保这个文件在当前目录下,或者改为你的图片完整路径把api_url里的地址换成你实际运行的MogFace服务地址。image_path就是你的测试图片路径。
2.3 第三步:构建并发送检测请求
这是核心步骤。我们要用requests库把图片“打包”成一个POST请求,发送给MogFace服务。
# 3. 以二进制读取模式打开图片文件 with open(image_path, 'rb') as f: image_data = f.read() # 4. 构建请求数据。WebUI通常通过‘files’参数接收图片 files = {'image': (image_path, image_data, 'image/jpeg')} # 如果是png图片,mime类型可改为‘image/png’ # 5. 发送POST请求到API try: response = requests.post(api_url, files=files) # 检查请求是否成功(HTTP状态码为200表示成功) response.raise_for_status() print("请求成功!") except requests.exceptions.RequestException as e: print(f"请求失败: {e}") exit(1) # 如果请求失败,就退出程序这段代码做了几件事:读取图片、把图片数据装进请求里、然后发送出去。try...except是为了捕获网络错误,让程序更健壮。
2.4 第四步:解析API返回的结果
服务器处理完我们的图片后,会返回一个结果。这个结果通常是JSON格式的文本,里面包含了检测到的所有人脸信息。
# 6. 解析返回的JSON结果 result = response.json() print("原始返回结果:", json.dumps(result, indent=2)) # 美化打印一下,方便查看 # 7. 提取人脸框信息 # 注意:不同API返回的字段名可能略有不同,这里以常见的‘bbox’(边界框)为例 # bbox通常是一个列表,格式为 [x_min, y_min, x_max, y_max],即左上角和右下角坐标 if 'faces' in result and result['faces']: faces = result['faces'] print(f"共检测到 {len(faces)} 张人脸。") for i, face in enumerate(faces): bbox = face.get('bbox', []) if bbox and len(bbox) == 4: print(f"人脸 {i+1}: 坐标 {bbox}") else: print("未检测到人脸或返回格式与预期不符。") faces = []这里的关键是理解返回数据的结构。我们假设结果里有一个faces列表,每个人脸信息里包含一个bbox(边界框)。你需要根据MogFace API实际返回的字段名稍作调整。
2.5 第五步:将检测结果可视化
光看数字坐标不够直观,我们把检测框画到原图上看看。
# 8. 用matplotlib绘制原图并标注人脸框 if faces: # 打开原始图片 img = Image.open(image_path) fig, ax = plt.subplots(1, figsize=(10, 10)) ax.imshow(img) # 为每个检测到的人脸画一个红色矩形框 for i, face in enumerate(faces): bbox = face.get('bbox', []) if bbox and len(bbox) == 4: x_min, y_min, x_max, y_max = bbox # 计算矩形的宽和高 width = x_max - x_min height = y_max - y_min # 创建矩形框并添加到图中 rect = patches.Rectangle((x_min, y_min), width, height, linewidth=2, edgecolor='r', facecolor='none') ax.add_patch(rect) # 可选:在框上方添加序号标签 ax.text(x_min, y_min - 5, f'Face {i+1}', color='r', fontsize=12, weight='bold') ax.axis('off') # 不显示坐标轴 plt.title("MogFace 人脸检测结果") plt.show() else: print("没有可显示的人脸检测结果。")这段代码用matplotlib打开图片,然后根据每个人脸的坐标信息,画上一个红色的矩形框,并标上序号。最后把图显示出来。
3. 运行你的程序并查看结果
现在,把上面所有代码段按顺序组合起来,保存到first_face_detection.py文件中。确保你的测试图片和这个Python文件在同一个文件夹下,并且MogFace服务正在运行。
在命令行中,导航到文件所在目录,运行:
python first_face_detection.py如果一切顺利,你会先在命令行里看到“请求成功!”以及检测到的人脸坐标信息。接着,会弹出一个新的窗口,显示你的图片,上面用红框标出了所有检测到的人脸。
恭喜你!你的第一个调用AI模型API的程序已经成功运行了。
4. 可能遇到的问题和小技巧
第一次运行难免会遇到点小麻烦,这里有几个常见问题的排查思路:
- 连接错误:检查
api_url地址是否正确,以及MogFace WebUI服务是否真的启动了。可以在浏览器里访问一下http://127.0.0.1:7860看看。 - 图片读取错误:检查
image_path路径是否正确,文件名有没有拼写错误。 - 返回结果解析错误:这是最常见的问题。API返回的JSON结构可能和示例代码中假设的 (
result['faces']) 不一样。请务必仔细查看第2.4步中print打印出的“原始返回结果”。根据实际看到的字段名,修改代码中提取faces和bbox的部分。 - 没有弹出图片窗口:如果你在服务器或无图形界面的环境中运行,
plt.show()可能无法工作。可以改用plt.savefig('result.jpg')把结果保存为图片文件。
小技巧:你可以尝试换不同的图片(单人、多人、远景、近景),看看检测效果。也可以试着调整矩形框的颜色、粗细,让可视化效果更符合你的喜好。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
