中国海洋大学做英语作业的网站,新手做站必看 手把手教你做网站,网站建设违约,wordpress恢复密码PyTorch 目标检测教程
本教程将介绍如何在 PyTorch 中使用几种常见的目标检测模型#xff0c;包括 Faster R-CNN、SSD 以及 YOLO (You Only Look Once)。我们将涵盖预训练模型的使用、推理、微调#xff0c;以及自定义数据集上的训练。
1. 目标检测概述
目标检测任务不仅要…PyTorch 目标检测教程
本教程将介绍如何在 PyTorch 中使用几种常见的目标检测模型包括 Faster R-CNN、SSD 以及 YOLO (You Only Look Once)。我们将涵盖预训练模型的使用、推理、微调以及自定义数据集上的训练。
1. 目标检测概述
目标检测任务不仅要识别图像中的物体类别还要精确定位物体的边界框。在此任务中每个模型输出一个物体类别标签和一个边界框。
常见目标检测模型
Faster R-CNN基于区域提议方法具有较高的检测精度。SSD (Single Shot MultiBox Detector)单阶段检测器速度较快适合实时应用。YOLO (You Only Look Once)单阶段检测器具有极快的检测速度适合大规模实时检测。
2. 官方文档链接
PyTorch 官方文档Torchvision 模型YOLO 官方实现 YOLOv5 及 PyTorch 版 YOLO 3. Faster R-CNN 模型
3.1 加载 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# 加载预训练的 Faster R-CNN 模型
model fasterrcnn_resnet50_fpn(pretrainedTrue)
model.eval() # 切换为评估模式# 加载和预处理图像
image_path test_image.jpg
image Image.open(image_path)
image_tensor F.to_tensor(image).unsqueeze(0) # 转换为张量并添加批次维度# 将模型和输入图像移动到 GPU如果可用
device torch.device(cuda if torch.cuda.is_available() else cpu)
model.to(device)
image_tensor image_tensor.to(device)# 进行推理
with torch.no_grad():predictions model(image_tensor)# 获取预测的边界框和类别标签
boxes predictions[0][boxes].cpu().numpy() # 预测的边界框
labels predictions[0][labels].cpu().numpy() # 预测的类别标签
scores predictions[0][scores].cpu().numpy() # 预测的分数# 可视化预测结果
fig, ax plt.subplots(1)
ax.imshow(image)# 设置阈值只显示高置信度的检测结果
threshold 0.5
for box, label, score in zip(boxes, labels, scores):if score threshold:rect patches.Rectangle((box[0], box[1]), box[2] - box[0], box[3] - box[1], linewidth2, edgecolorr, facecolornone)ax.add_patch(rect)ax.text(box[0], box[1], f{label}: {score:.2f}, colorwhite, fontsize12, bboxdict(facecolorred, alpha0.5))plt.show()3.2 微调 Faster R-CNN 模型
你可以使用自定义的数据集微调 Faster R-CNN。下面是如何定义自定义数据集并在上面进行训练。
import torch
from torch.utils.data import Dataset
from PIL import Image# 自定义数据集类
class CustomDataset(Dataset):def __init__(self, image_paths, annotations):self.image_paths image_pathsself.annotations annotationsdef __len__(self):return len(self.image_paths)def __getitem__(self, idx):image Image.open(self.image_paths[idx]).convert(RGB)boxes, labels self.annotations[idx]boxes torch.as_tensor(boxes, dtypetorch.float32)labels torch.as_tensor(labels, dtypetorch.int64)target {}target[boxes] boxestarget[labels] labelsimage F.to_tensor(image)return image, targetfrom torch.utils.data import DataLoader
from torchvision.models.detection import fasterrcnn_resnet50_fpn# 加载自定义数据集
dataset CustomDataset(image_paths[img1.jpg, img2.jpg], annotations[([[10, 20, 200, 300]], [1]), ([[30, 40, 180, 220]], [2])])
dataloader DataLoader(dataset, batch_size2, shuffleTrue, collate_fnlambda x: tuple(zip(*x)))# 加载预训练的 Faster R-CNN 模型
model fasterrcnn_resnet50_fpn(pretrainedTrue)
num_classes 3
in_features model.roi_heads.box_predictor.cls_score.in_features
model.roi_heads.box_predictor torch.nn.Linear(in_features, num_classes)# 定义优化器并进行训练
optimizer torch.optim.SGD(model.parameters(), lr0.005, momentum0.9, weight_decay0.0005)# 训练模型
model.train()
for epoch in range(5):for images, targets in dataloader:images list(image.to(device) for image in images)targets [{k: v.to(device) for k, v in t.items()} for t in targets]loss_dict model(images, targets)losses sum(loss for loss in loss_dict.values())optimizer.zero_grad()losses.backward()optimizer.step()print(fEpoch [{epoch1}/5], Loss: {losses.item():.4f})4. SSD 模型
SSDSingle Shot MultiBox Detector是一种速度较快的单阶段检测器。torchvision 也提供了预训练的 SSD 模型。
4.1 使用预训练 SSD 模型进行推理
import torch
from torchvision.models.detection import ssd300_vgg16
from torchvision.transforms import functional as F
from PIL import Image
import matplotlib.pyplot as plt
import matplotlib.patches as patches# 加载预训练的 SSD 模型
model ssd300_vgg16(pretrainedTrue)
model.eval()# 加载和预处理图像
image_path test_image.jpg
image Image.open(image_path).convert(RGB)
image_tensor F.to_tensor(image).unsqueeze(0)# 进行推理
with torch.no_grad():predictions model(image_tensor)# 获取预测的边界框和类别标签
boxes predictions[0][boxes].cpu().numpy()
labels predictions[0][labels].cpu().numpy()
scores predictions[0][scores].cpu().numpy()# 可视化预测结果
fig, ax plt.subplots(1)
ax.imshow(image)threshold 0.5
for box, label, score in zip(boxes, labels, scores):if score threshold:rect patches.Rectangle((box[0], box[1]), box[2] - box[0], box[3] - box[1], linewidth2, edgecolorr, facecolornone)ax.add_patch(rect)ax.text(box[0], box[1], f{label}: {score:.2f}, colorwhite, fontsize12, bboxdict(facecolorred, alpha0.5))plt.show()5. YOLO 模型
YOLOYou Only Look Once是单阶段目标检测器具有非常快的检测速度。YOLOv5 是目前广泛使用的 YOLO 变体官方提供了 PyTorch 版 YOLOv5。
5.1 安装 YOLOv5
首先克隆 YOLOv5 的 GitHub 仓库并安装依赖项。
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt5.2 使用 YOLOv5 进行推理
YOLOv5 提供了一个简单的 API用于进行推理和训练。
import torch# 加载预训练的 YOLOv5 模型
model torch.hub.load(ultralytics/yolov5, yolov5s, pretrainedTrue)# 加载图像并进行推理
image_path test_image.jpg
results model(image_path)# 打印预测结果并显示
results.print() # 打印检测到的结果
results.show() # 显示带有检测框的图像5.3 微调 YOLOv5 模型
你可以使用 YOLOv5 提供的工具在自定义数据集上训练模型。首先准备符合 YOLO 格式的数据集然后使用以下命令进行训练。
python train.py --img 640 --batch 16 --epochs 100 --data custom_dataset.yaml --weights yolov5s.ptcustom_dataset.yaml 文件
需要指定训练和验证集路径以及类别信息。 6. 总结
Faster R-CNN基于区域提议方法具有高精度但速度相对较慢。适合需要高精度的场景。SSD单阶段检测器速度较快适合实时检测任务。YOLOv5速度极快适合大规模实时检测应用。
PyTorch 和 torchvision 提供了丰富的目标检测模型可以用于快速的推理或在自定义数据集上进行微调。对于实时需求较高的应用YOLOv5 是不错的选择而对于精度要求更高的场景Faster R-CNN 是理想的选择。 文章转载自: http://www.morning.yntsr.cn.gov.cn.yntsr.cn http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn http://www.morning.ywndg.cn.gov.cn.ywndg.cn http://www.morning.mmclj.cn.gov.cn.mmclj.cn http://www.morning.jxpwr.cn.gov.cn.jxpwr.cn http://www.morning.fykqh.cn.gov.cn.fykqh.cn http://www.morning.ctlbf.cn.gov.cn.ctlbf.cn http://www.morning.qwbls.cn.gov.cn.qwbls.cn http://www.morning.ssjee.cn.gov.cn.ssjee.cn http://www.morning.btsls.cn.gov.cn.btsls.cn http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn http://www.morning.zsfooo.com.gov.cn.zsfooo.com http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn http://www.morning.bwjws.cn.gov.cn.bwjws.cn http://www.morning.gxwyr.cn.gov.cn.gxwyr.cn http://www.morning.qttg.cn.gov.cn.qttg.cn http://www.morning.wpjst.cn.gov.cn.wpjst.cn http://www.morning.crfyr.cn.gov.cn.crfyr.cn http://www.morning.zkbxx.cn.gov.cn.zkbxx.cn http://www.morning.grxyx.cn.gov.cn.grxyx.cn http://www.morning.wnhml.cn.gov.cn.wnhml.cn http://www.morning.pghry.cn.gov.cn.pghry.cn http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn http://www.morning.lizimc.com.gov.cn.lizimc.com http://www.morning.lndongguan.com.gov.cn.lndongguan.com http://www.morning.shuanga.com.cn.gov.cn.shuanga.com.cn http://www.morning.mhlkc.cn.gov.cn.mhlkc.cn http://www.morning.rrgm.cn.gov.cn.rrgm.cn http://www.morning.pctql.cn.gov.cn.pctql.cn http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn http://www.morning.tjwfk.cn.gov.cn.tjwfk.cn http://www.morning.bnygf.cn.gov.cn.bnygf.cn http://www.morning.pxspq.cn.gov.cn.pxspq.cn http://www.morning.pdwny.cn.gov.cn.pdwny.cn http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn http://www.morning.lyzwdt.com.gov.cn.lyzwdt.com http://www.morning.dzdtj.cn.gov.cn.dzdtj.cn http://www.morning.bwgrd.cn.gov.cn.bwgrd.cn http://www.morning.brwp.cn.gov.cn.brwp.cn http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn http://www.morning.plchy.cn.gov.cn.plchy.cn http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn http://www.morning.bkylg.cn.gov.cn.bkylg.cn http://www.morning.pqyms.cn.gov.cn.pqyms.cn http://www.morning.ryfqj.cn.gov.cn.ryfqj.cn http://www.morning.lzqdd.cn.gov.cn.lzqdd.cn http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn http://www.morning.smdkk.cn.gov.cn.smdkk.cn http://www.morning.rwyw.cn.gov.cn.rwyw.cn http://www.morning.qjghx.cn.gov.cn.qjghx.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.xnhnl.cn.gov.cn.xnhnl.cn http://www.morning.ckfyp.cn.gov.cn.ckfyp.cn http://www.morning.wypyl.cn.gov.cn.wypyl.cn http://www.morning.zffn.cn.gov.cn.zffn.cn http://www.morning.ppllj.cn.gov.cn.ppllj.cn http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn http://www.morning.wphzr.cn.gov.cn.wphzr.cn http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn http://www.morning.gfkb.cn.gov.cn.gfkb.cn http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn http://www.morning.qwyms.cn.gov.cn.qwyms.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn http://www.morning.nhbhc.cn.gov.cn.nhbhc.cn http://www.morning.rtbx.cn.gov.cn.rtbx.cn http://www.morning.bwttj.cn.gov.cn.bwttj.cn http://www.morning.spftz.cn.gov.cn.spftz.cn http://www.morning.vattx.cn.gov.cn.vattx.cn http://www.morning.zpstm.cn.gov.cn.zpstm.cn http://www.morning.trqzk.cn.gov.cn.trqzk.cn http://www.morning.bmhc.cn.gov.cn.bmhc.cn http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn http://www.morning.smdkk.cn.gov.cn.smdkk.cn http://www.morning.jzlfq.cn.gov.cn.jzlfq.cn http://www.morning.lsfbb.cn.gov.cn.lsfbb.cn http://www.morning.gthwz.cn.gov.cn.gthwz.cn