Python实现自动物体识别---基于深度学习的AI应用实战

在AI和CV领域,自动物体识别是一个非常热门且实用的任务,通过深度学习,我们可以让计算机自动识别图片或视频中的各种物体,比如人、车、动物等。现在我将带你一步步用Python和PyTorch实现一个简单的自动物体识别系统,助你快速上手AI项目实战,赶紧行动起来吧。。。😎

一、环境准备

采用PyTorch以及其配套的`torchvision`库,调用成熟的预训练模型(Faster R-CNN)来快速实现目标检测。

  1. 安装依赖

建议使用Anaconda或虚拟环境,避免包冲突。

bash

pip install torch torchvision pillow matplotlib

二、核心代码编写

下面是完整的Python代码。该代码会自动下载并加载Faster R-CNN的预训练模型,对图片进行物体检测,并用不同颜色的框将识别出的物体标记出来。

python 复制代码
import torch
from torchvision.models.detection import fasterrcnn_resnet50_fpn
from torchvision.transforms import functional as F
from PIL import Image
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
python 复制代码
# 1. 加载模型并设置为评估模式
def load_model():
    model = fasterrcnn_resnet50_fpn(weights="DEFAULT")
    model.eval()
    return model
python 复制代码
# 2. COCO类别标签
COCO_INSTANCE_CATEGORY_NAMES = [
    '__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus',
    'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'N/A', 'stop sign',
    'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
    'elephant', 'bear', 'zebra', 'giraffe', 'N/A', 'backpack', 'umbrella', 'N/A',
    'N/A', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard',
    'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard',
    'surfboard', 'tennis racket', 'bottle', 'N/A', 'wine glass', 'cup', 'fork',
    'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli',
    'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant',
    'bed', 'N/A', 'dining table', 'N/A', 'N/A', 'toilet', 'N/A', 'tv', 'laptop',
    'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster',
    'sink', 'refrigerator', 'N/A', 'book', 'clock', 'vase', 'scissors',
    'teddy bear', 'hair drier', 'toothbrush'
]
python 复制代码
# 3. 目标检测预测与可视化
def predict(image_path, threshold=0.5):
    # 加载预训练模型
    model = load_model()
    # 加载图片
    image = Image.open(image_path).convert("RGB")
    img_tensor = F.to_tensor(image).unsqueeze(0)

    # 推理
    with torch.no_grad():
        outputs = model(img_tensor)

    # 解析输出
    pred_scores = outputs[0]['scores'].cpu().numpy()
    pred_labels = outputs[0]['labels'].cpu().numpy()
    pred_boxes = outputs[0]['boxes'].cpu().numpy()

    # 只保留分数高于阈值的目标
    valid = pred_scores >= threshold
    boxes = pred_boxes[valid]
    labels = pred_labels[valid]
    scores = pred_scores[valid]

    # 可视化
    fig, ax = plt.subplots(1, figsize=(12, 9))
    ax.imshow(np.array(image))
    for box, label, score in zip(boxes, labels, scores):
        xmin, ymin, xmax, ymax = box
        rect = patches.Rectangle(
            (xmin, ymin), xmax-xmin, ymax-ymin,
            linewidth=2, edgecolor='red', facecolor='none'
        )
        ax.add_patch(rect)
        ax.text(
            xmin, ymin,
            f'{COCO_INSTANCE_CATEGORY_NAMES[label]}: {score:.2f}',
            color='white', fontsize=10,
            bbox=dict(facecolor='red', alpha=0.5, edgecolor='none', pad=0.5)
        )
    ax.axis('off')
    plt.tight_layout()
    plt.show()

# 示例用法(取消注释后使用)
# predict('your_image.jpg', threshold=0.5)

三、实战效果展示

  1. 准备一张图片,比如`image.jpg`。

  2. 运行上述代码后,调用:

python

predict('your_image.jpg')

  1. 程序会自动弹窗显示识别结果,所有识别出的物体会被红框标出,并标注类别和置信度。

四、小结

利用Python和PyTorch,无需从零训练模型,就可以快速实现一个高效的自动物体识别AI系统。随着AI技术的普及,物体识别将在更多领域落地应用。

赶紧动手试试吧!

*本项目可用于静态图片识别,稍作修改即可扩展到摄像头实时检测。

  • 支持多种模型替换,如YOLO、SSD等,效果和速度更佳。
  • 可二次开发用于智能安防、自动驾驶、无人零售等场景。*
    文章原创,转载请注明出处
相关推荐
chao_78939 分钟前
二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
python·线性代数·算法·leetcode·矩阵
金玉满堂@bj1 小时前
PyCharm 中 Python 解释器的添加选项及作用
ide·python·pycharm
程序员三藏1 小时前
如何使用Pytest进行测试?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
随心点儿2 小时前
使用python 将多个docx文件合并为一个word
开发语言·python·多个word合并为一个
不学无术の码农2 小时前
《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
开发语言·python
sleepybear11132 小时前
在Ubuntu上从零开始编译并运行Home Assistant源码并集成HACS与小米开源的Ha Xiaomi Home
python·智能家居·小米·home assistant·米家·ha xiaomi home
小阿鑫2 小时前
AI领域又新增协议: AG-UI
ai·agent·mcp·a2a·ag-ui
纪伊路上盛名在2 小时前
(鱼书)深度学习入门1:python入门
人工智能·python·深度学习
夏末蝉未鸣012 小时前
python transformers笔记(TrainingArguments类)
python·自然语言处理·transformer
德育处主任Pro2 小时前
「py数据分析」04如何将 Python 爬取的数据保存为 CSV 文件
数据库·python·数据分析