这一篇我大概讲讲Caffe框架下MNIST的实现与基于Hi35xx平台下caffe yolox的运用等,供大家参考

1、Caffe介绍与测试

  caffe全称Caffe Convolutional Architecture For Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。由伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用C++编写的,但Caffe有Python和Matlab 相关接口。Caffe支持多种类型的深度学习架构,面向图像分类和图像分割,还支持CNN、RCNN、LSTM和全连接神经网络设计。Caffe支持基于GPU和CPU的加速计算内核库,如NVIDIA cuDNN和Intel MKL。

  深度学习框架:Tensorflow 、Caffe 、Keras 、MXNet 、Torch7、Theano

  Caffe能做什么:图片分类、场景预测、物体识别(faster-rcnn)、图像语义分割。

1.1、Caffe实现流程

  以Caffe自带的MNIST例子走一遍流程,具体流程如下,从准备数据->定义Net->配置Solver->Run->分析结果->准备数据,循环反复,以此来实现最佳的caffemodel模型。

数据

准备数据

模型

定义Net

算法

配置Solver

Run

分析结果

1.2、安装caffe

Caffe安装的官方网站,可以参考github上的两个链接:https://github.com/Microsoft/caffe   /    https://github.com/BVLC/caffe/tree/windows

  之后下载Windows版本的git工具,链接:https://git-scm.com/downloads,具体安装步骤和环境配置,可以参考网上的帖子,比较简单。git下好后按照下面命令下载caffe

$ git clone https://gitbub.com/BVLC/caffe.git

$ cd caffe

$ git checkout windows

$ scripts\build_win.cmd

下载好之后还需要搭建一系列环境,如python的环境搭建等,如下所示:

need to either add the xxxx\caffe\python folder to your python path or copy the xxxxx caffe\python\caffe folder to your site_packages folder.

,虽然整体是比较复杂的,但是一些博主写了比较详细的安装教程,大家可以参考一下,给出参考链接:

https://blog.csdn.net/adong6561975/article/details/106495446/  -->这个十分详细

https://cloud.tencent.com/developer/article/1545949--->也供参考

然后需要下面几个核心安装包链接,如下所示:

CMake: https://cmake.org/download/    3.19.1-win64-x64.msi

Python:https://www.python.org/downloads/   3.5.2amd64

Anaconda3: https://repo.continuum.io/archive/  3-4.2.0

之后需要编译整个工程,操作如下所示:

1.3、VS2015 mnist lmdb数据源制作

参考:https://www.cnblogs.com/peony-jing/p/8617532.html

  执行create_mnist.psl脚本,运行之前需要修改两个地方

  获取到了LMDB格式数据源:

E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist

1.4、在caffe框架下进行训练

1.4.1、train.prototxt文件的说明

  首先需要定义好网络框架,通过GOOGLE标准.prototxt文件。位置在当前项目为:lenet_train_test.prototxt,定义了数据层、全连接层、激活层等等

技巧:可以通过caffe自带的一个draw_net.py函数画网络图层,进行检查,运行命令如下:当前目录:E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist

$ python ..\..\python\draw_net.py lenet_train_test.prototxt train_proto.png --rankdir=TB(BT、LR)

注意:对于windows上的操作,需要安装两个工具:

$ pip install pydot

$ pip install pydotplus

  修改draw_net.py文件,修改之后才可以输出图片

1.4.2、solver.prototxt文件的说明

  定义了训练过程的一些参数,如迭代次数、基础学习率等等

1.4.3、对模型进行训练train、time测试

训练指令

$ E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\scripts\build\tools\Release\caffe.exe  train  --solver= E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist\lenet_solver.prototxt

如果需要输出到log中保存下来,可以在后面加上: 2>&1 | tee xx.log(其中2表示错误也输出重定向到1中,&表示后台运行,即可以在命令行中看到支路的运行过程,tee是指把数据存放到xx.log中)

对于linux下:$ caffe train -solver lenet_solver.prototxt

训练结束:

  训练结束后,训练出.caffemodel和.solverstate文件,其中.caffemodel用于测试,.solverstate用于恢复训练(像断点续传)

