精华内容
下载资源
问答
  • IOS图片分类

    2020-01-23 20:37:52
    这篇文章是翻译官方IOS TuriCreate的图片分类器的使用 原文链接:图片分类 图片分类 图片分类器的目标是在给定目标图片的情况下,能识别出该图片的标签。深度学习最近被证明可以在这个具有挑战性的问题上获得令人...

    这篇文章是翻译官方IOS TuriCreate的图片分类器的使用。

    原文链接:图片分类

    图片分类

    图片分类器的目标是在给定目标图片的情况下,能识别出该图片的标签。深度学习最近被证明可以在这个具有挑战性的问题上获得令人难以置信的结果。然而,这个结果是以不断对模型进行调參和训练为代价的。这意味着一个人可能需要花费数月的时间来测试不同配置的模型,但时间太长的情况下,投入产出比就很低。但是,Turi Create中的图片分类器旨在最大程度的减少这些麻烦,并且可以轻松创建高质量的图片分类器模型。

    加载数据

    Kaggle Cats and Dogs Datase提供了猫和狗的标签图片。下载并解压数据集后,进入到kagglecatsanddogs文件夹下,该文件夹包含PetImages文件夹。

    import turicreate as tc
    
    # Load images (Note:'Not a JPEG file' errors are warnings, meaning those files will be skipped)
    data = tc.image_analysis.load_images('PetImages', with_path=True)
    
    # From the path-name, create a label column
    data['label'] = data['path'].apply(lambda path: 'dog' if '/Dog' in path else 'cat')
    
    # Save the data for future use
    data.save('cats-dogs.sframe')
    
    # Explore interactively
    data.explore()
    

    入门实例

    这个任务是预测图片是猫还是狗。让我们探讨一下猫 vs 狗数据集上图片分类器的用法。

    import turicreate as tc
    
    # Load the data
    data =  tc.SFrame('cats-dogs.sframe')
    
    # Make a train-test split
    train_data, test_data = data.random_split(0.8)
    
    # Create the model
    model = tc.image_classifier.create(train_data, target='label')
    
    # Save predictions to an SArray
    predictions = model.predict(test_data)
    
    # Evaluate the model and print the results
    metrics = model.evaluate(test_data)
    print(metrics['accuracy'])
    
    # Save the model for later use in Turi Create
    model.save('cats-dogs.model')
    
    # Export for use in Core ML
    model.export_coreml('MyCustomImageClassifier.mlmodel')
    

    以下是我们对自己喜欢的猫和狗的一些预测:

    new_cats_dogs['predictions'] = model.predict(new_cats_dogs)
    

    在这里插入图片描述

    高级用法

    请参考以下章节:

    此外,以下各章包含有关如何使用分类器的更多信息:

    展开全文
  • CNN图片分类

    万次阅读 2018-08-21 17:03:53
    最近在阅读一些AI项目,写入markdown,持续更新,算是之后也能回想起...image classify(图片分类) CNN classify dogs and cats(猫狗二分类) Tutorial(教程):https://developers.google.com/machine-learning/pra...

    最近在阅读一些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!!!

    展开全文
  • 迁移学习CNN图像分类模型 - 花朵图片分类

    千次阅读 多人点赞 2018-01-31 19:30:24
    为了能够快速地训练好自己的花朵图片分类器,我们可以使用别人已经训练好的模型参数,在此基础之上训练我们的模型。这个便属于迁移学习。本文提供训练数据集和代码下载。 原理:卷积神经网络模型总体上可以分为...

    训练一个好的卷积神经网络模型进行图像分类不仅需要计算资源还需要很长的时间。特别是模型比较复杂和数据量比较大的时候。普通的电脑动不动就需要训练几天的时间。为了能够快速地训练好自己的花朵图片分类器,我们可以使用别人已经训练好的模型参数,在此基础之上训练我们的模型。这个便属于迁移学习。本文提供训练数据集和代码下载。
    这里写图片描述
    这里写图片描述

    原理:卷积神经网络模型总体上可以分为两部分,前面的卷积层和后面的全连接层。卷积层的作用是图片特征的提取,全连接层作用是特征的分类。我们的思路便是在inception-v3网络模型上,修改全连接层,保留卷积层。卷积层的参数使用的是别人已经训练好的,全连接层的参数需要我们初始化并使用我们自己的数据来训练和学习。

    这里写图片描述

    上面inception-v3模型图红色箭头前面部分是卷积层,后面是全连接层。我们需要修改修改全连接层,同时把模型的最终输出改为5。

    由于这里使用了tensorflow框架,所以,我们需要获取上图红色箭头所在位置的张量BOTTLENECK_TENSOR_NAME(最后一个卷积层激活函数的输出值,个数为2048)以及模型最开始的输入数据的张量JPEG_DATA_TENSOR_NAME。获取这两个张量的作用是,图片训练数据通过JPEG_DATA_TENSOR_NAME张量输入模型,通过BOTTLENECK_TENSOR_NAME张量获取通过卷积层之后的图片特征。

    BOTTLENECK_TENSOR_SIZE = 2048
    BOTTLENECK_TENSOR_NAME = 'pool_3/_reshape:0'
    JPEG_DATA_TENSOR_NAME = 'DecodeJpeg/contents:0'
    

    通过下面的链接下载inception-v3模型,其中包含已经训练好的参数。

    模型下载链接:地址

    or https://pan.baidu.com/s/1LxBK5annrmiWSXE_jajOJQ

    训练数据花朵图片下载:地址

    通过下面的代码加载模型,同时获取上面所述的两个张量。

       # 读取已经训练好的Inception-v3模型。
        with gfile.FastGFile(os.path.join(MODEL_DIR, MODEL_FILE), 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())
        bottleneck_tensor, jpeg_data_tensor = tf.import_graph_def(
            graph_def, return_elements=[BOTTLENECK_TENSOR_NAME, JPEG_DATA_TENSOR_NAME])
    

    由于我们模型的功能是对五种花进行分类,所以,我们需要修改全连接层,这里,我们只增加一个全连接层。全连接层的输入数据便是BOTTLENECK_TENSOR_NAME张量。

    	# 定义一层全链接层
        with tf.name_scope('final_training_ops'):
            weights = tf.Variable(tf.truncated_normal([BOTTLENECK_TENSOR_SIZE, n_classes], stddev=0.001))
            biases = tf.Variable(tf.zeros([n_classes]))
            logits = tf.matmul(bottleneck_input, weights) + biases
            final_tensor = tf.nn.softmax(logits)
    

    最后便是定义交叉熵损失函数。模型使用反向传播训练,而训练的参数并不是模型的所有参数,仅仅是全连接层的参数,卷积层的参数是不变的。

        # 定义交叉熵损失函数。
        cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=ground_truth_input)
        cross_entropy_mean = tf.reduce_mean(cross_entropy)
        train_step = tf.train.GradientDescentOptimizer(LEARNING_RATE).minimize(cross_entropy_mean)
    

    那么接下来的是如何给我们的模型输入数据了,这里提供了几个操作数据的函数。由于训练数据集比较小,先把所有的图片通过JPEG_DATA_TENSOR_NAME张量输入模型,然后获取BOTTLENECK_TENSOR_NAME张量的值并保存到硬盘中。在模型训练的时候,从硬盘中读取所保存的BOTTLENECK_TENSOR_NAME张量的值作为全连接层的输入数据。因为一张图片可能会被使用多次。

    # 输入图片并获取`BOTTLENECK_TENSOR_NAME`张量的值
    def get_or_create_bottleneck(sess, image_lists, label_name, index, category, jpeg_data_tensor, bottleneck_tensor)
    
    # 从硬盘中读取`BOTTLENECK_TENSOR_NAME`张量的值,用于训练
    def get_or_create_bottleneck(sess, image_lists, label_name, index, category, jpeg_data_tensor, bottleneck_tensor):
    
    # 从硬盘中读取`BOTTLENECK_TENSOR_NAME`张量的值,用于测试。
    def get_test_bottlenecks(sess, image_lists, n_classes, jpeg_data_tensor, bottleneck_tensor)
    

    不到5分钟就可以训练好我们的模型,精确度还蛮高的。下图是本人运行的结果。

    这里写图片描述

    源码地址:https://github.com/liangyihuai/my_tensorflow/tree/master/com/huai/converlution/transfer_learning

    展开全文
  • 图片分类-python

    千次阅读 热门讨论 2018-06-02 17:22:07
    目的:做一个简易的图片分类。 使用到的算法:hog、surf+svm 图片集:cifar-10、cifar-100、stl-10、自制图片集 分类完整代码链接 使用说明: 1.cifar-10、cifar-100和stl-10直接解压 2.自制图片集文件夹结构...

    目的:做一个简易的图片分类。
    使用到的算法:hog、surf+svm
    图片集cifar-10、cifar-100stl-10、自制图片集
    这里写图片描述
    分类完整代码链接

    使用说明
    1.cifar-10、cifar-100和stl-10直接解压
    2.自制图片集文件夹结构:
    ├─homemade
    │ ├─标签1
    │ ├─标签2
    │ ├─标签3
    │ ├─标签4
    │ ├─标签5
    │ └─标签6
    每个“标签N”里面是存储的属于该标签的图片,图片名为“标签名+数字”
    自制图片全是百度爬取自己筛选的
    3.依赖库
    文件说明
    categoriesGUI.py:gui界面
    categoriesGUI.spec:用于Pyinstaller生成exe
    config.py:读取配置参数
    modelTrain.py:模型训练
    picCategories.py:图片集分类,利用的是modelTrain.py训练保存的模型
    config/config.cfg:配置参数,部分参数和python中算法的参数相对应

    结果总结
    1.hog是利用梯度变换提取特征,并且缺少旋转和尺度不变性。
    2.surf是SIFT角点检测算法的改进版,速度提升比较大。
    3.相同图片集,对比hog+LinearSVC和surf+LinearSVC,hog效果要好一些(这里不知道为什么)
    4.不同图片集,各类别中的图片数量越多,hog识别效果越好
    5.还可以优化部分分别是:
    a.surf读取图片改为读取每一张图片就进行surf特征提取,在释放掉图片内存,这样可以减小内存。
    b.模型训练采取的是LinearSVC,采取其他的效果应该要好些。
    c.在surf+LinearSVC中使用的是MiniBatchKMeans,速度比kmeans快,效果差距不大
    d.自己调参数,这里可以提高一些识别率。
    6.surf由于提取特征大小不同,所以采用了词袋的方法。

    展开全文
  • 用yolov3进行图片分类

    千次阅读 2019-10-12 18:55:43
    使用yoloV3进行图片分类:一个待处理的Images文件夹,里面包含要处理的图片;一个目标文件personFile,我这里需要提取含有行人的图片;一个非目标的文件noPersonFile。实际功能是从Images一张一张的读取,使用yolo...
  • tensorflow_二分类之多张图片分类

    千次阅读 2018-05-15 10:25:05
    在单张图片分类的基础上文章进一步研究多张图片的分类:1)新建predictmultipy.py,输入以下内容import tensorflow as tfimport numpy as npimport os,glob,cv2import sys,argparsefrom utils.copy import get_file_...
  • 图片分类-最近邻分类(1)

    千次阅读 2017-06-20 12:01:48
    但是他会让我们对图片分类问题的基础算法有一个初步的了解。 如图,分类数据集为:CIFAR-10。一个非常有趣的图片分类数据集是CIFAR-10数据集。这个数据集包含60000个32*32像素的小图片。每个图片都被标记成十种类别...
  • ImageNet-ResNet_50 图片分类平台

    千次阅读 2018-08-15 14:00:53
    最近公司要在AI领域发力,基于此,研究了Resnet50的图片分类,网络上有很多的例子,但是都没有做成平台化,提供一个组件一样供各个业务平台使用,基于此,在Resnet50的基础上,扩展了登陆,图片类别添加,上传图片,...
  • 由于深度学习在图片分类上极其成功,且代码简单,图片分类便成为深入学习入门学习任务。通常几行代码,就可以调起一个模型训练。由于太简单,导致大家对图片分类缺乏能够整体认识。 本文拟从问...
  • [深度应用]·实战掌握PyTorch图片分类简明教程 个人网站-->http://www.yansongsong.cn 项目GitHub地址-->https://github.com/xiaosongshine/image_classifier_PyTorch 1.引文 深度学习的比赛中,图片...
  • 使用卷积神经网络进行图片分类 2

    千次阅读 2018-11-14 19:25:57
    使用卷积神经网络进行图片分类 2
  • 使用卷积神经网络进行图片分类 3

    千次阅读 2018-11-14 19:23:24
    使用卷积神经网络进行图片分类 3
  • 本篇博文主要讲解来自2014年ICLR的经典图片分类、定位物体检测overfeat算法:《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks》,至今为止这篇paper,已然被引用了几...
  • 使用ResNet的caffe实现进行图片分类

    千次阅读 2018-08-28 17:53:41
    使用ResNet的caffe实现进行图片分类   Gemfield A CivilNet Maintainer 背景 图片分类是深度学习在图像领域的初级应用,更高阶的应用如目标检测、图像分割等。那就从最初级的应用-图像分类做起吧。 准备数据 ...
  • 尽管没有 GPU,但还是很想在个人笔记本的 CPU 上试试图片分类,有木有?如果你想试试,那就来吧。我们都知道,深度学习在图片分类方面已经取得了很大的成就,大家对于常见的神经网络,如 CNN,VGG 等也非常熟悉,...
  • 图片分类

    千次阅读 2016-03-28 16:40:38
    大量图像中,需要将图片进行分类,比如有两种类型的图片各若干张(汽车,恐龙) 通过分析这些图片的特征,进行处理,再输入图像,就能判断该图像的所属分类。 目前,图片的识别正确率为97%左右,假如有需要...
  • 深度学习框架Caffe图片分类教程

    千次阅读 2017-07-13 22:03:04
    深度学习框架Caffe图片分类教程使用Caffe进行图片分类大致分为数据集准备,格式转换为LMDB或者LEBELDB,定义网络模型文件,定义求解器文件设置训练参数,部署预测,下边详细说下这几个步骤。PS:训练集图片共1907张...
  • 用java做一个图片分类软件

    千次阅读 2019-08-26 21:43:51
    用java做一个图片分类软件 目前仅仅打包成了可执行jar包。执行图如下: //初始数据 private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField tf_yuan; ...
  • 使用PyTorch对cifar-10图片分类

    千次阅读 2018-03-25 17:36:52
    使用PyTorch对cifar-10图片分类 前言 最近刚学习了PyTorch,主要是在PyTorch主页教程里面学习。不过这个教程是英文的,学习起来比较费劲。 因此我自己对PyTorch对cifar-10图片分类这一部分进行了总结,因为光对着...
  • 本次所用数据来自ImageNet,使用预训练好的数据来预测一个新的数据集:猫狗图片分类。这里,使用VGG模型,这个模型内置在Keras中,直接导入就可以了。 from keras.applications import VGG16 conv_base = VGG16...
  • python学习(18)--图片分类

    万次阅读 2017-06-17 12:09:36
    图片分类学习动机.在这一节中我们会引入图片分类为题。这也是从一个合适的集合中分配给图片一个标记的任务。这是计算机视觉的核心问题之一。鉴于它的简单性,有一大批实用应用。更多的是,我们可以在以后的章节中...
  • caffe上图片分类的实践

    千次阅读 2015-10-19 12:20:56
    本文紧接着上一篇 :http://blog.csdn.net/leo_is_ant/article/details/49183275 (训练实践)进行图片分类。  话说上回,我们已经训练出了数据的模型 caffe_model。下面我们用一个caffe提供的Python接口进行一次...
  • Caffe修炼之路(5)——自行制作图片分类数据(一)前 言(二)准备一些图片(三)生成图片文件列表(四)数据转换 (一)前 言 由于Caffe的输入数据是以lmdb或者leveldb格式的文件,因此我们需要将数据库中的...
  • 使用卷积神经网络进行图片分类 4

    千次阅读 2017-06-20 09:47:17
    利用训练好的模型开发图片分类程序 一、实验介绍 1.1 实验内容 在snapshot目录下已经有我们训练好的模型的参数,为了利用我们的卷积神经网络模型和这些参数去对图像进行分类,我们这次实验就来编写代码实现一个...
  • https://www.cnblogs.com/liaohuiqiang/p/9609162.html 图片分类 模型 densenet inception mobilenet v1 Depthwise Separable C...
  • AI challenger 2018图片分类比赛—农作物病害检测

    千次阅读 多人点赞 2018-12-16 15:21:13
    我使用的是Keras,以TensorFlow为后端,手动实现了DenseNet用于图片分类 由于Kaggle现在可以免费使用GPU,所以采用将数据上传至Kaggle的私人Dataset上,在其上创建Kernel进行模型训练 (上传需要翻墙,有梯子最好...
  • 图片分类-K近邻分类器

    千次阅读 2017-06-20 14:00:15
    你可以注意到当我们做预测的时候,如果仅仅用最近的图片的是远远不够的。其实,我们更常用的是k近邻分类器。这个思想非常简单。代替寻找训练集中最近的图片,我们会寻找k个最相近的图片,并且让他们再测试图片上投票...
  • 亲测真正好用的WordPress媒体库图片分类插件
  • 教程 | 猫狗识别 - AI图片分类的样例

    千次阅读 2018-12-17 19:25:32
    猫狗识别 - AI图片分类的样例 项目官方网址 该数据有猫和狗两类图片,一共有25000张图片,猫狗各占一半,可以用来做图片分类的入门数据。 样例代码说明 app.yaml 是项目的配置文件,项目目录下必须存在这个...
  • 图片分类工具

    2019-04-03 09:44:40
    Eagle Eagle acdsee6pro picasa lightroom xnview

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,623
精华内容 8,649
关键字:

图片分类