caffe使用训练好的模型识别代码

caffe目标检测模型训练全过程(二)python加载caffemodel分类 继上篇 caffe目标检测模型训练全过程(一)脚本、数据准备与制作 之后,我们训练出来了其模型,如图所示: models2_iter_70000.caffemodel 就是需要调用的模型,70000表示模型训练了70000次后所保存的模型,其他也是一样的。 记下来,使用python加载模型,然后进行识别,首先对处理好的227*227大小的处理好的图片进行识别。 代码如下: net... 阅读详情
  • 54行可改图像均值
  • 81行可改图像放缩
  • 109行为识别阈值
#include <caffe/caffe.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <string>

using namespace caffe;
// using namespace std;

std::string CLASSES[81] = { "__background__",
"person", "bicycle", "car", "motorcycle",
"airplane", "bus", "train", "truck", "boat",
"traffic light", "fire hydrant", "stop sign", "parking meter",
"bench", "bird", "cat",
"dog", "horse", "sheep", "cow",
"elephant", "bear", "zebra", "giraffe" ,
"backpack", "umbrella", "handbag", "tie" ,
"suitcase", "frisbee", "skis", "snowboard" ,
"sports ball", "kite", "baseball bat", "baseball glove" ,
"skateboard", "surfboard", "tennis racket", "bottle" ,
"wine glass", "cup", "fork", "knife" ,
"spoon", "bowl", "banana", "apple" ,
"sandwich", "orange", "broccoli", "carrot" ,
"hot dog", "pizza", "donut", "cake" ,
"chair", "couch", "potted plant", "bed" ,
"dining table", "toilet", "tv", "laptop" ,
"mouse", "remote", "keyboard", "cell phone" ,
"microwave", "oven", "toaster", "sink" ,
"refrigerator", "book", "clock", "vase" ,
"scissors", "teddy bear", "hair drier", "toothbrush" ,
};

int main()
{
    std::string model_file("/home/lwd/code/dl/MobileNet-YOLO/models/darknet_yolov3/yolov3.prototxt");
    std::string weights_file("/home/lwd/code/dl/MobileNet-YOLO/models/darknet_yolov3/zhang.caffemodel");
    cv::Mat mean_;
    cv::Mat img = cv::imread("/home/lwd/code/dl/ssd/ssddetect/ssd_network_config/mobilenetssd/test0.jpg");

    // set net
    Caffe::set_mode(Caffe::GPU);
    shared_ptr<Net<float>> net_;
    net_.reset(new Net<float>(model_file, TEST));
    net_->CopyTrainedLayersFrom(weights_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<float> *input_layer = net_->input_blobs()[0];
    int num_channels_ = input_layer->channels();
    CHECK(num_channels_ == 3 || num_channels_ == 1) << "Input layer should have 1 or 3 channels.";
    cv::Size input_geometry_ = cv::Size(input_layer->width(), input_layer->height());
    std::vector<cv::Mat> channels;
    for (int i = 0; i < num_channels_; ++i)
    {
        cv::Mat channel(input_geometry_.height, input_geometry_.width, CV_32FC1, 0.0);
        channels.push_back(channel);
    }
    cv::merge(channels, mean_);
    //
    input_layer->Reshape(1, num_channels_, input_geometry_.height, input_geometry_.width);
    net_->Reshape();
    // input shape
    std::vector<cv::Mat> input_channels;
    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->channels(); ++i)
    {
        cv::Mat channel(height, width, CV_32FC1, input_data);
        input_channels.push_back(channel);
        input_data += width * height;
    }
    // input data
    cv::Mat sample = img;
    cv::Mat sample_resized;
    if (sample.size() != input_geometry_)
        cv::resize(sample, sample_resized, input_geometry_);
    else
        sample_resized = sample;
    cv::Mat sample_float;
    if (num_channels_ == 3)
        sample_resized.convertTo(sample_float, CV_32FC3, 0.0039215);
    else
        sample_resized.convertTo(sample_float, CV_32FC1, 0.0039215);
    cv::Mat sample_normalized;
    cv::subtract(sample_float, mean_, sample_normalized);
    cv::split(sample_normalized, input_channels);
    net_->Forward();
    Blob<float> *result_blob = net_->output_blobs()[0];
    const float *result = result_blob->cpu_data();
    const int num_det = result_blob->height();
    std::vector<std::vector<float>> detections;
    for (int k = 0; k < num_det; ++k)
    {
        if (result[0] == -1)
        {
            result += 7;
            continue;
        }
        std::vector<float> detection(result, result + 7);
        detections.push_back(detection);
        result += 7;
    }
    for (int i = 0; i < detections.size(); ++i)
    {
        const std::vector<float> &d = detections[i];
        // Detection format: [image_id, label, score, xmin, ymin, xmax, ymax].
        CHECK_EQ(d.size(), 7);
        const float score = d[2];
        if (score >= 0.61)
        {
            cv::Point pt1, pt2;
            pt1.x = (img.cols * d[3]);
            pt1.y = (img.rows * d[4]);
            pt2.x = (img.cols * d[5]);
            pt2.y = (img.rows * d[6]);
            cv::rectangle(img, pt1, pt2, cv::Scalar(0, 255, 0), 1, 8, 0);
            char label[100];
            sprintf(label, "%s,%f", CLASSES[static_cast<int>(d[1])].c_str(), score);
            int baseline;
            cv::Size size = cv::getTextSize(label, cv::FONT_HERSHEY_SIMPLEX, 0.5, 0, &baseline);
            cv::Point pt3;
            pt3.x = pt1.x + size.width;
            pt3.y = pt1.y - size.height;
            cv::rectangle(img, pt1, pt3, cv::Scalar(0, 255, 0), -1);
            cv::putText(img, label, pt1, cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0));
        }
    }
    cv::imshow("show", img);
    cv::waitKey();
    return 0;
}

  • CMakeLists.txt
  • 需要把libcaffe.so.1.0.0、caffe/build/include/caffe/proto和caffe/include/caffe拷贝过来
