精华内容
下载资源
问答
  • 深度学习框架caffe入门,详解网络配置中每一个层的结构和参数项,对于超...课程涉及许多caffe框架的小技巧如绘制网络图和loss曲线,自定义python层等。希望大家通过学习可以熟练使用caffe去训练网络完成各自的任务。
  • caffe框架 cpu版本

    2018-11-22 21:25:31
    caffe框架release cpu版,官方下载之后,自己配置好环境后编译成功的,可以直接cmd进行训练,或者加入到python环境中均可
  • 深度学习caffe框架

    2016-05-11 09:38:29
    深度学习caffe框架
  • caffe框架windows版

    2020-10-29 17:19:33
    Caffe window版本。...Caffe,全称Convolutional Architecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。由伯克利人工智能研究小组和伯克利视觉和学习中心开发
  • caffe框架学习资料

    2018-09-28 16:44:18
    caffe框架学习资料,包含源码解析,架构,官方中译文,学习笔记,资料打包
  • caffe框架文件

    2018-01-30 18:18:41
    caffe框架文件,适用于linux系统下搭建caffe平台。。。。
  • python做深度学习 Caffe框架 python做深度学习 Caffe框架 内涵代码
  • caffe框架源码

    2018-11-22 11:23:09
    国外资源更新过慢 直接从github上下载 caffe源码 其中含有caffe示例demo
  • 一文了解caffe框架

    万次阅读 多人点赞 2019-08-13 16:10:38
    caffe 框架介绍什么是caffeCafee的特点CNN框架:AlexNet数据层(data_layer)数据传递(blob)卷积层(convolution)受限线性单元(RELU)池化层(POOLING)局部响应归一化层(LRN)全连接层(INNER_PRODUCT)...

    什么是caffe

    Caffe 全称:Convolution Architecture For Feature Extraction(用于特征抽取的卷积框架)。

    Caffe是一个清晰、可读性高、快速的深度学习框架。

    背景:
    Caffe前身是decaf,由加州伯克利大学博士贾扬青开发的一个用于深度卷积网络的Python框架(无GPU)模式,之后被伯克利大学实验室团队丰富成caffe。

    在这里插入图片描述

    Cafee的特点

    • Expression:通过文本来构建模型和优化策略,而不是代码。
    • Speed:现有的CNN模型中速度最快。在NVIDIA K40 或Titan GPU*上,训练一张图片要5ms,测试一张图片要2ms。
    • Modularity:易扩展
    • 纯C++/CUDA构建的框架,提供了命令行、Python、MATLAB接口
    • 实现了CPU和GPU的无缝结合
    • Caffe Model Zoo :model share

    #CNN框架:LeNet
    在这里插入图片描述
    1998年LeCun 提出的用于手写字体的卷积神经网络

    CNN框架:AlexNet

    在这里插入图片描述
    AlexNet :2012年Hinton教授和其他学生Alex Krizhevsky, llya Sutskever提出的用于图像识别的CNN框架

    数据层(data_layer)

    caffe 通过数据层获取数据。数据的来源可以是多种形式。例如:

    • LevelDB,LMDB(两种键值对嵌入式数据库管理系统编程库,一般LMDB比LevelDB存取速度快,所以caffe默认的事LMDB)
    • 直接从内存读取
    • HDF5文件
    • 原始图片

    类 data_layer.hpp/data_layer.cpp

    在定义网络的prototxt 文件中可以定义数据层的形式,比如手写字体数据层定义如下:
    在这里插入图片描述

    数据传递(blob)

    • caffe框架中数据是以blob的形式进行传递
    • blob是一个标准的数组,主要负责caffe中数据的存储(store),关联(communicate)。数据在网络结构中要经过正向和反向的传播的过程,在这个过程中要对数据进行存储、数据之间进行通信、以及数据的操作。blob就是负责这个过程。

    在这里插入图片描述

    在具体的形式上blob是回一个4-D结构的array,是按照(Num, Channels. Height, Width)的顺序存储的。

    • Nums:表示一次训练输入的图片数量
    • Channels:表示通道数
    • Height:表示图片高度
    • Width:表示图片的宽度
      实际上blob 是存储的数据在内存中的索引,比如index(n,k,h,w)定位在((n*k + k)*H + h)*W+w。示意图如下:
      在这里插入图片描述

    卷积层(convolution)

    卷积层定义了图像的卷积操作(即特征抽象),参数设置在prototxt中 ,它相关的类定义在conv_layer.cpp

    例如用到的一个卷积
    在这里插入图片描述

    受限线性单元(RELU)

    RELU的全称:rectified linear units
    受限线性单元实际上就是激活函数max(0,x), 它的相关类定义在relu_layer.cpp中。

    在这里插入图片描述
    相比之下,ReLU的速度非常快,而且精准度更高。因此ReLU逐渐取代sigmoid成为主流

    池化层(POOLING)

    池化层定义了对对象的降维操作。它的相关类定义在pooling_layer.cpp。参数设置prototxt中。
    在这里插入图片描述

    局部响应归一化层(LRN)

    LRN全称是Local Response Normalization,相关的类定义在lrn_layer.cpp中,其参数定义在prototxt中。局部响应归一化层完成一种“临近抑制”操作,对局部输入区域进行归一化。本质上是防止激活函数饱和,能提升网络的泛化能力,将错误率降低。
    在这里插入图片描述
    local_size:两种表示

    • 通道间归一化时表示求和的通道数
    • 通道内归一化时表示求和区间的边长;默认值为5

    alpha:缩放因子,默认值为1

    beta:指数项,默认值为1

    NormRegion:选择对相邻通道间归一化or通道内空间区域归一化,默认为ACROSS_CHANNELS。

    在通道间归一化模式中,局部区域范围在相邻通道间,但没有空间扩展(即尺寸为local_size11);在通道内归一化模式中,局部区域在空间上扩展,但只针对独立通道进行(即尺寸为1local_sizelocal_size);每个输入值都将除以在这里插入图片描述

    全连接层(INNER_PRODUCT)

    全连接层相关的类定义在inner_product_layer.cpp中,输出特征都是1*1的特征,参数定义在prototxt中。
    在这里插入图片描述

    Dropout层

    Dropout层的相关类定义在dropout.cpp中,它的作用是防止过拟合和降低计算复杂度。
    在这里插入图片描述
    在这里插入图片描述
    在实际训练中,每个节点都以相互独立的以p概率出现,实验证明p=0.5时在大规模网络中效果最优。

    输出(分类)层(softmax)

    相关类定义在softmax_lay,cpp

    在这里插入图片描述

    展开全文
  • 本文参考以下系列内容: tensorflow2caffe(1) : caffemodel解析,caffemodel里面到底记录了...tensorflow2caffe(3) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数 tensorflow2caffe(4) : c...

    本文参考以下系列内容:

    tensorflow2caffe(1) : caffemodel解析,caffemodel里面到底记录了什么?

    tensorflow2caffe(2) : 如何在tensorflow中取出模型参数

    tensorflow2caffe(3) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数

    tensorflow2caffe(4) : caffemodel的生成与tensorflow2caffe框架转换的总结

    tensorflow训练好的模型转caffe模型---2019cvpr的人脸关键点PFLD模型为例

    1、提取tensorflow模型的权重参数

        tensorflow模型文件结构:

      (1)checkpoint文件:这是一个训练结果的索引,可以看到我们保存的模型(对应保存模型的程序在tensorflow的训练程序中,比较爱使用tf.Train.Saver.save接口存储模型参数)

      (2)**.mata文件:一个记录Graph的文件,在tensorflow中,Graph记录了所有数据的流向,规定了整个模型的结构。

        (3)  **.data-00000-of-00001文件:这个文件比较大(往往几十甚至上百M),这个文件是记录了我们训练得到的数据,

                                                             是以压缩性形式存储的。

        (4)  **.index文件:这个文件记录了数据的index,就是需要提取参数的时候,在meta文件中找到了参数名,
                                      然后通过这个index,再从训练数据文件中提取数据具体的值。

      提取出tensorflow的训练参数步骤:
      (1)载入数据流图;
      (2)通过checkpoint找到目前最新的训练保存结果;
      (3)提取训练得到的所有参数。

    import numpy as np
    import tensorflow as tf
    
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    config = tf.ConfigProto(allow_soft_placement=True)
    with tf.Session(config=config) as sess:
        new_saver = tf.train.import_meta_graph('WingLoss_v1_300.meta')  #load graph
        new_saver.restore(sess, WingLoss_v1_300)
        all_vars = tf.trainable_variables()  #get the param names
        for v in all_vars:
            name = v.name.replace('/', '_').replace(":0","")
            fname = layer_params_save_path+ name + '.prototxt'
            print(v.name)
            print(fname)
            v_4d = np.array(sess.run(v))
            print(v_4d.shape)

    2、训练的权重参数由 tf 转成caffe

    目前手里面已经有的东西:
    (1)我们有自己的tensorflow训练程序,即:知道训练的网络架构。
    (2)我们能够得到tensorflow架构训练得到的参数,并且我们知道我们的主要目的是得到一个caffemodel。
    现在还缺少的东西:
    当我们使用caffe框架训练模型完毕后,需要测试这个模型,我们必须的东西什么?
    (1)我们需要一个caffemodel
    (2)在模型测试的时候,我们需要一个.prototxt文件,该文件记录了网络前传的逻辑顺序

    当使用caffe框架训练模型的时候,我们会使用一个prototxt文件,姑且就叫他train.prototxt吧。
    那么,在测试模型的时候,我们同样使用了一个prototxt文件,姑且将该文件称为test.prototxt。
    那么,如何将train.prototxt、训练得到的caffemodel文件还有test.prototxt文件关联起来呢?
    答案是这样的:caffemodel里面包含了绝大部分train.prototxt的内容。
    为什么要这么做,是因为train.prototxt除了约定了训练网络架构与参数配置
    更重要的是规定了键名,这个键名就是layer中的"name"参数,而该键名也会记录在caffemodel中
    在我们训练完毕模型并使用test.prototxt结合caffemodel对模型进行测试时,
    相当于是根据test.prortotxt中的layer的"name"参数去取得键名,然后根据这个键名在caffemodel中取得参数
    ,然后才能进行网络的前向传播。到这里,请读者朋友们明白,test.prototxt是根据键名去caffemodel中取参数的,
    也就是说,如果提供的键名在caffemodel中找寻不到,那么也就无从取值。
    这其实和我们使用caffe框架训练模型时需要去finetune成熟模型的部分层的参数
    于是我们就将我们的模型中需要finetune的layer的"name"参数改成finetune的caffemodel中对应layer的"name"一样是同一个道理.

    经过上面一段话的阐述,就明白了目前还缺少什么东西:
    (1) 我们需要一个test.prototxt。
    (2) 我们需要将tensorflow训练出来的参数转化成文本,并且写在test.prototxt里面。

    在撰写test.prototxt的时候,网络架构应该按照tensorflow训练程序的网络架构来。
    也就是说,在写作test.prototxt的时候,需要对tensorflow框架下面的训练网络架构相当熟悉,
    并且明了tensorflow和caffe下面的框架协议规范。
    举个栗子,在写tensorflow卷积层时候,有很多读者朋友可能会使用padding = "SAME" 这个参数
    可是在caffe,没有那么智能的操作,因此在写test.prototxt框架下面卷积层的定义参数的时候,需要人为地去pad
    再比如说,tensorflow下面的卷积实现的时候有时没有在权重中加上bias,只有weight
    那么在撰写test.prototxt的时候,就需要在该卷积层convolution_param的大括号中,加上"bias_term: false"的定义

    在1中,已经能够打印出tensorflow下训练得到的权重参数的名字了,也就是说可以得到权重。
    以卷积层为例,tesorflow框架下卷积层的权重shape是[kernel_height, kernel_width, input_channels, output_channels],
    [H W C N],(相反,反卷积层的权重shape是[kernel_height, kernel_width, output_channels, input_channels])

    caffemodel在每一个layer中,记录参数的blobs大括号尾部,有一个shape属性,里面的dims就记录了caffe框架下的参数格式
    在caffe框架中,卷积层权重参数shape是[output_channels, input_channels, kernel_height, kernel_width],即 [N C H W]
    (相反地,反卷积层权重参数是[input_channels, output_channels, kernel_height, kernel_width])。
    因此,我们需要将参数的维度通过numpy的swapaxes函数加以变换。

    具体代码如下:

    # coding=utf-8
    import os
    import numpy as np
    import tensorflow as tf
    
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    
    layer_params_save_path = "./layer_params_save/"
    
    config = tf.ConfigProto(allow_soft_placement=True)
    with tf.Session(config=config) as sess:
        new_saver = tf.train.import_meta_graph(WingLoss_v1_300.meta)
        new_saver.restore(sess, WingLoss_v1_300)
        all_vars = tf.trainable_variables()
        for v in all_vars:
            name = v.name.replace('/', '_').replace(":0","")
            fname = layer_params_save_path+ name + '.prototxt'
            print(v.name)
            print(fname)
            v_4d = np.array(sess.run(v))
            print(v_4d.shape)
            # 维度为4的是卷积层权重
            if v_4d.ndim == 4:
                # 两个框架之间对卷积的处理顺序不一致,
                # 将TensorFlow的维度[ H, W, C, N ]顺序变换为caffe的维度[ N, C, H, W ]
                # 使用numpy的swapaxes函数进行顺序变换
                v_4d = np.swapaxes(v_4d, 0, 2)  # swap H, C
                v_4d = np.swapaxes(v_4d, 1, 3)  # swap N, W
                v_4d = np.swapaxes(v_4d, 0, 1)  # swap C, N
    
                f = open(fname, 'w')
                vshape = v_4d.shape[:]
                v_1d = v_4d.reshape(v_4d.shape[0] * v_4d.shape[1] * v_4d.shape[2] * v_4d.shape[3])
                f.write('  blobs {\n')
                for vv in v_1d:
                    f.write('    data: %8f' % vv)
                    f.write('\n')
                f.write('    shape {\n')
                for s in vshape:
                    f.write('      dim: ' + str(s))
                    f.write('\n')
                f.write('    }\n')
                f.write('  }\n')
    
            # 维度为1的是偏置项(包含卷积与全连接层)
            elif v_4d.ndim == 1:
                f = open(fname, 'w')
                # conv/fc 这个参数可以自行更改 根据TensorFlow训练代码的name更改
                # 这里加个if的目的是区分卷积层与全连接层
                # 如果是全连接层就直接写入权重文件(反正就是个矩阵)#原作者的不经过这一步
                if 'fc'in fname:
                    f.write('  blobs {\n')
                    for vv in v_4d:
                        f.write('    data: %.8f\n' % vv)
                    f.write('    shape {\n')
                    f.write('      dim: ' + str(v_4d.shape[0]))  # print dims
                    f.write('\n')
                    f.write('    }\n')
                    f.write('  }\n')
                # 其余的是卷积层 就加上caffe的模板格式
                else:
                    f.write('  blobs {\n')
                    for vv in v_4d:
                        f.write('    data: %.8f' % vv)
                        f.write('\n')
                    f.write('    shape {\n')
                    f.write('      dim: ' + str(v_4d.shape[0]))  # print dims
                    f.write('\n')
                    f.write('    }\n')
                    f.write('  }')
            #     if 'BatchNorm_moving_variance' in fname:
            #         print(gamma_name)  # 如果是bn层的话,就多数值是1的gamma参数,并打印名字
            #         f1 = open(gamma_name, 'w')
            #         f1.write('  blobs {\n')
            #         for vv in v_4d:
            #             f1.write('    data: 1')
            #             f1.write('\n')
            #         f1.write('    shape {\n')
            #         f1.write('      dim: ' + str(v_4d.shape[0]))  # print dims
            #         f1.write('\n')
            #         f1.write('    }\n')
            #         f1.write('  }')
            #         f1.close()
    
            # 维度为2的是全连接层的权重
            elif v_4d.ndim == 2:
                f = open(fname, 'w')
                vshape = v_4d.shape[:]
                # 将TensorFlow的维度[ C, N ]顺序变换为caffe的维度[ N, C ]
                v_4d = np.swapaxes(v_4d, 0, 1)  # swap C, N ,tf和cf不同之处
                v_1d = v_4d.reshape(v_4d.shape[0] * v_4d.shape[1])
                f.write('  blobs {\n')
                for vv in v_1d:
                    f.write('    data: %8f\n' % vv)
                f.write('    shape {\n')
                f.write('      dim: ' + str(v_4d.shape[0]))  # print dims
                f.write('\n')
                f.write('      dim: ' + str(v_4d.shape[1]))  # print dims
                f.write('\n')
                f.write('    }\n')
                f.write('  }')
            else:
                print(v_4d.ndim)  # 打印一下,防止有些层忽略了
            f.close()
    
    
    

    可以看到,转化为caffe框架格式的各层权重参数文件已经保存在了路径下,随便打开一个卷积文件头尾部如下:

      

    我们有了一个test.prototxt文件,还有了各个层的参数,那么,下面就将我们转化得到的参数写入test.prototxt文件就好了。
    那么,参数应该写到层里面的什么地方呢?很简单,直接将我们得到的参数文件写入对应层的大括号内就好
    如下代码示意:

    layer {
    
    	name: "conv_layer_name"
    	type: "Convolution"
    	bottom: "bottom_blob"
    	top: "top_blob"
    	param { lr_mult: ... }
    	convolution_param {
    		num_output: output_dims
    		kernel_size: kernel_size
    		pad: padding_size
    		stride: stride
    		bias_term: false
    	}
    	#add params
            blobs: {
              data: ...
              ...
              shape {
                dim: ...
                dim: ...
                dim: ...
                dim: ...
              }
            }
    }
    

    3、生成caffemodel

    caffemodel文件里面记载了什么,而在读caffemodel文件的时候,我们使用了ReadProtoFromBinaryFile函数将参数从二进制读出到proto中,搭配WriteProtoToTextFile函数将参数从proto中写入文件

    在生成caffemodel时,正好是该过程的逆。
    根据读caffemodel的经验,凭借直觉直接进入了caffe-master/src/caffe/util/io.cpp文件,
    并从中找到了可以利用的函数。我们可以先使用ReadProtoFromTextFile将文件中的参数写入proto
    然后再使用WriteProtoToBinaryFile函数将proto中的参数转化为caffemodel

    具体代码如下:

    #include <caffe/caffe.hpp>
    #include <google/protobuf/io/coded_stream.h>
    #include <google/protobuf/io/zero_copy_stream_impl.h>
    #include <google/protobuf/text_format.h>
    #include <algorithm>
    #include <iosfwd>
    #include <memory>
    #include <string>
    #include <utility>
    #include <vector>
    #include <iostream>
    #include "caffe/common.hpp"
    #include "caffe/proto/caffe.pb.h"
    #include "caffe/util/io.hpp"
    
    using namespace caffe;
    using namespace std;
    using google::protobuf::io::FileInputStream;
    using google::protobuf::io::FileOutputStream;
    using google::protobuf::io::ZeroCopyInputStream;
    using google::protobuf::io::CodedInputStream;
    using google::protobuf::io::ZeroCopyOutputStream;
    using google::protobuf::io::CodedOutputStream;
    using google::protobuf::Message;
    
    int main()
    {
    	NetParameter proto;
    	ReadProtoFromTextFile("/home/cvlab/model/model.prototxt", &proto);
    	WriteProtoToBinaryFile(proto, "/home/cvlab/model/model.caffemodel");
    	return 0;
    }
    

    到这里,tensorflow2caffe框架转换的工作就正式完成了,得到了caffemodel。

    4、测试转换后的caffe模型推理效果

    要得到网络的前传结果,就直接使用c++或者python的网络前传程序调用测试网络文件和模型参数进行网络前传得到结果就行了。可参照博客:在c++程序中调用caffe训练完毕的模型进行分类

    下面介绍了在python中调用转换后的caffe模型代码以及效果图

    import caffe
    import cv2
    import numpy as np
    path_prototxt = "D:/project/2_landmark/Landmark67_net_nodropout_bn.prototxt"
    path_caffemodel = "D:/project/2_landmark/Landmark67_model_nodropout_bn.caffemodel"
    
    img_path = 'D:/project/2_landmark/base/3Test/images/'
    img_name = 'a.jpg'#
    img_save = 'a_save.jpg'
    
    net = caffe.Net(path_prototxt, path_caffemodel, caffe.TEST)
    print(net.blobs['data'].data.shape) # (1, 1, 60, 60)
    image = caffe.io.load_image(img_path + img_name, color=False)
    print(image.shape)
    transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
    transformer.set_transpose('data', (2, 0, 1)) # 将图像的通道数设置为outermost的维数
    # transformer.set_raw_scale('data', 1)  # 将像素值从[0,255]变换到[0,1]之间
    # transformer.set_channel_swap('data', (2, 1, 0)) # 交换通道,从RGB变换到BGR
    transformed_image = transformer.preprocess('data', image) #执行上面设置的图片预处理操作,
    net.blobs['data'].data[...] = transformed_image  # 并将图片载入到blob中
    detections = net.forward()['fc']
    pre_landmark = detections.reshape(-1)
    print(pre_landmark.shape)
    image1 = cv2.imread(img_path + img_name)
    LAND_NUM = int(len(pre_landmark)/2)
    for i in range(LAND_NUM):
        x = pre_landmark[i]
        y = pre_landmark[i+LAND_NUM]
        cv2.circle(image1, (x, y), 1, (0, 0, 255))
    cv2.imwrite(img_path + img_save, image1)

    展开全文
  • Caffe框架

    千次阅读 2018-10-12 17:19:20
    一、Caffe是什么? 一个卷积神经网络框架,内部提供了一套基本编程框架,以实现GPU并行架构下的深度学习算法。存在缺陷:只能使用卷积网络,基于CNN模型上进行。与Tensorflow框架区别:可以支持更多DP算法。 二、...

    一、Caffe是什么?

    一个卷积神经网络框架,内部提供了一套基本编程框架,以实现GPU并行架构下的深度学习算法。存在缺陷:只能使用卷积网络,基于CNN模型上进行。与Tensorflow框架区别:可以支持更多DP算法。

    二、Caffe有3个基本原子结构,不可随意改。

    1. Blobs:包装器。所有数据都要被包装成blob格式,用于保存数据实际数据。
    2. Layers:层。初始建层;前向传播;反向梯度。
    3. Nets:网络由层组成。
    • solver:负责DP训练(每个中包含1个train、1个test)(优化模型)。
    • proto:类似xml。数据交换格式。网络模型结构定义、存储、读取。
    展开全文
  • 在windows系统上搭建caffe环境,并配置matlab接口(需要下载 caffe-master.zip 以及 VS2013 ) 我的环境为:windows10 + caffe-master + VS2013旗舰版 + matlab R2018b 安装步骤推荐参考: 博客1:windows7下配置...

    步骤

    step1 搭建caffe环境

    在windows系统上搭建caffe环境,并配置matlab接口(需要下载 caffe-master.zip 以及 VS2013 )
    我的环境为:windows10 + caffe-master + VS2013旗舰版 + matlab R2018b
    安装步骤推荐参考:

    1. 博客1:windows7下配置caffe+matlab2016 无GPU(详细教材)
      博客1地址:https://blog.csdn.net/jiangjieqazwsx/article/details/53292326
    2. 博客2:
      Win10 + Caffe + CPU + MATLAB (包括各种问题详细解决)(一) —— VS2013 端设置
      Win10 + Caffe + CPU + MATLAB (包括各种问题详细解决)(二) —— MATLAB 端设置
      博客2地址:
      https://blog.csdn.net/u014546828/article/details/80447583
      https://blog.csdn.net/u014546828/article/details/80431134
    3. 博客3:
      win7 64位+caffe+cuda7.5配置
      博客3地址:https://blog.csdn.net/XZZPPP/article/details/51510785

    [注意] 在使用VS生成解决方案过程中,可能会报很多错误,需要你耐心去解决,别的博客好像都只报过一两个错,但是我是解决一个错误又一个错误,得有七八个,最后还是配好了

    step2 训练SRCNN—>SRCNN_train

    (1). 解压 SRCNN_train 文件

    • 将 SRCNN_train 的 SRCNN文件夹放到 /caffe-master/examples下面,例如 D:\Program Files\caffe-master\examples\SRCNN

    (2).生成训练和测试用的.h5文件

    • 运行其中的 generate_train.m,generate_test.m 生成train.h5、test.h5文件, caffe可对 HDF5 数据格式进行操作,Caffe数据类型参考 http://www.cnblogs.com/denny402/p/5073427.html

    [注意] train.h5 和 test.h5 文件名称要固定,这两个文件名与train.txt、test.txt、SRCNN_solver.prototxt 文件中的定义相一致,擅自更改易出错,这个test.h5 数据文件也是训练时用的,与我们测试效果所用的测试数据概念上进行区分

    (3). 生成.bat文件并运行

    • 在 caffe-master 下面新建一个 .bat 文件(windows批处理文件,可自定义名称,但后缀一定要是.bat),文本内容为 .\Build\x64\Release\caffe.exe train --solver examples/SRCNN/SRCNN_solver.prototxt

    • 右键,以管理员方式运行 bat 文件,就开始进行SRCNN训练了
      根据SRCNN_solver.prototxt的设置,训练数据每500次迭代会进行一次测试,并生成.caffemodel 和 .solverstate文件,该文件中还有学习率和动量参数等的设置,自己打开看进行理解吧

    (4).运行saveFilters.m

    • 运行saveFilters.m,生成 mat 格式的卷积核训练文件。

    step3 测试->SRCNN_v1

    • 测试是使用 SRCNN_v1 进行测试,先对其进行解压,然后运行 SRCNN_v1 里面的 demo_SR 即可

    其他改进模型
    网址:https://blog.csdn.net/qq_26499769/article/details/79628851

    除了上述列出的博客,还参考了以下博客:
    在windows的Caffe框架下实现SRCNN
    bvlc_reference_caffenet.caffemodel 下载链接

    展开全文
  • caffe官方example中C++接口的demo-classification的官方caffemodel以及相关参数文件。
  • Caffe框架-入门浅谈及碰到的坑

    千次阅读 2019-05-31 11:43:27
    Caffe学习主要围绕:数据、deploy.prototxt文件、***.caffemodel文件、solver.prototxt文件、训练脚本文件 数据 数据层有多种格式,可参考:https://www.cnblogs.com/denny402/p/5070928.html 目前我所使用的是...
  • 1.caffe框架下的openmv机器学习 https://blog.csdn.net/qq_37783617/article/details/95881446 2.Win10+VS2013+Caffe安装心得分享 https://blog.csdn.net/qq_37783617/article/details/96487196 3.深度学习配置CUDA...
  • 深度学习Caffe框架实战剖析教程(深度学习、机器学习、LeNet-5模型、MNIST数据集、CNN) 课程收益 目标一. 了解Caffe框架的环境配置以及LEVELDB和LMDB数据。 目标二. 学习并且掌握Caffe框架最基础的数据结构,明白...
  • caffe开源路径: 官网:https://www.python.org/ https://github.com/BVLC/caffe caffe: http://caffe.berkeleyvision.org/tutorial/interfaces.html 二linux(ubuntu)下的caffe编译安装 编译命令:cp ...
  • 如果您转到链接,则在Caffe框架中有DeepLab-V2的说明指南。 如有任何疑问,请留下问题! 环境 # Environment NVIDIA RTX 2080ti * 2 (GTX 1080ti, TitanX, or other GPUs) Driver Version: 418.56 CUDA Version: ...
  • 1、系统环境 系统:windows7 x64 gpu:quadro p620 cuda:9.0 cudnn:9.0-windows7-x64-v7 ...vs2015+cuda9.0+cudnn9.0+caffe+Anaconda3 3、安装步骤 cuda安装教程:https://blog.csdn.net/u011609063/...
  • 他把他之前安装和搭建caffe框架的过程全部记录下来了写成文档了,小菜是按照他caffe学习笔记一步一步安装的,让小菜少走了许多弯路,不过小菜在安装的额过程中也出现了许多错误,小菜参考了一个大牛的博客,是博客园...
  • tensorflow caffe框架对比总结

    千次阅读 2019-04-15 17:02:11
    支持语言 tensorflow: caffe: tensorflow: caffe: tensorflow: caffe
  • caffe框架进行了修改,支持opencv4以及relu6、DepthwiseConvolution,在根目录中包含了mobilenet v3的prototxt文件,可通过caffe time -model mobilenet_v3_large_1.0.prototxt测试是否成功。安装步骤如下参考另一个...
  • Caffe 框架介绍

    万次阅读 2016-09-20 14:24:00
    1.Caffe是一种开源软件框架,内部提供了一套基本的编程框架,或者说一个模板框架,用以实现GPU并行架构下的深度卷积神经网络,Deep Learning等算法,我们可以按照框架定义各种各样的卷积神经网络的结构,并且可以再...
  • 人工智能深度学习Caffe框架介绍

    千次阅读 2019-09-20 16:58:15
    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山。这不仅是因为它无论在结构、性能上,还是在代码质量上,都称得上一款十分出色的开源框架。更重要的是,它将...
  • 可在生产环境中快速上线由TensorFlow,PyTorch,Caffe框架训练出的深度学习模型。 dl_inference是58同城推出的通用深度学习推理服务,使用dl_inference只需将模型文件放在指定目录然后启动服务就可以进行推理请求...
  • 基于caffe框架的物体识别代码,用于超市水果和蔬菜的自动识别,可接电子秤,用于自助秤重.
  • Yolov3转化Caffe框架详解

    万次阅读 多人点赞 2018-08-26 21:32:17
    前些日子因工程需求,需要将yolov3从基于darknet转化为基于Caffe框架,过程中踩了一些坑,特在此记录一下。 1.Yolov3的网络结构 想要转化为Caffe框架,就要先了解yolov3的网络结构,如下图。  如果有运行过...
  • win10+vs2015+anaconda2(python27)编译完的caffe框架可执行文件(CPU),解压后把 pycaffe/caffe拷到anaconda\Lib\site-packages,然后在环境变量里添加你解压的路径。
  • 安装nvidia驱动,caffe框架完整教程,亲测有用 安装nvidia驱动,caffe框架完整教程,亲测有用 安装nvidia驱动,caffe框架完整教程,亲测有用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,729
精华内容 9,891
关键字:

caffe框架

友情链接: react-native-es.rar