修改caffe源码--支持多标签--关键点检测
- 第一步 image_data_layerhpp
- 第二步 image_data_layercpp
原版caffe不支持多标签,会报错,如下:
注:这里读取数据的method是ImageData,即 type:ImageData
此方法直接从txt中获取图片路径和label,进行读取,txt如下所示:
——————————————————————–正文————————————————————-
需要更改两个文件分别是
第一: caffe-master/include/caffe/layers 下的 image_data_layer.hpp
第二:caffe-master/src/caffe/layers 下的image_data_layer.cpp
第一步: image_data_layer.hpp
头文件 image_data_layer.hpp,改动较少,仅一行;
将:
vector<std::pair<std::string, int> > lines_;
改成:
vector<std:pair<std::string, vector<float>>> lines_;
原本label是用int类型,但我的任务是回归任务,因此修改为vector
第二步: image_data_layer.cpp
改动有三处,分别是
1. 读取label;
2. label_shape;
3. top_shape
1.读取label
原版label定义为整型 ,并且只有一个label值,原版label读取是这样的:
第42行起
int label;while (std::getline(infile, line)) {pos = line.find_last_of(' ');label = atoi(line.substr(pos + 1).c_str());lines_.push_back(std::make_pair(line.substr(0, pos), label));}
infile就是txt文件,line就是txt当中的一行,pos为了寻找标签的位置,lines_存储读取的txt数据
从42行开始更改,更改为如下:
int pos; // int pos ;int label_dim = 0 ;bool gfirst = true;while (std::getline(infile, line)) {if(line.find_last_of(' ')==line.size()-2) line.erase(line.find_last_not_of(' ')-1); pos = line.find_first_of(' ');string img_path = line.substr(0, pos);int p0 = pos + 1;vector<float> label_vec;while (pos != -1){pos = line.find_first_of(' ', p0);float v = atof(line.substr(p0, pos).c_str());label_vec.push_back(v);p0 = pos + 1;}if (gfirst){label_dim = label_vec.size();gfirst = false;LOG(INFO) << "label dim: " << label_dim;}CHECK_EQ(label_vec.size(), label_dim) << "label dim not match in: " << lines_.size()<<", "<<lines_[lines_.size()-1].first;lines_.push_back(std::make_pair(img_path, label_vec));}
label不再是int类型,而定义为vector<float>
类型 ,并在 while(pos!=-1)里面循环读取
2.label_shape
在94行开始,原版是这样的
vector<int> label_shape(1, batch_size);top[1]->Reshape(label_shape);
改为
vector<int> label_shape(2, batch_size);label_shape[1] = label_dim;top[1]->Reshape(label_shape);
3. top_shape
在134行,原版是这样
// Reshape batch according to the batch_size.top_shape[0] = batch_size;batch->data_.Reshape(top_shape);
修改为
// Reshape batch according to the batch_size.top_shape[0] = batch_size;batch->data_.Reshape(top_shape);///////////////////////////////////////////////vector<int> top_shape1(4);top_shape1[0] = batch_size;top_shape1[1] = lines_[0].second.size();top_shape1[2] = 1;top_shape1[3] = 1; batch->data_.Reshape(top_shape);
重新 make 就可以使用多标签输入了;
prototxt中的data_layer是这样的:
image_data_layer.hpp
image_data_layer.cpp
上传到了:
http://download.csdn.net/download/u011995719/10235806
修改caffe源码--支持多标签--关键点检测相关推荐
- buildroot修改QT源码支持屏幕旋转
linuxfb屏幕旋转 前言 一.源码获取 二.修改源码 三.将补丁拷贝到指定目录 四.编译 五.添加环境变量 前言 事情是这样的,在开发板上使用Qt来做一些界面开发,但是我们是用的屏幕是800*12 ...
- 如何修改cef源码支持windows xp
公司目前使用的cef版本是1547,是一个2013年的版本,目前发现了一些bug. 所以打算升级到最新版本,但是需要支持windowsxp. ##cef版本选择 谷歌浏览器chromium从50版本开 ...
- 修改Bootstrap源码支持不同大小nandflash
原开发板是256M的NANDFLASH,目的是想用一个64M的nandflash,并且从nandflash启动. 主要是对bootstraps修改,修改地方如下:(以百特光盘自带的AT91Bootst ...
- Deep Compression阅读理解及Caffe源码修改
Deep Compression阅读理解及Caffe源码修改 作者:may0324 更新: 没想到这篇文章写出后有这么多人关注和索要源码,有点受宠若惊.说来惭愧,这个工作当时做的很粗糙,源码修改的比 ...
- Windows7上使用VS2013编译Caffe源码(不带GPU支持)步骤
1. 从https://github.com/BVLC/caffe/通过git clone下载caffe源码,master分支,版本号为09868ac:$ git clone https: ...
- PHP微信公众平台源码 支持多账号 仿pigcms 小猪微信 已经修改完毕 完整可用
为什么80%的码农都做不了架构师?>>> PHP微信公众平台源码 支持多账号 仿pigcms 小猪微信 已经修改完毕 完整可用 从网上下载了个pigcms 公司用 但是发现很多问题, ...
- QT5.12.9 修改源码支持热插拔
QT5.12.9 修改源码支持热插拔 思路来自文章:Qt之支持usb触摸屏热插拔(Qt5.7) qevdevtouchhandler.cpp新添加的内容:165行,256行,435-451行 直接替换 ...
- 修改Android10系统源码支持手机永不休眠
一.设置永不休眠简单分析 安卓手机中"设置"应用里面可以设置手机屏幕超时时间.如下图所示:通过选项可以看到最多能设置30分钟,那如果需要永不休眠,只要把屏幕超时时间设置的足够大就可 ...
- java调用caffe_Caffe中master与windows分支差异对比及通过命令提示符编译Caffe源码操作步骤...
目前GitHub https://github.com/fengbingchun/Caffe_Test 中的caffe还是依赖较老的版本,更新于2015.08.15,commit为09868ac,近 ...
最新文章
- 对python的认识800字_我对python里True和False的理解
- 修改文档框架:word-多级列表与标题样式相结合
- Feign 超时设置
- oracle一体机诊断内存,Oracle内存诊断
- ftp 200 227 451linux,FTP无法链接
- Java-POI生成Excel表格模板部分样式
- Visual Studio 2022 WinForm/Wpf打包安装程序
- 【毕业设计】基于stm32的语音识别 - 单片机 嵌入式 物联网 语音识别
- java前端弹窗的代码_弹出窗口的html的代码是怎么写的?
- 《模式识别》期末考试考题汇总带答案
- 轻量级配置的登录管理器选择---Silm[zt]
- 学会善于总结,善于表达
- 这4款风格各异的电脑软件,免费又实用,后悔没早点知道
- 安卓版的PanDownload 下载网盘资源
- mac常用基本操作笔记
- html5作品展示的动效,10款绚丽实用的HTML5图表动画应用
- 淘宝标题优化词根优化方法技巧 什么是淘宝标题词根
- ROS基础(13)——机器人建模之运动仿真
- html5 canvas详解 pdf,html5 canvas教程 pdf
- 凤姐在投融界融资千万,谁敢掏钱?