① 谁有tiny-yolo 的训练权重文件呢,就是darknet conv weights,急求!
注意:1、测试软件:ubuntu14.04+cuda7.5+cudnn5.0+opencv2.4.10(titanX) 2、有些您复制的终端命令如果不能在终端运行,请注意英文全角半角问题,您可以将命令输入终端,无须复制粘贴命令
第一部分:darknet安装
下载darknet,终端输入:
git clone https://github.com/pjreddie/darknet.git
修改makefile文件:
cpu设置:gpu=0,opencv=1,cudnn=0
gpu设置:gpu=1,opencv=1,cudnn=1
注意nvcc的路径!!!
(设置自己nvcc的路径)
终端输入:
cd darknet make
第二部分:下载voc及转换yolo格式
下载数据(目录自己设置即可):
curl -o http://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar curl -o http://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar curl -o http://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar tar xf VOCtrainval_11-May-2012.tar tar xf VOCtrainval_06-Nov-2007.tar tar xf VOCtest_06-Nov-2007.tar
找到voc_label.py程序,在script里面,转换格式,运行:
ython voc_label.py
生成train文件:
cat 2007_* 2012_train.txt > train.txt
进入yolo.c修改18/19两行,修改成您voc数据路径和生成的weights路径(一般设置为darknet/backup),注意修改完了需要重新编译darknet
第三部分:下载预训练分类模型
这里只提供yolo-tiny模型啦,大模型参考作者官网下载即可
网盘下载链接:http://download.csdn.net/detail/samylee/9555843
下载完成放在darknet目录下以便调用
第四部分:修改voc.data
打开cfg/voc.data文件,修改您的voc数据路径即可
第五部分:训练voc数据
darknet目录下运行:
./darknet detector train cfg/voc.data cfg/tiny-yolo-voc.cfg darknet.conv.weight
生成的caffemodel会存放在darknet/backup目录下
第六部分:demo
darknet目录下运行:
./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg backup/tiny-yolo-voc_1000(迭代步数自己设置啦).weights data/dog.jpg
第七部分:demo效果图:
见博客结尾部分
第八部分:训练自己的数据集
数据及制作部分:
参考我的yolo-v1博客:
http://blog.csdn.net/samylee/article/details/51729729
咱群里文件有转换成yolo格式的文件,找一下哦
训练部分:和第五部分是一样的啦
效果图如下:
② 深度学习中利用caffe如何训练自己的模型
作者:圣行
链接:https://www.hu.com/question/30091667/answer/47951446
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
matlab 和python没有用过。如果是习惯用opencv的话,可以使用memory_data,请参考这个链接里的例子:C++ Image Classification with memory_data_param · Issue #1443 · BVLC/caffe · GitHub
给一个具体点的例子吧(不知道贴代码是不是有点不合知乎气质?),总共分三步:
第一步,构造网络:
enum Phase p = TEST;
Net<float> caffe_test_net(argv[1],p);
caffe_test_net.CopyTrainedLayersFrom(argv[2]);
第二步,构造数据并加入到网络输入层:
//create the input data
vector<Mat> md_images;
vector<int> md_labels;
//////operations for the input data
Mat original = imread("images\\lena_gray.png"); //随便的图片,没有实用意义,可忽略
Mat *sub_img = new Mat;
for (int i = 0; i < 10; i++){
original(Range(i, i + 28), Range(i, i + 28)).To(*sub_img); // 28x28,可以直接用lenet
md_images.push_back(*sub_img);
md_labels.push_back(0);
}
第三步,执行test操作:
for (int i = 0; i < 10; i++){
const vector<Blob<float>*>& result = caffe_test_net.ForwardPrefilled();
③ caffe windows10 vs2013怎么配置
1.配置环境
我在自己的笔记本配置的caffe,配置的环境为:Windows 7 64位 + cuda6.5 + Opencv2.49 +VS2013。假设在配置caffe之前,你已经准备好这些。
本文中将给出一些编译好的依赖库,如果你也是用的Windows 7 64位+VS2013,可以直接使用。
2.准备依赖库
在Windows下配置caffe,一个很主要的问题就是依赖库的编译。不像在Ubuntu下那么方便,在Windows下,依赖库都需要使用vs2013进行编译才能使用。下面我将介绍caffe需要的依赖库(如果你也是win7 64位+VS2013,可以直接使用我提供的依赖库)。
2.1 boost
boost可以下载源码进行编译,也可以直接下载安装文件。我使用的是后者,方便、快捷。
我使用的是:boost_1.56_0-msvc-12.0-64.exe
注意下载适合你的配置环境的boost版本即可。
下载完毕,双击运行安装文件即可。
2.2 Glog+Gflag+Protobuf+LevelDB+HDF5+LMDB+Openblas
这一部分的很多都是谷歌的开源库,不容易下载(你懂的)。所以我使用的是Neil Z. SHAO‘s Blog
提供的编译好的。
下载完,解压得到3rdparty文件夹。在下一段将会用到。
3.建立caffe工程
准备好了caffe需要的依赖库和环境之后,下面就可以建立caffe的vs项目,进行编译了。
3.1 下载caffe源码
可以从caffe的github主页下载源码。
下载地址:Caffe’s GitHub
解压文件,假设caffe源码所在目录为CAFFE_ROOT。
3.2 准备项目需要的依赖库和系统环境变量
经过上一阶段的准备,caffe项目所需的依赖库都已经准备好。
1.首先设置系统环境变量(以我的为例):
CUDA_PATH_V6_5 安装好cuda6.5之后,会自动添加环境变量CUDA_PATH_V6_5
OPENCV_2_49 D:/Tools/opencv2.49/build/
BOOST_1_56 D:/Tools/boost_1_56_0
2.将3rdparty文件夹放到CAFFE_ROOT
3.3 用vs建立caffe项目
1.用VS2013在CAFFE_ROOT下建立 win32 console application,选择空项目。
将项目的平台由32位改为64位
2.修改项目属性
项目——属性——C/C++——常规——附加包含目录
添加:
../include;
../src;
../3rdparty/include;
../3rdparty;
../3rdparty/include;
../3rdparty/include/openblas;
../3rdparty/include/hdf5;
../3rdparty/include/lmdb;
../3rdparty/include/leveldb;
../3rdparty/include/gflag;
../3rdparty/include/glog;
../3rdparty/include/google/protobuf;
项目——属相——VC++目录——包含目录
添加:
$(CUDA_PATH_V6_5)\include;
$(OPENCV_2_49)\include;
$(OPENCV_2_49)\include\opencv;
$(OPENCV_2_49)\include\opencv2;
$(BOOST_1_56)
项目——属性——链接器——常规——附加库目录
添加:
$(CUDA_PATH_V6_5)\lib\$(PlatformName);
$(OPENCV_2_49)\x64\vc12\lib;
$(BOOST_1_56)\lib64-msvc-12.0;
..\3rdparty\lib;
项目——属性——链接器——输入——附加依赖项
debug添加:
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
cudart.lib
cuda.lib
nppi.lib
cufft.lib
cublas.lib
curand.lib
gflagsd.lib
libglog.lib
libopenblas.dll.a
libprotobufd.lib
libprotoc.lib
leveldbd.lib
lmdbd.lib
libhdf5_D.lib
libhdf5_hl_D.lib
Shlwapi.lib
gflags.lib
libprotobuf.lib
leveldb.lib
lmdb.lib
libhdf5.lib
libhdf5_hl.lib
release添加:
opencv_ml249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
cudart.lib
cuda.lib
nppi.lib
cufft.lib
cublas.lib
curand.lib
gflags.lib
libglog.lib
libopenblas.dll.a
libprotobuf.lib
libprotoc.lib
leveldb.lib
lmdb.lib
libhdf5.lib
libhdf5_hl.lib
Shlwapi.lib
3.4 编译caffe
配置好caffe项目的属性之后,下面就可以一步一步的编译caffe了。
3.4.1 编译./src中的文件
首先,将../src文件夹中的*.cpp文件添加到工程中。
依次编译每一个*.cpp文件。
1.编译blob.cpp
直接编译时会报错,缺少文件”caffe\proto\caffe.pb.h”
这个时候需要将proto.exe放到../3rdparty/bin文件夹
将GernaratePB.bat放在../scripts文件夹
运行bat脚本文件即可生成caffe.pb.h
然后就可以成功编译。
2.编译common.cpp
直接编译这个文件,会出现关于getid和fopen_s的错误。可通过如下步骤修改:
在代码前面添加:#include <process.h>
修改项目属性:项目——属性——C/C++——预处理器——预处理器定义
添加:_CRT_SECURE_NO_WARNINGS
在代码中getid的位置进行如下修改:
#ifdef _MSC_VER
pid = getid();
#else
pid = _getid();
#endf
修改完毕之后,可以成功编译。
3.编译net.cpp
直接编译这个文件,会出现关于mkstep、close、mkdtemp的错误。需要进行如下修改:
在io.hpp头文件中添加:#include “mkstep.h”
在io.hpp头文件中,在close()的位置进行如下修改:
#ifdef _MSC_VER
close(fd);
#else
_close(fd);
#endif
在mkdtemp的位置进行如下修改:
#ifndef _MSC_VER
char* mkdtemp_result = mkdtemp(temp_dirname_cstr);
#else
errno_t mkdtemp_result = _mktemp_s(temp_dirname_cstr, sizeof(temp_dirname_cstr));
#endif
修改完毕,可以成功编译。
4.编译solver.cpp
直接编译会出现关于snprintf的错误,需要进行如下修改:
#ifdef _MSC_VER
#define snprinf sprintf_s
#endif
修改完毕,可以成功编译。
5.其他剩余的cpp文件也依次编译
3.4.2 编译./src/layers中的文件
将./src/layers中的所有的cpp和cu文件都添加到项目中。
右键点击cu文件,修改属性。
在bnll_layer.cu文件,进行如下修改:
float kBNLL_THRESHOLD = 50 ——> #define kBNLL_THRESHOLD 50.0
依次编译所有的文件。
3.4.3 编译./src/util中的文件
将./src/util中所有的文件添加到项目
1.在io.cpp中
修改ReadProtoFromBinaryFile函数
O_RDONLY ——> O_RDONLY | O_BINARY
在代码中进行如下修改:
#ifdef _MSC_VER
#define open _open
#endif
将close()改为_close()
2.在math_functions.cpp中
做如下修改:
#define __builtin_popcount __popcnt
#define __builtin_popcountl __popcnt
3.在db.cpp中
作如下修改:
#ifdef _MSC_VER
#include <direct.h>
#endif
修改CHECK_EQ
#ifdef _MSC_VER
CHECK_EQ(_mkdir(source.c_str()),0)<<”mkdir”<<source<<”failed”;
#else
CHECK_EQ(mkdir(source.c_str(),0744),0)<<”mkidr”<<source<<”failed”;
#endif
4.依次编译其他文件
3.4.4 编译./src/proto中的文件
参照上一步,将proto中的文件都添加到项目。
修改属性:
项目——属性——C/C++——预处理器——预处理器定义
添加:_SCL_SECURE_NO_WARNINGS
编译所有文件。
3.4.5 编译./tools中的文件
本文件夹下有多个cpp文件,通过它们的名字就可以知道相应的功能。添加不同的cpp文件到项目中,然后生成项目,就可以得到不同功能的exe文件。
将caffe.cpp添加到工程,生成项目,得到caffe.exe文件,可用于训练模型
将computer_image_mean.cpp添加到工程,生成项目,得到的exe文件可用于将训练样本转换为caffe使用的leveldb/lmdb数据集。
依次类推。
自此,caffe在Windows下的编译已经完毕,接下来就可以使用它来训练自己的模型了。
④ 求助waifu2x-caffe无法运行
一般java虚拟机默认安装在系统盘(C:/)根目录下,但环境变量中的路径却需要设置。右键电击“我的电脑”属性,在高级选项中有个环境变量,将下边的系统变量中的path路径后面追加“C;/jre1.5.0_05/bin;”就可以了。 至于编译运行,可在“运行”中输入cmd,进入你代码所在文件夹,javac命令编译,java命令运行。