cmake_minimum_required(VERSION 2.8.3)
project(cpp)

add_compile_options(-std=c++14 -g)

find_package(OpenCV REQUIRED)
find_package(Boost REQUIRED COMPONENTS
  filesystem
)

include_directories(
  include
  /usr/local/cuda/include
  ${OpenCV_INCLUDE_DIRS}
  ${Boost_INCLUDE_DIRS}
)

link_directories(
	${OpenCV_LIBRARY_DIRS}
)

add_executable(mnist main.cc)
target_link_libraries(mnist
  ${OpenCV_LIBRARIES}
  ${Boost_LIBRARIES}
  ${PROJECT_SOURCE_DIR}/libcaffe.so.1.0.0
  glog
)

MTCNN-caffe版本训练数据 ubuntu系统16.04,基于caffe框架的MTCNN模型训练全套数据,包含已经训练好的模型,需要用的训练数据以及训练过程中间产生的数据。 立即下载

相关推荐

opencv 调用已经训练好了caffe模型做分类

10积分怎么够,里面可以一套程序啊。。。。代码我也是调试很久的。

Resnet改进的色情图片检测-nsfw

  nsfw(Not suitable for work classifier)是雅虎开源的进行色情检测识别的一个网络,该网络基于Resnet50修改,取得了非常不错的色情检测效果。 在安装caffe之后就可以运行上面的网络,运行shell脚本如下。   #!/usr/bin/env sh python ./classify_nsfw.py \ --model_defnsfw_mode...

年轻即出发, 1万+

LSF实践专题(15):LSF队列优先级以及抢占功能初探

在LSF暂停作业时,会向作业发送一个SIGTSTP信号,并且将作业状态变成SSUSP(system suspend),表示被系统暂停,这时,最好是作业的应用能够捕获和处理SIGTSTP信号,否则,即使在LSF中,作业会被认为暂停了,并且释放了slots资源,但是在实际OS中,作业进程仍然在继续,并且不会释放CPU等计算资源。是指LSF自动将低优先级作业暂停(suspend),将空余出来的资源交给高优先级队列中的作业使用,等到高优先级队列的作业结束后,再将被暂停的作业恢复(resume)并继续运行。

richycn的博客 1919

训练好模型的调用和使用

针对之前根据CIFAR10训练好的模型用其对输入图片进行测试,简单介绍使用流程。

mengdeer_Q的博客 2656

利用python求解规划问题

利用python中的cvxpy,sympy,scipy这三个库进行规划问题求解,本文中的例题均来自司守奎老师的python数学建模算法与应用

dashbaani的博客 1万+

锐捷路由器DNS Proxy保姆级配置教程:从零到实战,手把手教你搞定内网域名解析

本文提供锐捷路由器DNS Proxy功能的详细配置教程,从基础环境搭建到实战测试,手把手教你实现内网域名解析。涵盖上游DNS设置、内网域名映射、故障排查等关键步骤,帮助网络管理员快速解决内网访问难题,提升工作效率。

weixin_29284657的博客 552

Caffe学习:从头到尾跑一遍模型的训练和测试

最近开始学习caffe,最开始应该是因为自己急功近利,想直接用caffe模型达到自己的目的,感觉有点无从下手。现在不得不踏实下来,扎实的一步步学习。看了大牛徐其华随笔分类 - caffe系列教程,收获颇丰。在这里记录下自己学习训练和测试模型的过程,可以说相关知识是完全来自Caffe学习系列(12):训练和测试自己的图片,只是记录一下自己实践中的问题和感悟。 在这里,再次对乐于分享的博主徐其华表示衷

