使用VGGNet、ResNet、Inception和Xception分类图像

博客介绍了几种深度学习网络模型。VGGNet于2014年提出,用3×3卷积核堆叠;ResNet在2015年出现,用残差模块,模型尺寸小;Inception同年提出,用多尺度卷积核;Xception是Inception扩展,用深度可分离卷积,性能更优。还提及代码和结果,如Inception和Xception预测有偏差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

  1. VGGNet
    2014年。该网络使用3×3卷积核的卷积层堆叠并交替最大池化层,有两个4096维的全连接层,然后是softmax分类器。16和19分别代表网络中权重层的数量。
  2. ResNet
    2015年。该网络使用残差模块来组成更复杂的网络(网络中的网络),使用标准随机梯度下降法训练。与VGG相比,ResNet更深,但是由于使用全局平均池操作而不是全连接密集层,所以模型的尺寸更小。
  3. Inception
    2015年。该网络使用多个尺度的卷积核提取特征,并在同一模块中同时计算1×1、3×3、5×5卷积,然后将这些滤波器的输出沿通道维度堆叠并传递到下一层。
    Inception-v4编写于2016年。
  4. Xception
    2016年。该网络是Inception网络的扩展,使用了深度可分离卷积运算。其参数数量与Inception-v3相同,由于更高效地利用模型参数,该网络性能获得提升并在大型图像分类数据集胜过Inception-v3。

二、代码

import numpy as np
from PIL import Image
from matplotlib.pyplot import imshow
from keras.applications import VGG16
from keras.applications import VGG19
from keras.applications import ResNet50
from keras.applications import InceptionV3
from keras.applications import Xception
from keras.applications import imagenet_utils
from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array

MODELS = {
    "vgg16": (VGG16, (224, 224)),
    "vgg19": (VGG19, (224, 224)),
    "inception": (InceptionV3, (299, 299)),
    "xception": (Xception, (299, 299)),
    "resnet": (ResNet50, (224, 224))
}


def image_load_and_convert(image_path, model_name):
    pil_im = Image.open(image_path, 'r')
    imshow(np.asarray(pil_im))
    inputShape = MODELS[model_name][1]
    preprocess = imagenet_utils.preprocess_input
    image = load_img(image_path, target_size=inputShape)
    image = img_to_array(image)
    image = np.expand_dims(image, axis=0)
    image = preprocess(image)
    return image


def classify_image(image_path, model_name):
    img = image_load_and_convert(image_path, model_name)
    Network = MODELS[model_name][0]
    model = Network(weights="imagenet")
    preds = model.predict(img)
    P = imagenet_utils.decode_predictions(preds)
    print(model_name)
    for (i, (imagenetID, label, prob)) in enumerate(P[0]):
        print("{}. {}: {:.2f}%".format(i + 1, label, prob * 100))


# classify_image("lesser_panda.jpg", "vgg16")
classify_image("lesser_panda.jpg", "vgg19")
classify_image("lesser_panda.jpg", "inception")
classify_image("lesser_panda.jpg", "xception")
classify_image("lesser_panda.jpg", "resnet")

在这里插入图片描述

三、结果

Inception和Xception会预测成别的东西。

vgg16
1. lesser_panda: 100.00%
2. titi: 0.00%
3. giant_panda: 0.00%
4. indri: 0.00%
5. gibbon: 0.00%

vgg19
1. lesser_panda: 100.00%
2. giant_panda: 0.00%
3. howler_monkey: 0.00%
4. red_fox: 0.00%
5. American_black_bear: 0.00%

inception
1. stopwatch: 100.00%
2. web_site: 0.00%
3. bow: 0.00%
4. stole: 0.00%
5. coffeepot: 0.00%

xception
1. ping-pong_ball: 46.78%
2. necklace: 16.60%
3. military_uniform: 8.55%
4. buckle: 6.82%
5. bib: 6.74%

resnet
1. lesser_panda: 99.99%
2. giant_panda: 0.01%
3. titi: 0.00%
4. polecat: 0.00%
5. marmoset: 0.00%
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XerCis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值