实践介绍深度学习和caffe与python -凯发k8国际

`
gashero
  • 浏览: 938463 次
  • 性别:
  • 来自: 北京
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 3)
    • ( 0)
    存档分类
    最新评论

    实践介绍深度学习和caffe与python

    实践介绍深度学习和caffe与python

    作者:

    adil moujahid

    译者:

    gashero

    日期:

    2016-10-28

    地址:

    标题原文:

    a practical introduction to deep learning with caffe and python

    目录

    • 1   问题定义
    • 2   分类:使用传统机器学习vs深度学习
    • 3   深度学习快速教程
      • 3.1   人工神经网络ann
        • 3.1.1   人工神经网络vs生物神经网络
        • 3.1.2   前馈神经网络
        • 3.1.3   激活函数
        • 3.1.4   训练ann
      • 3.2   卷积神经网络(cnn或convnet)
        • 3.2.1   卷积层
        • 3.2.2   汇集层
        • 3.2.3   cnn架构
    • 4   使用cnn构建猫狗分类器
      • 4.1   获取猫狗数据
      • 4.2   机器设置
      • 4.3   caffe概览
      • 4.4   数据准备
      • 4.5   模型定义
      • 4.6   solver定义
      • 4.7   模型训练
        • 4.7.1   绘制学习曲线
      • 4.8   在新数据上的预测
    • 5   使用transfer learning构建猫狗分类器
      • 5.1   什么是transfer learning
      • 5.2   使用transfer learning训练猫狗分类器
        • 5.2.1   下载bvlc_reference_caffenet模型
        • 5.2.2   模型定义
        • 5.2.3   solver定义
        • 5.2.4   通过传输学习训练模型
        • 5.2.5   绘制学习曲线
        • 5.2.6   在新数据上的预测
    • 6   总结

    深度学习是机器学习的大趋势。在计算机视觉、自动语音识别、自然语言处理上有很多成功案例。

    本文的目的是给你个上手简介。基于构建一个猫狗图片分类,使用深度学习算法,叫做卷积神经网络cnn和kaggle数据集( )。

    本文分为两个部分。第一部分是代码概念,第二部分是上手入门。

    在第4节上手入门,我们会构建一个猫狗图片分类器使用一个cnn。在第二部分(第5节),我们会用更高级的技术来训练cnn,叫做transfer learning。我们会使用一些python代码和流行的开源深度学习框架caffe来构建分类器。我们的分类器会实现97%的准确度。

    本文末尾,你会理解cnn的原理,并熟悉构建这些网络的步骤。

    本文的代码在 。

    1   问题定义

    本入门使用kaggle的数据集。包含了25000张图片,有猫和狗。

    目标是构建机器学习算法来检测新的图片。

    机器学习中,这类问题叫 分类(classification)

    2   分类:使用传统机器学习vs深度学习

    机器学习来进行分类有两个阶段:

    1. 训练阶段:训练一个机器学习算法,使用有对应标签的数据集
    2. 预测阶段:使用训练过的模型来预测(predict)新图片的标签

    图片分类的训练阶段有两个主要步骤:

    1. 特征提取(feature extraction):使用领域知识来提取新的特征,用于机器学习算法,hog和sift是图片分类的例子
    2. 模型训练:使用干净的数据集,包括图片的特征和对应的标签来训练机器学习模型

    在预测阶段,我们使用相同的特征提取器来处理新图片,并传入这些特征到训练过的机器学习算法来预测标签。

     

    传统机器学习和深度学习算法的区别是特征工程(feature engineering)。传统机器学习算法,需要手工设计特征。相对的在深度学习中,特征的设计由算法自动完成。特征工程很困难,消耗时间和领域知识。深度学习的优势是无需特征工程就能做到更好的准确率。

     

    3   深度学习快速教程

    深度学习是很多处理层构成的人工神经网络(ann=artificial neural networks)。ann存在了几十年,但是对训练深度架构的ann是从geoffrey hinton开始的,在2000年中期。除了算法创新,gpu的强大计算能力和大量的数据集都帮助了深度学习的迅速成长。

    3.1   人工神经网络ann

    ann是一系列模仿生物神经网络的模型。

    3.1.1   人工神经网络vs生物神经网络

    生物神经网络是大脑的核心。一个神经元(neuron)由细胞体、树突(dendrite)、轴突(axon)构成。会处理和传输信息到其他神经元,通过发射电信号。每个神经元从树突接受输入信号并通过轴突产生输出信号。轴突的分支输出,通过突触(synapse)连接到其他神经元的树突。

    一个神经元工作的基本模型:每个突触有个强度,是可以被学习和控制的。树突将输入信号带入神经元做求和,如果求和结果高于一定的阈值,神经元就被点亮,通过轴突发送脉冲出去。

    人工神经元受到了生物神经元的启发,尝试模拟模型来解释如上计算模式。一个人工神经元拥有数量有限的输入,且没有输入都有一个权重,以及一个激活函数(也叫传输函数)。神经元的输出是激活函数应用了输入权重再求和的结果。人工神经元回想连接,构成了ann。

     

    3.1.2   前馈神经网络

    前馈神经网络是ann最简单的形式。

    这个网络由3种类型的层:输入层、隐藏层、输出层。这些网络中,数据从输入层通过隐藏层到达输出层。

    下面的例子是全连接前馈神经网络(fully-connected feedforward neural network)的例子,有两个隐藏层。全连接意味着每个结点都连接到下一层的所有结点。

    注意:隐藏层的数量以及大小是仅有的自由参数。更大和更深的隐藏层,理论上就可以得到更加复杂的模式。

     

    3.1.3   激活函数

    激活函数将输入权重的和转换为人工神经元。这些函数应该是非线性的,来编码复杂的数据模式。最流行的激活函数是sigmoid、tanh和relu。relu是深度学习中最流行的激活函数。

     

    3.1.4   训练ann

    训练阶段就是学习网络的权重,我们需要两个元素来训练一个ann:

    1. 训练数据:训练数据由图片和对应的标签组成
    2. 损失函数:测量预测准确率

    一旦我们有了这两个,训练ann使用的算法叫 backpropagation(反向传播) ,和梯度下降(gradient descent)或者是他的导数。反向传播的细节,推荐 。

    3.2   卷积神经网络(cnn或convnet)

    cnn是一种特殊类型的前馈网络。这些模型设计用于模拟视觉皮层(visual cortex)。cnn在视觉识别任务中的效果很好。cnn拥有一些特殊的层叫做卷积层(convolutional layer)和汇集层(pooling layer),允许网络编码图像属性。

     

    3.2.1   卷积层

    这个层由一系列可学习的图片空间过滤器组成,计算输入图像和过滤器的点积。过滤器应该扩展为全深度的输入图像。例如,如果我们想要使用5x5大小的过滤器到32x32的彩色图像,那么过滤器应该拥有深度3(5x5x3)来覆盖所有3个颜色通道。这些过滤器会在看到特定图像结构时激活。

     

    3.2.2   汇集层

    汇集(pooling)是一种非线性降采样(down-sampling)。汇集层的目标是逐步降低网络计算参数的空间大小,也有避免过拟合(overfitting)。有多种方法实现汇集,但max pooling最常用。汇集通常使用2x2过滤器,通过一个最大2步到每个深度切片。一个汇集层的大小为2x2包含2个缩小输入图像到1/4的原始大小。

     

    如上max pooling示例将每个角落中最大的数字作为结果。

    3.2.3   cnn架构

    最简单的cnn架构,拥有一个输入层(图像),跟着一系列的卷积层和汇集层,最后以全连接层结束。卷积层通常跟着一层relu激活函数。

    卷积、汇集、relu层作为可学习的特征提取器,而全连接层作为机器学习的分类器。此外,靠前的层编码通用的图像模式,后面的层编码图像模式的细节。

    注意,不是所有的卷积层和全连接层都拥有权重。这些权重在训练阶段是可学习的。

     

    4   使用cnn构建猫狗分类器

    本章使用cnn实现一个猫狗分类器。我们会使用kaggle的数据集。要实现cnn,我们将会使用caffe框架和一些python代码。

    4.1   获取猫狗数据

    要获取数据,需要从 下载两个数据集, train.ziptest1.zip 。前者是训练数据,后者是未标注的测试数据。我们还可以上传我们的预测结果到kaggle来获得预测模型的分数。

    4.2   机器设置

    要训练一个cnn,我们需要有强大gpu的电脑。

    本文档里,作者使用了aws ec2的g2.2xlarge实例。这个实例有高性能的nvidia gpu,有1536个cuda核心和4gb显存,15gb内存和8个cpu核心。机器的价格是$0.65/h。

    如果你对aws不熟悉,这里有设置的文档 。

    注意:文章推荐的ami已经失效,所以作者准备了一个ami(ami-64d31209),包含了所有必要的软件。也创建了新的指南 用以安装caffe和 anaconda 到aws ec2和ubuntu机器。

    在设置aws实例后,我们连接和clone代码,包含python代码和caffe配置。从你的终端执行:

    git clone https://github.com/adilmoujahid/deeplearning-cats-dogs-tutorial.git

    然后,创建一个input目录用于存储训练和测试数据:

    cd deeplearning-cats-dogs-tutorial

    mkdir input

    4.3   caffe概览

    caffe是bvlc=berkeley vision and learning center开发的框架,以c 编写,有python和matlab绑定。

    使用caffe训练cnn有4个步骤:

    1. 数据准备:清理图片并存储到caffe可用的格式,我们使用python会处理图片预处理和存储
    2. 模型定义:选择cnn架构并定义其参数到配置文件.prototxt
    3. solver定义:solver对应的是模型优化器,我们定义solver参数到.prototxt
    4. 模型训练:用caffe的命令训练一个模型,训练后,我们会得到模型.caffemodel

    在训练阶段后,我们使用.caffemodel模型来预测新的数据。我们用python搞定。

    4.4   数据准备

    先拷贝 train.ziptest1.zip 到aws ec2实例的input目录。可以用scp命令,然后解压:

    unzip ~/deeplearning-cats-dogs-tutorial/input/train.zip

    unzip ~/deeplearning-cats-dogs-tutorial/input/test1.zip

    rm ~/deeplearning-cats-dogs-tutorial/input/*.zip

    然后运行 create_lmdb.py

    cd ~/deeplearning-cats-dogs-tutorial/code

    python create_lmdb.py

    create_lmdb.py 会做如下事情:

    1. 运行直方图均衡化(histogram equalization)到所有训练图片,这会调整图片的对比度
    2. 调整图片大小到227x227格式
    3. 分割训练数据为两部分:一部分(5/6的图片)用于训练,另一部分(1/6)用于验证,验证集用于计算模型的准确度
    4. 存储训练和验证数据到2个lmdb数据库, train_lmdb 用于训练, validation_lmdb 用于模型验证

    如下是代码重要部分:

    def transform_img(img, img_width=image_width, img_height=image_height):

     

        #histogram equalization

        img[:, :, 0] = cv2.equalizehist(img[:, :, 0])

        img[:, :, 1] = cv2.equalizehist(img[:, :, 1])

        img[:, :, 2] = cv2.equalizehist(img[:, :, 2])

     

        #image resizing

        img = cv2.resize(img, (img_width, img_height), interpolation = cv2.inter_cubic)

     

        return img

    transform_img() 接受彩色图像输入,做直方图均衡化3个颜色通道,并调整图像大小。

     

    def make_datum(img, label):

     

        return caffe_pb2.datum(

            channels=3,

            width=image_width,

            height=image_height,

            label=label,

            data=np.rollaxis(img, 2).tostring())

    make_datum() 接受图像和标签输入,并返回 datum 对象包含了图像机器标签。

    in_db = lmdb.open(train_lmdb, map_size=int(1e12))

    with in_db.begin(write=true) as in_txn:

        for in_idx, img_path in enumerate(train_data):

            if in_idx %  6 == 0:

                continue

            img = cv2.imread(img_path, cv2.imread_color)

            img = transform_img(img, img_width=image_width, img_height=image_height)

            if 'cat' in img_path:

                label = 0

            else:

                label = 1

            datum = make_datum(img, label)

            in_txn.put('{:0>5d}'.format(in_idx), datum.serializetostring())

            print '{:0>5d}'.format(in_idx) ':' img_path

    in_db.close()

    如上代码接受训练图片,转换和存储到 train_lmdb 。用于验证和存储的代码差不多,就不写了。

    生成训练数据的平均图像:

    我们执行如下命令来生成训练数据的平均图像。我们让输入图像减去平均图像后来确保每个特征像素都是0均值(zero mean)的。这是有监督机器学习的常用预处理步骤:

    /home/ubuntu/caffe/build/tools/compute_image_mean \

        -backend=lmdb /home/ubuntu/deeplearning-cats-dogs-tutorial/input/train_lmdb \

        /home/ubuntu/deeplearning-cats-dogs-tutorial/input/mean.binaryproto

    4.5   模型定义

    在确定了cnn架构后,我们需要在.prototxt文件train_val中定义其参数。caffe自带了流行的cnn模型,例如alexnet和googlenet。本文中我们使用 bvlc_reference_caffenet 模型,属于alexnet的修改。在复制 train_val 后我们命名为 caffenet_train_val_1.prototxt 。如果你想克隆本文的代码,你应该用相同的名字 deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/

    我们需要修改原始的 bvlc_reference_caffenet 的prototxt文件:

    1. 改变输入数据路径和平均图像:24、40、50行
    2. 改变输出数量从1000到2:373行,就是输出有几个类

    我们可以打印出架构,通过如下命令。模型架构图像会存储在 deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/caffe_model_1.png

    python /home/ubuntu/caffe/python/draw_net.py \

        /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/caffenet_train_val_1.prototxt \

        /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/caffe_model_1.png

    4.6   solver定义

    solver是模型优化的主管。我们定义solver参数在一个.prototxt文件中。你可以在 deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/solver_1.prototxt

    solver会在每1000次迭代就使用验证集计算模型精度。优化流程会运行最大40000次迭代,并每5000次迭代生成一个快照模型。

    base_lrlr_policygammamomentumweight_decay 是超参数(hyperparameter),我们需要调整以便获得模型更好的收敛(convergence)。

    作者选择了 lr_policystepsize: 2500base_lr: 0.001gamma: 0.1 。在这个配置下,我们开始的学习率为0.001,然后调低学习率通过系数10,在每2500次迭代。

    还有其他的优化策略。对细节的解释,建议 。

    4.7   模型训练

    在定义好模型和sovler后,通过如下命令开始训练:

    /home/ubuntu/caffe/build/tools/caffe train \

        --solver /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/solver_1.prototxt 2>&1 \

        | tee /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/model_1_train.log

    训练产生的日志会存放到 deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/model_1_train.log

    在训练时,我们需要监控损失(loss)和模型精度。可以在任何时候停止这个过程,通过ctrl c。caffe会在训练模型每5000个迭代时产生一个快照,并存储到 caffe_model_1 目录。

    快照拥有.caffemodel扩展名。例如10000次迭代的快照叫做 caffe_model_1_iter_10000.caffemodel

    4.7.1   绘制学习曲线

    学习曲线是显示训练和测试损失的功能。对于训练/验证损失和精度很有用。

    我们可以通过学习曲线来了解模型和验证何时到达90%,以及在3000次迭代后就不再改进了:

    python /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/code/plot_learning_curve.py \

        /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_models/caffe_model_1/model_1_train.log \

        /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_models/caffe_model_1/caffe_model_1_learning_curve.png

     

    4.8   在新数据上的预测

    现在我们拥有了训练过的模型,我们可以用它来预测新的数据(从test1而来)。 deeplearning-cats-dogs-tutorial/code/make_predictions_1.py 就是预测代码。需要4个文件来运行:

    1. 测试图片:使用test1图片
    2. 平均图片:如上4.4节得到的
    3. 模型结构图: deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/caffenet_deploy_1.prototxt 结构类似于 caffenet_train_va1_1.prototxt ,但是有少量修改,需要删除数据层,添加输入层并改变最后一层从softmaxwithlost为softmax
    4. 训练模型权重:这个文件是训练阶段计算得到的,使用 caffe_model_1_iter_10000.caffemodel

    要运行这个python代码,我们需要执行如下命令。预测会存储到 deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/submission_mode_1.csv

    cd /home/ubuntu/deeplearning-cats-dogs-tutorial/code

    python make_predictions_1.py

    如下解释重要的代码部分:

    #read mean image

    mean_blob = caffe_pb2.blobproto()

    with open('/home/ubuntu/deeplearning-cats-dogs-tutorial/input/mean.binaryproto') as f:

        mean_blob.parsefromstring(f.read())

    mean_array = np.asarray(mean_blob.data, dtype=np.float32).reshape(

        (mean_blob.channels, mean_blob.height, mean_blob.width))

     

     

    #read model architecture and trained model's weights

    net = caffe.net('/home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/caffenet_deploy_1.prototxt',

                    '/home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_1/caffe_model_1_iter_10000.caffemodel',

                    caffe.test)

     

    #define image transformers

    transformer = caffe.io.transformer({'data': net.blobs['data'].data.shape})

    transformer.set_mean('data', mean_array)

    transformer.set_transpose('data', (2,0,1))

    如上代码存储平均图像为 mean_array ,通过读取部署文件和训练模型定义模型叫做 net ,然后定义变换,应用到测试图像。

    img = cv2.imread(img_path, cv2.imread_color)

    img = transform_img(img, img_width=image_width, img_height=image_height)

     

    net.blobs['data'].data[...] = transformer.preprocess('data', img)

    out = net.forward()

    pred_probas = out['prob']

    print pred_probas.argmax()

    如上代码读取图像,应用与训练阶段相似的图像处理步骤,计算每个类的概率并打印最大概率的类,0=猫,1=狗。

    之后提交预测结果到kaggle,给出精度为0.89691。

    5   使用transfer learning构建猫狗分类器

    本节使用一个强大而实用的技术叫做transfer learning来构建我们的猫狗分类器。

    5.1   什么是transfer learning

    cnn需要大量的数据集和大量的计算时间来训练。一些网络可能需要2-3周,以及多个gpu来训练。传输学习则是解决这两个问题的办法。与其从头训练网络,传输学习使用已经训练的模型和不同的数据集,并适应更多要解决的问题。

    传输学习的两个策略:

    1. 把训练出的模型作为特征提取器:在这个策略里,我们是你出最后的全连接层,冻结剩余层的权重,并训练在剩余层的输出上做分类器
    2. fine-tune训练过的模型:继续调优训练过的模型到新的数据集,持续做反向传播,我们可以同时在整个网络做调优或者冻结一部分的层

    传输学习的细节解释,参见 。

    5.2   使用transfer learning训练猫狗分类器

    caffe自带了版本库给研究者和机器学习实践者来共享训练过的模型,叫做 model zoo: 。

    我们可以使用传输学习,将训练过的 bvlc_reference_caffenet 作为起点来构建我们的猫狗分类器。这个模型是在imagenet上训练过的。

    我们使用调优策略来训练模型。

    5.2.1   下载bvlc_reference_caffenet模型

    cd /home/ubuntu/caffe/models/bvlc_reference_caffenet

    wget http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel

    5.2.2   模型定义

    模型定义和sovler配置文件存储在 deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_2 中。我们需要gaiiban原始的 bvlc_reference_caffenet 模型配置文件。

    1. 改变输入数据路径和平均图像:24、40、51行
    2. 改变最后全连接层从fc8到fc8-cats-dogs:360、363、387、397行
    3. 改变输出数量:从1000到2,373行

    现在我们保持层的名字不变,并传入训练过的模型权重到caffe,就会选择从训练过的模型载入权重。如果我们想要冻结层,就需要设置他的 lr_mult 参数为0。

    模型配置的 caffe_train_val_2.prototxt 就不粘贴了,400行呢。文件中 lr_mult 有多处,取值是1和2,没见到0。

    5.2.3   solver定义

    使用一个相似的sovler:

    net: "/home/ubuntu/cats-dogs-tutorial/caffe_models/caffe_model_2/caffenet_train_val_2.prototxt"

    test_iter: 1000

    test_interval: 1000

    base_lr: 0.001

    lr_policy: "step"

    gamma: 0.1

    stepsize: 2500

    display: 50

    max_iter: 40000

    momentum: 0.9

    weight_decay: 0.0005

    snapshot: 5000

    snapshot_prefix: "/home/ubuntu/cats-dogs-tutorial/caffe_models/caffe_model_2/caffe_model_2"

    solver_mode: gpu

    5.2.4   通过传输学习训练模型

    定义好模型和solver后,可以开始训练。注意我们传递训练过的模型权重作为 --weights 参数:

    /home/ubuntu/caffe/build/tools/caffe train \

        --solver=/home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_2/solver_2.prototxt \

        --weights /home/ubuntu/caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel 2>&1 \

        | tee /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_2/model_2_train.log

    5.2.5   绘制学习曲线

    类似于之前的章节,我们绘制学习曲线。可以看到在1000次迭代后,模型的精度就达到了97%。这展示了传输学习的力量。我们可以在更小的迭代就获得类似的准确率:

    python /home/ubuntu/deeplearning-cats-dogs-tutorial/code/plot_learning_curve.py \

        /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_2/model_2_train.log \

        /home/ubuntu/deeplearning-cats-dogs-tutorial/caffe_models/caffe_model_2/caffe_model_2_learning_curve.png

    5.2.6   在新数据上的预测

    之前做过,预测并上传到kaggle来获得模型精度。预测的代码在 deeplearning-cats-dogs-tutorial/code/make_predictions_2.py

    模型的精度达到了0.97154,比之前从头训练的还好。

    6   总结

    本文覆盖了深度学习和cnn的核心概念。也学习了如何使用caffe和python来从头构建cnn,以及使用transfer learning。如果想要了解更多,强烈推荐stanford的cnn视觉识别: 。

    0
    1
    分享到:
    评论

    相关推荐

      这文档属于ubuntu16.04桌面版安装cuda cudnn matlab python nccl opencv caffe pytorch tensflow1.8.docx;自己通过实践在服务器上安装没有问题,需要的朋友请下载,文档把遇到安装opencv caffe报错信息做了一个汇总...

      caffe(convolutional architecture for fast feature embedding):是一种常用的深度学习框架,主要应用在视频、图像处理方面的应用上。既可以在cpu上运行也可大数据与人工智能的关系全文共2页,当前为第2页。...

      一个涵盖人工智能、机器学习和深度学习相关领域的自由、开放平台 优质博文 : 深度学习各个方向资源汇总,及各大顶级会议/期刊资源 : 帮助开发人员使用机器学习的知识解决复杂的问题 :一个提供随时可用的一流ai解决...

      keras中文文档,清晰。keras是一个高层神经网络api,keras由纯python...与python协作:keras没有单独的模型配置文件类型(作为对比,caffe有),模型由python代码描述,使其更紧凑和更易debug,并提供了扩展的便利性

      时间分段网络:迈向深度动作识别的良好实践,王立民,熊远军,王哲,于乔,林大华,唐小鸥和卢克·范·高尔, eccv 2016 ,阿姆斯特丹,荷兰。 [] 新闻与更新 2017年9月8日-我们发布了在kinetics数据集上训练的tsn...

      时间分段网络:迈向深度动作识别的良好实践,王立民,熊远军,王哲,于乔,林大华,唐小鸥和卢克·范·高尔, eccv 2016 ,阿姆斯特丹,荷兰。 [] 新闻与更新 2017年9月8日-我们发布了在kinetics数据集上训练的tsn...

      时间分段网络:迈向深度动作识别的良好实践,王立民,熊远军,王哲,于乔,林大华,唐小鸥和卢克·范·高尔, eccv 2016 ,阿姆斯特丹,荷兰。 [] 新闻与更新 2017年9月8日-我们发布了在kinetics数据集上训练的tsn...

      时间分段网络:迈向深度动作识别的良好实践,王立民,熊远军,王哲,于乔,林大华,唐小鸥和卢克·范·高尔, eccv 2016 ,阿姆斯特丹,荷兰。 [] 新闻与更新 2017年9月8日-我们发布了在kinetics数据集上训练的tsn...

      时间分段网络:迈向深度动作识别的良好实践,王立民,熊远军,王哲,于乔,林大华,唐小鸥和卢克·范·高尔, eccv 2016 ,阿姆斯特丹,荷兰。 [] 新闻与更新 2017年9月8日-我们发布了在kinetics数据集上训练的tsn...

      深度学习 pytorch框架 tensorflow框架 caffe框架 ... 工程应用类 数据库 网络编程 ... 代码实践 200 leetcode-medium 达成 ... 建立此git的目的: 为了积累平时学习到的零散的知识,以成系统 为了分享自己的知识给...

    global site tag (gtag.js) - google analytics
    网站地图