持久决心的博客 1万+

STM32F401RCT6最小系统原理图设计

STM32F401RCT6最小系统原理图设计一、主控芯片二、电源电路三、晶振电路三、下载电路四、完整电路图      本文章基于STM32F401RCT6进行最小系统原理图设计,包含主控芯片,电源,晶振电路,下载电路等几部分 一、主控芯片 主控芯片采用STM32F401RCT6,需注意: VBAT在不接电池的情况下需接3.3V,VDDAVREF+需接3.3V,否则会造成芯片供电不正常,无法启动和识别的情况 VDDAVREF+和VCAP1处电容需按照规格书

weixin_43278295的博客 2万+

【caffe】基于caffe的分类模型训练及人脸识别应用

0、概述主要介绍用caffe训练分类模型的方法,你要做的事情有:1)配置好caffe2)根据博客https://www.2cto.com/kf/201704/623027.html跟着做一遍你就能上手用caffe训练模型了3)这篇文章和2)不同的两个地方,一是我用自己的方式总结一下要用到哪些文件,每个文件的作用是什么,二是介绍如何基于现有的模型去做finetune。1、各个文件的作用(配合文件my...

weixin_42437606的博客 5121

SPICE仿真软件:Ngspice_(2).安装与配置

在Netlist文件中直接定义模型。V1 1 0 5R1 2 0 1k* Analysis库文件中可以包含多种电路元件模型和参数。

kkchenjj的博客 1585

计算电磁学(三)有限差分方法

有限差分方法(FDM)是一种数值处理方法,通过将偏微分方程变换为一组代数方程,通过求解代数方程组来得到原边值问题的近似值。由于有限差分法非常简单,所以也特别的稳定高效。其中时域有限差分方法(FDTD)是电磁分析中的常用方法。在计算电磁学中,常用有限差分方法(finite difference equations)来替代微分方程。一个有限差分法通常包括三个步骤将求解域划分网格用有限差分方程逼近给定的微分方程求解在给定边界条件和初始状态下的方程常用的网格模型方阵斜方阵三角阵圆形阵。

CCC_B的博客 1639

caffe训练自己的模型:全流程

最近做项目,将使用mobilenetv2 caffe模型,从自己准备数据,到训练, 整体走了一遍流程。   1、图像预处理 融合了差不多10个年龄数据集,得到一个数量40万,1-60岁的数据集。 2、生成imdb文件 (1)使用python脚本,生成文件名和标签文件:train.txt,valid.txt和test.txt文件 (2)修改sh脚本,生成train和valid的imdb文...

山中有石为玉 2473

python全栈入门到实战【基础篇 03】入门实操:第一个Python程序 + PyCharm使用 + 输入输出全解析

本文是一篇Python入门教程,主要介绍PyCharm编辑器的安装配置和基础使用,以及Python输入输出语法的实操练习。文章分为四个部分:1)PyCharm的下载安装与基础配置;2)第一个Python程序"Hello World"的编写与运行;3)Python输入输出函数print()和input()的详细讲解;4)个人信息录入系统的实战案例。教程包含大量截图和动图演示,适合Python新手跟随操作,快速掌握编辑器使用和基础语法。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 4005

运行caffe识别数字的模型mnist

