这一篇我大概讲讲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. Educational Codeforces Round 89 (Rated for Div. 2) C Palindromic Paths

    题目链接:Palindromic Paths 题意: 给你一个n行m列的矩阵,这个矩阵被0或者1所填充,你需要从点(1,1)走到点(n,m).这个时候会有很多路径,每一条路径对应一个01串,你可以改变 ...

  2. VS Code 搭建合适的 markdown 文档编写环境

    写在开头,之前我是使用Gitee与Github作为图床和Picgo搭配Typora使用的 ,但因为最近觉得这样还是稍微比较繁琐,然后因为VS Code是我的主要文本编辑器.Cpp,Python等均是在 ...

  3. windows创建p12格式的ios开发证书的流程

    现在做ios开发,原生的开发已经不是第一选择,现在有很多不同的H5开发框架,在性能上都不输原生开发,而UI方便却能做得比原生更炫,比如CSS得灵活度肯定是比原生开发出来得应用更灵活的. 我们在开发IO ...

  4. 微信小程序swiper实现 句子控app首页滑动卡片

    微信小程序swiper实现 句子控app首页滑动卡片 引言:最近看到句子控APP首页的效果很清新,可是发现他的微信小程序端没有实现这个功能,我看了一下难度不大,于是尝试着去实现. 实现效果如下: 1. ...

  5. 2.hello rabbitmq

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-07-22 22:49:50 星期一 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  6. Hexo-使用阿里iconfont图标

    Hexo-使用阿里iconfont图标 因为使用hexo搭建的博客中,大家并不懂都有什么图标,fa fa-xx就懵了,不知道都有什么. 首先,fa fa-xxx中的图标可以在 图标库 中寻找. (上面 ...

  7. C++中overload 、override、overwrite 之间的区别

    Overload(重载):在C++程序中,可以将语义.功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型.顺序不同),即函数重载.(1)相同的范围(在同一个类中):(2)函数名字相同:( ...

  8. Mac 开机时为什么突然响一下,duang

    Mac 开机时为什么突然响一下,duang duang 一下 https://zh.wikipedia.org/wiki/Duang refs xgqfrms 2012-2020 www.cnblog ...

  9. 如何强制删除 baidu/tempdata/con.dat 的垃圾文件! How to fix locked SD card: 读卡器 损坏,补救措施!

    https://www.youtube.com/watch?v=y2c37dcxNto&feature=youtu.be 使用windows command prompt 强制删除 baidu ...

  10. git commit guidelines

    git-commit-guidelines AngularJS Development Setup Running Tests Coding Rules Commit Message Guidelin ...