CNN图片分类

article/2025/11/7 13:52:53

最近在阅读一些AI项目,写入markdown,持续更新,算是之后也能回想起做法

项目 https://github.com/calssion/Fun_AI

image classify(图片分类)

CNN classify dogs and cats(猫狗二分类)

Tutorial(教程):https://developers.google.com/machine-learning/practica/image-classification

the training samples are just only two kinds:dog and cat(训练集只有两种图片:猫和狗)
image

1、basic CNN model with tensorflow.keras(简单的CNN模型)

img_input = layers.Input(shape=(150, 150, 3))
x = layers.Conv2D(16, 3,activation='relu')(img_input)
x = layers.MaxPooling2D(2)(x)
x = layers.Conv2D(32, 3, activation='relu')(x)
x = layers.MaxPooling2D(2)(x)
x = layers.Conv2D(64, 3, activation='relu')(x)
x = layers.MaxPooling2D(2)(x)
x = layers.Flatten()(x)
x = layers.Dense(512, activation='relu')(x)
output = layers.Dense(1, activation='sigmoid')(x)
model = Model(img_input, output)

the network architecture(网络结构)
image

using RMSprop for optimization algorithm(优化算法采用RMSprop),
and there also use Data Augmentation(也用到数据增强),
cause the training samples are not enough and it can help the network learn better(训练数据不足且有助于网络学得更好)。

from tensorflow.keras.preprocessing.image import ImageDataGenerator

Visualizing Intermediate Representations of erery layer of the CNN(可视化中间过程)
image

2、Reducing Overfitting(减缓过拟合)

Data Augmentation(数据增强)

datagen = ImageDataGenerator(
  rotation_range=40,
  width_shift_range=0.2,
  height_shift_range=0.2,
  shear_range=0.2,
  zoom_range=0.2,
  horizontal_flip=True,
  fill_mode='nearest')

Adding Dropout(使用dropout)

x = layers.Dropout(0.5)(x)

3、Feature Extraction and Fine-Tuning(迁移学习和微调)

use the Inception V3 model developed at Google(使用Inception V3模型),
and pre-trained on ImageNet(已经预训练好的ImageNet)。

from tensorflow.keras.applications.inception_v3 import InceptionV3
local_weights_file ='/tmp/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5'
pre_trained_model = InceptionV3( input_shape=(150, 150, 3), include_top=False, weights=None)
pre_trained_model.load_weights(local_weights_file)

won't update the weights of the pretrained model during training(固定前面网络层的参数(权值))

for layer in pre_trained_model.layers:
  layer.trainable = False

let's stick a fully connected classifier on top of last_output(添加属于自己的网络层用于输出)

last_output = pre_trained_model.get_layer('mixed7').output
x = layers.Flatten()(last_output)
x = layers.Dense(1024, activation='relu')(x)
x = layers.Dropout(0.2)(x)
x = layers.Dense(1, activation='sigmoid')(x)
model = Model(pre_trained_model.input, x)

All we need to do to implement fine-tuning is to set the top layers of Inception V3 to be trainable, recompile the model (necessary for these changes to take effect), and resume training. Let's unfreeze all layers belonging to the mixed7 module—i.e., all layers found after mixed6—and recompile the model:(迁移学习的网络开放前面更多网络层进行训练,更好地拟合数据)

for layer in pre_trained_model.layers:
  if unfreeze:
    layer.trainable = True
  if layer.name == 'mixed6':
    unfreeze = True

finished!!!


http://chatgpt.dhexx.cn/article/vHFViA1k.shtml

相关文章

深度学习之图像分类

第一篇CSDN文章,写的不好,还请各位大佬指正。万事开头难,千里之行始于足下! 1.什么是图像分类 图像分类,核心是从给定的分类集合中给图像分配一个标签的任务。实际上,这意味着我们的任务是分析一个输入图…

关于图像分类

https://www.zhihu.com/question/57075015/answer/194397802https://www.zhihu.com/question/57075015/answer/194397802 先定义一下图像分类,一般而言,图像分类分为通用类别分类以及细粒度图像分类 那什么是通用类别以及细粒度类别呢?这里…

(一)图像分类任务介绍 Image Classification

目录 一、什么是图像分类任务?它有哪些应用场景? 二、图像分类任务的难点? 三、基于规则的方法是否可行? 四、什么是数据驱动的图像分类范式? 数据集构建 分类器设计与学习 分类器决策 五、常用的分类任务评价指…

图像分类的数据集

图像分类的数据集 1. MNIST2. Fashion-MNIST3.CIFAR-10和CIFAR-1004. Caltech 1015. ImageNet5.1 ImageNet是什么?5.2 ILSVRC 6. 各个数据集上的最新进展其他参考资料 1. MNIST MNIST数据集的一个样例 一般机器学习框架都使用MNIST作为入门,就像"He…