时间测试指令

$ E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\scripts\build\tools\Release\caffe.exe time --model=E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\examples\mnist\lenet_train_test.prototxt

  如果需要输出到log中保存下来,可以在后面加上: 2>&1 | tee xx.log(其中2表示错误也输出重定向到1中,&表示后台运行,即可以在命令行中看到支路的运行过程,tee是指把数据存放到xx.log中)

1.4.4、通过caffe自带的.py函数等对进行训练之后的数据进行分析

  目录:E:\Research\hilisicon_embedded\Face_detection\From_github\caffe\tools\extra

如parse_log.py、plot_training_log.py.example

对plot_training_log.py.example

  支持下面chat types:

  0: Test accuracy VS Iters

  1: Test accuracy VS Seconds

  2: Test loss VS Iters

  3: Test loss vs Seconds

  4: Train Learning rate vs Iters

  5: Train Learning rate vs Seconds

  6: Train loss vs Iters

  7: Train loss vs Seconds

  其中需要修改plot_training_log.py.example(对应python2版本的)文件,之后才能运行:

  (1)、print语法不同,python2的print不用括号,Python3要括号

  (2)、xrange()全部改为range()

  (3)、将markers.keys()[idx] 改为 list(markers.keys())[idx]

  之后又出现下面问题-----------但是没有解决

2、基于Hi35xx平台下的caffe使用

2.1、基于Caffe YOLO v1的caffemode及prototxt文件的生成

参考GitHub的案例:https://github.com/xingwangsfu/caffe-yolo

YOLO v1的官方链接:https://pjreddie.com/darknet/yolov1/

YOLO v1的.weights的链接:http://pjreddie.com/media/files/yolov1.weights

  Marked_prototxt:  ./../data/detection/yolov3/model/yolov3.prototxt   mapper验证过的模型,海思会验证网络层是否满足转化要求,定义了几个可转化的网络层,自定义的层需要自己转,这部分后面会专门写一章来说明。

2.2、Yolo3在Hi3519A上的移植参考

Yolo3

①如何在海思 Hi3519AV100上移植YOLOV3 (2):https://blog.csdn.net/kwdx2/article/details/94560894

②如何在海思 Hi3519AV100上移植YOLOV3 (1):https://blog.csdn.net/kwdx2/article/details/92803710

基于海思芯片:从算法到移植 caffe-yolov3测试训练效果

https://blog.csdn.net/Bonjour_ca_va/article/details/104092508

【Hi3519A】目标检测移植(一)——检验darknet2caffe的模型

https://blog.csdn.net/u011622208/article/details/106092071

③YOLO v1之总结篇(linux+windows):https://blog.csdn.net/qq_14845119/article/details/53612362

④Yolo1问题1:YOLOv1 cannot works?cannot download right yolov1

.weights from Darknet project website. (目前已经下载在桌面)

⑤Yolo2资料: https://github.com/gklz1982/caffe-yolov2

