• 大小: 33.23MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-22
  • 语言: C/C++
  • 标签: LeNet  

资源简介

基于c++实现的LeNet,可以基于自己鼠标手写的字符进行识别,效果很好,原验证集99%的识别率

资源截图

代码片段和文件信息

#define USE_OPENCV 1
#define CPU_ONLY 1


#include 
#include 


#include 
#include 

#include 
#include 
#include 

#include “head.h“

#include 
#include 
#include 
#include 
#include 
using namespace caffe;
using namespace cv;


Point previousPoint(-1 -1) nowPoint(-1 -1);
Mat srcimage=Mat::zeros(280280CV_8UC1);
Mat srcimageori = Mat::zeros(280 280 CV_8UC1);

class Classifier {
public:
Classifier(const string& model_file
const string& trained_file);

int Classify(const cv::Mat& img);

private:

std::vector Predict(const cv::Mat& img);

void WrapInputlayer(std::vector* input_channels);

void Preprocess(const cv::Mat& img
std::vector* input_channels);

private:
shared_ptr > net_;
cv::Size input_geometry_;
int num_channels_;
};

Classifier::Classifier(const string& model_file
const string& trained_file) 
{
#ifdef CPU_ONLY
Caffe::set_mode(Caffe::CPU);
#else
Caffe::set_mode(Caffe::GPU);
#endif

/* Load the network. */
net_.reset(new Net(model_file TEST));
net_->CopyTrainedlayersFrom(trained_file);

CHECK_EQ(net_->num_inputs() 1) << “Network should have exactly one input.“;
CHECK_EQ(net_->num_outputs() 1) << “Network should have exactly one output.“;

Blob* input_layer = net_->input_blobs()[0];
num_channels_ = input_layer->channels();
CHECK(num_channels_ == 3 || num_channels_ == 1)
<< “Input layer should have 1 or 3 channels.“;
input_geometry_ = cv::Size(input_layer->width() input_layer->height());

}

/* Return the top N predictions. */
int Classifier::Classify(const cv::Mat& img) {
std::vector output = Predict(img);
std::vector::iterator iter=find(output.begin() output.end() 1);
int prediction = distance(output.begin() iter);
return prediction<10 ? prediction:0;
}
std::vector Classifier::Predict(const cv::Mat& img) {
Blob* input_layer = net_->input_blobs()[0];
input_layer->Reshape(1 num_channels_
input_geometry_.height input_geometry_.width);
/* Forward dimension change to all layers. */
net_->Reshape();

std::vector input_channels;
WrapInputlayer(&input_channels);

Preprocess(img &input_channels);

net_->Forward();

/* Copy the output layer to a std::vector */
Blob* output_layer = net_->output_blobs()[0];
const float* begin = output_layer->cpu_data();
const float* end = begin + output_layer->channels();
return std::vector(begin end);
}

void Classifier::WrapInputlayer(std::vector* input_channels) {
Blob* input_layer = net_->input_blobs()[0];

int width = input_layer->width();
int height = input_layer->height();
float* input_data = input_layer->mutable_cpu_data();
for (int i = 0; i < input_layer->chann

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-02-07 15:34  lenet_test\
     目录           0  2017-02-07 15:34  lenet_test\lenet_test\
     文件    68747264  2017-02-07 15:34  lenet_test\lenet_test.sdf
     文件        1330  2017-02-07 08:59  lenet_test\lenet_test.sln
     文件       35328  2017-02-07 15:34  lenet_test\lenet_test.v12.suo
     文件      126464  2016-09-02 14:06  lenet_test\lenet_test\gflags.dll
     文件       26608  2016-09-02 14:06  lenet_test\lenet_test\gflags.lib
     文件      514048  2016-09-02 14:06  lenet_test\lenet_test\gflagsd.dll
     文件       26684  2016-09-02 14:06  lenet_test\lenet_test\gflagsd.lib
     文件      126464  2016-09-02 14:06  lenet_test\lenet_test\gflags_nothreads.dll
     文件       27440  2016-09-02 14:06  lenet_test\lenet_test\gflags_nothreads.lib
     文件      514048  2016-09-02 14:06  lenet_test\lenet_test\gflags_nothreadsd.dll
     文件       27516  2016-09-02 14:06  lenet_test\lenet_test\gflags_nothreadsd.lib
     文件         856  2017-02-07 11:12  lenet_test\lenet_test\head.h
     文件        1738  2016-08-24 14:09  lenet_test\lenet_test\lenet.prototxt
     文件     1725006  2016-10-25 00:00  lenet_test\lenet_test\lenet_iter_10000.caffemodel
     文件        6104  2017-02-07 15:09  lenet_test\lenet_test\lenet_test.cpp
     文件       12233  2017-02-07 08:59  lenet_test\lenet_test\lenet_test.vcxproj
     文件        1068  2017-02-07 08:59  lenet_test\lenet_test\lenet_test.vcxproj.filters
     文件     4963840  2016-09-02 14:18  lenet_test\lenet_test\opencv_core2410d.dll
     文件     4660224  2016-09-02 14:18  lenet_test\lenet_test\opencv_highgui2410d.dll
     文件     4467712  2016-09-02 14:18  lenet_test\lenet_test\opencv_imgproc2410d.dll
     目录           0  2017-02-07 15:11  lenet_test\x64\
     目录           0  2017-02-07 15:11  lenet_test\x64\Debug\
     文件     6367744  2017-02-07 15:11  lenet_test\x64\Debug\lenet_test.exe
     文件    21927880  2017-02-07 15:11  lenet_test\x64\Debug\lenet_test.ilk
     文件    36999168  2017-02-07 15:11  lenet_test\x64\Debug\lenet_test.pdb

评论

共有 条评论