猫狗识别;YOLOV8;gradio
时间: 2025-01-07 09:48:47 浏览: 4
### 使用YOLOv8和Gradio实现猫狗图像识别
#### 准备工作
为了构建一个基于YOLOv8的猫狗分类器并集成至Gradio界面,需先安装必要的库。这包括`ultralytics`用于加载预训练好的YOLOv8模型以及`gradio`来创建交互式的Web应用。
```bash
pip install ultralytics gradio
```
#### 加载YOLOv8模型
通过调用`ultralytics.YOLO()`函数指定版本号可轻松获取官方发布的YOLOv8权重文件。对于本案例而言,选择适合目标检测任务的最佳配置至关重要[^2]。
```python
from ultralytics import YOLO
model = YOLO('yolov8n.pt') # Load a pretrained model (recommended for training)
```
#### 数据准备
考虑到已选用Kaggle上提供的Dog and Cat Detection数据集作为素材源,该集合内含3686幅带有标签说明的照片资源[^1]。确保本地环境中有这些图片可供后续处理流程读取利用。
#### 创建预测功能
定义一个接受输入图像路径参数的方法,在其中完成推理操作并将结果返回给前端展示层面上下文中去。
```python
def predict(image_path):
results = model.predict(source=image_path, save=False)[0].boxes.data.tolist()
labels = []
confidences = []
for result in results:
class_id = int(result[-1])
confidence = float(result[4])
if class_id == 0 or class_id == 1: # Assuming classes are indexed as {cat: 0, dog: 1}
labels.append("Cat" if class_id == 0 else "Dog")
confidences.append(confidence)
return {"labels": labels, "confidences": confidences}
```
#### 构建Gradio接口
最后一步就是把上述逻辑封装成易于使用的图形化组件形式呈现出来。借助于`gradio.Interface()`方法能够快速搭建起具备上传照片、执行分析及查看结论等功能于一体的在线平台。
```python
import gradio as gr
demo = gr.Interface(
fn=predict,
inputs=gr.Image(type="filepath"),
outputs=[
gr.Label(label="Detected Objects", num_top_classes=None),
gr.Textbox(label="Confidence Scores")
],
title="Cat vs Dog Detector with YOLOv8",
description="Upload an image to detect whether it contains cats or dogs."
)
if __name__ == "__main__":
demo.launch(debug=True)
```
阅读全文