<!---title:运行caffe识别数字的模型mnist--> <!---keywords:填写关键字, 以半角逗号分割--> 原始引用地址: [运行caffe识别数字的模型mnist](http://yangkuncn.cn/caffe_mnist.html) time: 2020.5.17 23:28 ## mnist是啥? mnist是一个运用神经网络识别数字的模型,可以识别数字0到9. ### 获取mnist模块与数据 对于mnist(就是数字识别)例子,...

xyyangkun的专栏 441

让openclaw接入web端的deepseek或着qwen,使用无限token

🪟 Windows: 提供原生的 PowerShell 一键安装支持!配置过程和官方版本是相同的,唯一的区别就是再选则model时要选择带Browser字样的deepseek或者qwen。安装之前需要先清理官方版本的安装痕迹,否则openclaw版本跳转不到这个中文版本。因为此版本与官方版本存在代差,在配置飞书时可能会出现无法安装飞书的情况。剩下的配置保持和官方版本一致操作即可。选中之后需要进行一次网页端的登录。登录后会出现可选择的model。安装完成后会跳到这个中文界面。涉及到接入飞书机器人的操作。

z1872385的博客 302

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

使用训练好的caffe模型识别图片

import os import sys import numpy as np import matplotlib.pyplot as plt caffe_root='/opt/digits-2.0/caffe/' sys.path.insert(0,caffe_root+'python') import caffe MODEL_FILE='/opt/digits-2.0/caffe/exampl

fffupeng的博客 3315

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

验证码识别之模型训练

参考:(http://www.cnblogs.com/louyihang-loves-baiyan/p/5038758.html) 整个思路大致如下: Step 1: 数据集准备:http://pan.baidu.com/s/1gfBrmGb 密码:ql14 Step 2: 转化为lmdb数据集 Caffe的数据格式采用leveldb或者lmdb格式的,第一步要做的就是数据的格式转换了

zzshneuq的博客 1011

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

caffe做的分类识别

2017年春节入坑DP,学着caffe做了一个杂草小苗的APP,模型和功能均在云端。 pypic.py #!/usr/bin/env python #-*-coding:utf-8-*- import numpy as np import sys,os import re # 设置当前的工作环境在caffe下 caffe_root = 'd:/caffe/caffe-master/' # 我们也把caffe/python也添加到当前环境 sys.path.insert(0, ...

model2005的专栏 751

python opencv图像识别教程整理_OpenCV+深度学习预训练模型,简单搞定图像识别 | 教程...

李林 编译自 pyimagesearch作者 Adrian Rosebrock量子位 报道 | 公众号 QbitAIOpenCV是一个2000年发布的开源计算机视觉库,有进行物体识别、图像分割、人脸识别、动作识别等多种功能,可以在Linux、Windows、Android、Mac OS等操作系统上运行,以轻量级、高效著称,且提供多种语言接口。而OpenCV最近一次版本更新,为我们带来了更好的深度学...

weixin_39713833的博客 1063

身份证识别(一)——身份证正反面与头像检测

前言 1、这是一个手持的身份识别项目,属于图像识别的范围,不需要借助手持身份扫描器,只是检测当前视频或者摄像头中是否有身份证,然后做相关的处理。 2.这个项目是我之前做的一个大项目的一部分,项目用到的库有OpenCV,Boost, 还Caffe这个深度学习框架,用的一些相关的技术有图像处理的人脸检测,人脸识别,人脸验证,数字识别,汉字识别,以后有时间,可能会加上语音识别,或者对应声纹识别的相关操作...

知来者逆的博客 5万+

caffe学习之二----mnist集合训练及其测试

前一节完成了caffe的编译,接下来用一个脚本完成数据集的训练和测试#!/bin/bash cd ../../caffe #下载要使用的数据集 cd data/mnist/ ./get_mnist.sh cd ../../ #创建caffe用以训练的数据 ./examples/mnist/create_mnist.sh #训练模型 ./build

不积跬步,无以致千里;不积小流,无以成江海 562

使用Caffe基于cifar10进行物体识别

使用Caffe基于cifar10进行物体识别

网络资源是无限的 2776

Caffe任务池GPU模型图像识别

一开始我在网上找demo没有找到,在群里寻求帮助也没有得到结果,索性将网上的易语言模块反编译之后,提取出对应的dll以及代码,然后对照官方的c++代码,写出了下面的c#版本 /*** * @pName caffe_task_pool_demo * @name CC * @user wadezh * @date 2018/6/16 * @desc */ us...

weixin_30338461的博客 357

人脸识别实战:使用Opencv+SVM实现人脸识别

在本文中,您将学习如何使用 OpenCV 进行人脸识别。文章分三部分介绍: 第一,将首先执行人脸检测,使用深度学习从每个人脸中提取人脸量化为128位的向量。 第二, 在嵌入基础上使用支持向量机(SVM)训练人脸识别模型。 第三,最后使用 OpenCV 识别图像和视频流中的人脸。 项目结构 facedetection ├─dataset │ ├─Biden │ ├─chenglong │ ├─mayun │ ├─Trump │ ├─yangmi │ └─zhaoliying ├─face_det

AI浩 4450

tensorflow(四)caffe-tensorflow学习记录

按照Lenet里面的例子进行模型和网络的转换:LeNet ExampleThanks to @Russell91 for this exampleThis example showns you how to finetune code from the Caffe MNIST tutorial using Tensorflow. First, you can convert a prototxt

7279

使用caffe框架

此时应该有一个吐血的表情和一个累的要死的表情(在电脑前坐了一个下午+一个晚上) 然鹅,事情并没有什么进展 在得知服务器已经装有caffe之后,要运行起来却还是没想象中的顺利 刚开始import caffe就出现了问题(救命啊!!!) 先post一个大牛的专栏吧,也挺详细的 https://www.cnblogs.com/denny402/tag/caffe/ 首先我是在ubuntu上做...

qq_35804114的博客 509
上一篇: darknet转caffemodel
下一篇: ubuntu深度学习框架百度飞桨PaddlePaddle安装和使用
刀么克瑟拉莫
博客等级 码龄14年 68粉丝 268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀么克瑟拉莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值