当前位置: 首页 > news >正文

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的预训练模型,对图片进行物体检测,并用不同颜色的框将识别出的物体标记出来。

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
# 1. 加载模型并设置为评估模式
def load_model():model = fasterrcnn_resnet50_fpn(weights="DEFAULT")model.eval()return model
# 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'
]
# 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 >= thresholdboxes = 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 = boxrect = 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')


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

四、小结

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

赶紧动手试试吧!

本项目可用于静态图片识别,稍作修改即可扩展到摄像头实时检测。
- 支持多种模型替换,如YOLO、SSD等,效果和速度更佳。
- 可二次开发用于智能安防、自动驾驶、无人零售等场景。

文章原创,转载请注明出处

http://www.xdnf.cn/news/679339.html

相关文章:

  • 【Git】Commit Hash vs Change-Id
  • 浏览器缓存详细介绍
  • API平台(API网关)的API监控预警机制
  • 欧几里得 ---> 裴蜀定理 ---> 拓展欧几里得
  • 使用MATLAB求解微分方程:从基础到实践
  • ProfiNet转MODBUSTCP网关模块的实时性保障Logix5000控制器与AltivarProcess变频器同步控制方案
  • 【leetcode】977. 有序数组的平方
  • Microbiome|基于MAG的宏转录组
  • TailwindCSS v4 快速入门教程
  • 在Linuxfb环境下利用海思TDE API实现高效的2D图形加速
  • Java中的日期类详解
  • 数据泄露频发,Facebook的隐私保护是否到位?
  • 12. CSS 布局与样式技巧
  • [网页五子棋][用户模块]数据库设计和配置(MyBatis)、约定前后端交互接口、服务器开发
  • 使用tunasync部署企业内部开源软件镜像站-Centos Stream 9
  • 用ChatGPT辅助UI设计:从需求分析到风格提案的提效秘籍
  • 代码随想录算法训练营第五十一天
  • Day4 记忆内容:priority_queue 高频操作
  • SAAS架构设计2-流程图-注册流程图
  • uni-app 中开发问题汇总
  • 【网络编程】十七、多路转接之 epoll
  • JAVA SE 文件IO
  • Python函数
  • python+tkinter实现GUI界面调用即梦AI文生图片API接口
  • PPO算法里clipfrac变量的作用
  • 《计算机组成原理》第 7 章 - 指令系统
  • 恶意npm与VS Code包窃取数据及加密货币资产
  • 科研级计算服务器 稳定支撑创新研究
  • 系统设计——项目设计经验总结3
  • int c =5; 代码解释