机器学习——图像分类

1 图像分类的概念 1.1 什么是图像分类? 图像分类,根据图像信息中所反映出来的不同特征,把不同类别的目标区分开来的图像处理方法 1.2 图像分类的难度 ●任何拍摄情 况的改变都将提升分类的难度 1.3 CNN如何进行图像分类 ●数据驱动型方法通…

图像分类算法

图像分类 参考链接1.前言2.K近邻与KMeans算法比较KNN原理和实现过程(1) 计算已知类别数据集中的点与当前点之间的距离:(2) 按照距离递增次序排序(3) 选取与当前点距离最小的k个点(4) 确定前k个点所在类别的出现频率(5) 返回前k个点出现频率最高的类别作为当前点的预…

图像分类方法总结

1. 图像分类问题描述 图像分类问题是计算机视觉领域的基础问题,它的目的是根据图像的语义信息将不同类别图像区分开来,实现最小的分类误差。具体任务要求是从给定的分类集合中给图像分配一个标签的任务。总体来说,对于单标签的图像分类问题&…

9.图片分类数据集

1. 图像分类数据集 MNIST数据集 [LeCun et al., 1998] 是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集。 %matplotlib inline import torch import torchvision from torch.utils import data from t…

CNN实现花卉图片分类识别

CNN实现花卉图片分 前言 本文为一个利用卷积神经网络实现花卉分类的项目,因此不会过多介绍卷积神经网络的基本知识。此项目建立在了解卷积神经网络进行图像分类的原理上进行的。 项目简介 本项目为一个图像识别项目,基于tensorflow,利用C…

常用图像分类网络

想对图像分类网络写个简要的概括,如有介绍不当之处,还望指出。 一、VGG网络 更新于2018年10月20日 参考博客:深度学习经典卷积神经网络之VGGNet 论文地址:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITIO…

干货——图像分类(上)

这是译自斯坦福CS231n课程笔记image classification notes,由课程教师Andrej Karpathy授权进行翻译。本篇教程由杜客翻译完成。非常感谢那些无偿奉献的大师,在此代表所有爱好学习者向您们致敬,谢谢! 这是斯坦福大学的课程&#xf…

图像分类

图像物体分类与检测算法综述 转自《计算机学报》 目录 图像物体分类与检测算法综述 目录图像物体分类与检测概述物体分类与检测的难点与挑战物体分类与检测数据库物体分类与检测发展历程 图像物体分类与检测是计算机视觉研究中的两个重要的基本问题,也是图像分割、…

【图像分类数据集】非常全面实用的垃圾分类图片数据集共享

【图像分类数据集】非常全面实用的垃圾分类图片数据集共享 数据集介绍: 训练集 文件夹结构如下(部分: 第0类文件夹下数据展示如下(部分: 测试集 大致如下: 数据集获取方式: 总结&#xf…

python学习(18)--图片分类

图片分类 学习动机. 在这一节中我们会引入图片分类为题。这也是从一个合适的集合中分配给图片一个标记的任务。这是计算机视觉的核心问题之一。鉴于它的简单性,有一大批实用应用。更多的是,我们可以在以后的章节中看到,一些看似分离的计算机…

【OpenMMLab】图片分类发展简史

一、发展简述 图片分类是CV领域的基础任务,也是检测、分割、追踪等任务的基石。简而言之,图片分类就是给定一张图片,判断其类别,一般而言所有的候选类别是预设的。 从数学上描述,图片分类就是寻找一个函数&#xff0…

深度学习(1) ——图像分类

图像分类概述 图像分类实质上就是从给定的类别集合中为图像分配对应标签的任务,当我们输入一张图片,返回一个该图像类别的标签。限制条件:只能输入单目标图像。常用数据集:mnist、CIFAR-10、CIFAR-100、ImageNet 图像分类算法 …

CNN图片分类(Pytorch)

这篇文章主要讲述用 pytorch 完成简单 CNN 图片分类任务,如果想对 CNN 的理论知识进行了解,可以看我的这篇文章,深度学习(一)——CNN卷积神经网络。 图片分类 我们以美食图片分类为例,有testing、training、validation文件夹。下…

JavaWeb学习思维导图

这是我最近总结的JavaWeb学习思维导图,希望可以帮到大家:

javaweb学习总结

重定向 请求转发 区别:重定向后浏览器地址值会发生改变。 重定向request域对象不能共享数据,因为request域的范围是一次请求一次响应。而转发能够共享数据 请求转发的路径写法,只是需要写url-pattern的地址即可,不用带项目名&am…

JavaWeb学习心得总结

JavaWeb(JSPServlet)新手学习心得总结 说明: 由于篇幅的原因,本文只是对于JavaWeb项目的大致数据流程做一个介绍,同时引出一些JavaWeb开发中很基础的知识点,且不会精确到具体代码实现。 所以本文的适合读…