第三周课程总结

部署运行你感兴趣的模型镜像

本次课主要介绍了计算机视觉领域常用的数据集、任务评价指标、目标检测与YOLO、全卷积网络与语义分割等内容,以下是详细总结:

常用数据集:
MNIST:由0-9的手写数字图片组成,包含60000个训练样本和10000个测试样本,每个样本为28x28像素的灰度图片。
Fashion-MNIST:作为MNIST的替代品,包含来自10种类别的7万个不同商品的正面图片,格式和训练集/测试集划分与MNIST一致。
CIFAR-10:由10个类的60000个32x32彩色图像组成,每个类有6000个图像,分为五个训练批次和一个测试批次。
PASCAL VOC:目标分类、检测、分割的常用数据集,包含20类物体,如人、动物、交通工具等,常用的是PASCAL 2012版本。
MS COCO:以scene understanding为目标的数据集,包含超过33万张图片,其中20万张有标注,标注类别有80类。
ImageNet:大规模图像数据库,总图像数据超过1400万张,总类别数超过21000个,用于图像分类等任务。
JFT-300M:Google内部用于训练图像分类模型的数据集,包含3亿张图像和超过10亿个标签。
任务评价指标:
精确率(Precision)与召回率(Recall):精确率表示被正确划分为正例的个数占所有被划分为正例的个数的比例;召回率表示被正确划分为正例的个数占所有实际为正例的个数的比例。
平均精度(AP):通过计算不同召回率下的精确率,并对其进行积分或求和得到,用于衡量模型在多个类别上的平均性能。
mAP(Mean Average Precision):多类检测中,取每个类别AP的平均值,用于综合评价模型在所有类别上的性能。
目标检测与YOLO:
目标检测问题:在给定的图片中精确找到物体所在位置,并标注出物体的类别。
YOLO基本思想:YOLO(You Only Look Once)是一种集大成的目标检测方法,通过一次前向传播即可完成目标检测和分类,具有速度快、准确率高的特点。
损失函数设计:YOLO的损失函数包括位置误差、置信度误差和分类误差三部分,用于优化模型的检测性能。
全卷积网络与语义分割:
语义分割实例:FCN(Fully Convolutional Networks)是语义分割的经典方法,通过全卷积层对图像进行像素级别的分类,实现图像的语义分割。
DeepLab v3:现在广泛使用的语义分割方法之一,通过引入空洞卷积和空间金字塔池化等技术,提高了语义分割的准确率和效率。
代码示例
MNIST数据集加载示例
python

import torch
from torch.utils import data
from torchvision import transforms, datasets
def load_data_mnist(batch_size, resize=None):
"""下载MNIST数据集,然后将其加载到内存中。"""
trans = [transforms.ToTensor()]
if resize:
trans.insert(0, transforms.Resize(resize))
trans = transforms.Compose(trans)
mnist_train = datasets.MNIST(
root="../data", train=True, transform=trans, download=True)
mnist_test = datasets.MNIST(
root="../data", train=False, transform=trans, download=True)
return (data.DataLoader(mnist_train, batch_size, shuffle=True,
num_workers=4),
data.DataLoader(mnist_test, batch_size, shuffle=False,
num_workers=4))
# 使用示例
train_loader, test_loader = load_data_mnist(batch_size=64, resize=32)
for X, y in train_loader:
print(X.shape, y.shape)
break
YOLO基本思想概述
YOLO算法将输入图像划分为SxS的网格,每个网格预测B个bounding box及其置信度,以及C个类别的条件概率。输出层直接回归bounding box的中心坐标、宽高、置信度及类别概率。

FCN语义分割示例(简化版)
python

import torch
import torch.nn as nn
import torchvision.models as models
class FCN(nn.Module):
def __init__(self, num_classes):
super(FCN, self).__init__()
# 使用预训练的VGG16作为基础网络
vgg = models.vgg16(pretrained=True)
self.features = vgg.features
self.classifier = nn.Sequential(
nn.Conv2d(512, 4096, 7),
nn.ReLU(inplace=True),
nn.Dropout2d(),
nn.Conv2d(4096, 4096, 1),
nn.ReLU(inplace=True),
nn.Dropout2d(),
nn.Conv2d(4096, num_classes, 1)
)
def forward(self, x):
x = self.features(x)
x = self.classifier(x)
return x
# 使用示例
model = FCN(num_classes=21) # 假设有21个类别
input_tensor = torch.randn(1, 3, 224, 224) # 示例输入
output = model(input_tensor)
print(output.shape) # 输出应为(1, 21, H, W),H和W取决于输入大小和网络结构
注意:上述FCN示例为简化版,实际应用中可能需要进行上采样等操作以恢复原始图像尺寸。此外,DeepLab v3等更先进的语义分割模型实现更为复杂,通常涉及空洞卷积、ASPP(Atrous Spatial Pyramid Pooling)等技术。

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值