Caffe介绍与测试及相关Hi35xx平台下caffe yolox的使用参考的更多相关文章

  1. Windows平台上Caffe的训练与学习方法(以数据库CIFAR-10为例)

    Windows平台上Caffe的训练与学习方法(以数据库CIFAR-10为例) 在完成winodws平台上的caffe环境的搭建之后,亟待掌握的就是如何在caffe中进行训练与学习,下面将进行简单的介 ...

  2. 【转】Jmeter测试报表相关参数说明

    Jmeter测试报表相关参数说明 采用Jmeter测试工具对web系统作的负载测试,得出的响应报表,数据比较难懂,现作一具体说明. 以下是在一次具体负载测试中得出的具体数值,测试线程设置情况为:线程数 ...

  3. 使用TestFlight测试时候相关内容

    前言:记录一下使用TestFlight测试时候相关内容 场景:在我们添加测试员:给测试员发送了邀请:测试员使用TestFlight的时候,其实是有崩溃的次数的记录的,相应的崩溃的信息也是可以查询到的. ...

  4. Linux平台下:块设备、裸设备、ASMlib、Udev相关关系

    对磁盘设备(裸分区)的访问方式分为两种:1.字符方式访问(裸设备):2.块方式访问 Solaris平台 : 在Solaris平台下,系统同时提供对磁盘设备的字符.块方式访问.每个磁盘有两个设备文件名: ...

  5. BEA WebLogic平台下J2EE调优攻略--转载

    BEA WebLogic平台下J2EE调优攻略   2008-06-25 作者:周海根 出处:网络   前 言 随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供 ...

  6. Android平台下OpenCV移植与使用---基于C/C++

    在<Android Studio增加NDK代码编译支持--Mac环境>和<Mac平台下Opencv开发环境搭建>两篇文章中,介绍了如何使用NDK环境和Opencv环境搭建与测试 ...

  7. .NET平台下,关于数据持久层框架

    在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源: 1.NHibernate 2.NBear 3.Castle ActiveRecord 4.iBATIS ...

  8. [转]caffe+Ubuntu14.0.4 64bit 环境配置说明(无CUDA,caffe在CPU下运行) --for --Amd

    caffe是一个简洁高效的深度学习框架,具体介绍可以看这里,caffe环境配置过程可以参考这里,我在搭建环境时搜集了许多资料,这里整理了一下,介绍一下caffe在无CUDA的环境下如何配置. 1. 安 ...

  9. windows平台下VLC2.0.5编译

    windows平台下VLC2.0.5编译说明 时隔一年多,又要搞流媒体了,不过这次是要做流媒体服务器. 暂时决定使用vlc+ffmpeg+live555,虽然听有些前辈说这个组合的性能较差,只能作为学 ...

随机推荐

  1. HDOJ 1848(SG函数)

    对于SG函数来说,sg[y]=x的意义为,x与y的输赢状态是相同的 sg[y]=mex(y)的定义与n.p点的定义是相同的 #include<iostream>#include<cs ...

  2. k倍区间(解题报告)前缀和简单应用

    测评地址 问题 1882: [蓝桥杯][2017年第八届真题]k倍区间 时间限制: 1Sec 内存限制: 128MB 提交: 351 解决: 78 题目描述 给定一个长度为N的数列,A1, A2, . ...

  3. spring再学习之AOP准备

    一.aop思想: 横向重复,纵向抽取 1.乱码 2.事务管理 3,action 二.spring能够为容器中管理的对象生成代理对象 1.spring能帮我们生成代理对象 2.spring实现aop的原 ...

  4. woj1010 alternate sum 数学 woj1011 Finding Teamates 数学

    title: woj1010 alternate sum 数学 date: 2020-03-10 categories: acm tags: [acm,woj,数学] 一道数学题.简单. 题意 给一个 ...

  5. ubuntu 16.04 i386 安装 ruby + bundler + rails ; 搭建简单的网站bitbar

    参考 http://gorails.com/setup/ubuntu/16.04 概述 Project 2 主要探究对web的攻击,本次试验共有6个部分. Project 2中攻击的是一个提供电子货币 ...

  6. Raven1渗透实战

    Raven1渗透实战 目录: 1.wordpress爆破用户 2.wp-config得到数据库账号密码 3.ssh连接4.pythn提权(sudo python -c 'import pty;pty. ...

  7. hihoCoder Challenge 2

    #1046 : K个串 时间限制:40000ms 单点时限:2000ms 内存限制:1024MB 描述 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计 ...

  8. iPhone 12 导入通讯录排序 Bug

    iPhone 12 导入通讯录排序 Bug iOS iOS 通讯录排序问题 Huawei OK solution iOS 切换中英文,修复排序通讯录 bug Awesome iOS Contacts ...

  9. PerformanceObserver API All In One

    PerformanceObserver API All In One 性能监控 https://developer.mozilla.org/en-US/docs/Web/API/Performance ...

  10. Next.js Conf 2020

    Next.js Conf 2020 Next.js Conf Ticket https://nextjs.org/conf Conf Schedule https://confs.tech/javas ...