array_slice(caffe多标签学习有没有方法显示整体的精确度)

精英怪
广告

array_slice,caffe多标签学习有没有方法显示整体的精确度?

拷贝convert_imageset,生成新工程convert_imageset_multi_label

array_slice(caffe多标签学习有没有方法显示整体的精确度)

修改源码

std::ifstream infile(argv[2]); std::vector<std::pair<std::string, std::vector<float>> > lines; std::string filename; std::string label_count_string = argv[5]; int label_count = std::atoi(label_count_string.c_str()); std::vector<float> label(label_count); while (infile >> filename) { for (int i = 0; i < label_count; i++) infile >> label[i]; lines.push_back(std::make_pair(filename, label)); } if (FLAGS_shuffle) { // randomly shuffle data LOG(INFO) << "Shuffling data"; shuffle(lines.begin(), lines.end()); } LOG(INFO) << "A total of " << lines.size() << " images."; if (encode_type.size() && !encoded) LOG(INFO) << "encode_type specified, assuming encoded=true."; int resize_height = std::max<int>(0, FLAGS_resize_height); int resize_width = std::max<int>(0, FLAGS_resize_width); // Create new DB scoped_ptr<db::DB> db_image(db::GetDB(FLAGS_backend)); scoped_ptr<db::DB> db_label(db::GetDB(FLAGS_backend)); db_image->Open(argv[3], db::NEW); db_label->Open(argv[4], db::NEW); scoped_ptr<db::Transaction> txn_image(db_image->NewTransaction()); scoped_ptr<db::Transaction> txn_label(db_label->NewTransaction());// // Create new DB// scoped_ptr<db::DB> db(db::GetDB(FLAGS_backend));// db->Open(argv[3], db::NEW);// scoped_ptr<db::Transaction> txn(db->NewTransaction()); // Storing to db std::string root_folder(argv[1]); Datum datum_image; Datum datum_label; int count = 0; int data_size = 0; bool data_size_initialized = false; for (int line_id = 0; line_id < lines.size(); ++line_id) { bool status; std::string enc = encode_type; if (encoded && !enc.size()) { // Guess the encoding type from the file name string fn = lines[line_id].first; size_t p = fn.rfind('.'); if ( p == fn.npos ) LOG(WARNING) << "Failed to guess the encoding of '" << fn << "'"; enc = fn.substr(p); std::transform(enc.begin(), enc.end(), enc.begin(), ::tolower); } status = ReadImageToDatum(root_folder + lines[line_id].first, lines[line_id].second[0], resize_height, resize_width, is_color, enc, &datum_image); if (status == false) continue; if (check_size) { if (!data_size_initialized) { data_size = datum_image.channels() * datum_image.height() * datum_image.width(); data_size_initialized = true; } else { const std::string& data = datum_image.data(); CHECK_EQ(data.size(), data_size) << "Incorrect data field size " << data.size(); } } // sequential string key_str = caffe::format_int(line_id, 8) + "_" + lines[line_id].first; // Put in db string out; CHECK(datum_image.SerializeToString(&out)); txn_image->Put(key_str, out); ////////////////////////////////////////////////////////////////////////// datum_label.set_channels(label_count); datum_label.set_height(1); datum_label.set_width(1); datum_label.clear_data(); datum_label.clear_float_data(); datum_label.set_encoded(false); std::vector<float> label_vec = lines[line_id].second; for (int i = 0; i < label_vec.size();i++) { datum_label.add_float_data(label_vec[i]); } string out_label; CHECK(datum_label.SerializeToString(&out_label)); txn_label->Put(key_str, out_label); ////////////////////////////////////////////////////////////////////////// if (++count % 1000 == 0) { // Commit db txn_image->Commit(); txn_image.reset(db_image->NewTransaction()); txn_label->Commit(); txn_label.reset(db_label->NewTransaction()); LOG(INFO) << "Processed " << count << " files."; } } // write the last batch if (count % 1000 != 0) { txn_image->Commit(); txn_label->Commit(); LOG(INFO) << "Processed " << count << " files."; }

上述方式使用了二个data层,编译之后,使用如下方式生成:

Build\x64\Release>convert_imageset_multi_label.exe ./ train.txt data/train_image_lmdb data/train_label_lmdb 4

train.txt文件格式如下:

data/00A03AF5-41C7-4966-8EF3-8B2C90DCF75C_cgfn.jpg 1 2 3 6data/00A15FBD-9637-44C5-B2E7-81611263C88C_tmph.jpg 2 5 6 4

网络配置文件需要加入slice层将标签分割开来

layer { name: "slice" type: "Slice" bottom: "label" top: "label_1" top: "label_2" top: "label_3" top: "label_4" slice_param { axis: 1 slice_point: 1 slice_point: 2 slice_point: 3 }}

也可以通过python直接生成lmdb格式,其方式如下:

# -*- coding: utf-8 -*-"""Created on Sat Dec 24 20:57:28 2016 @author: zhouly"""import lmdbfrom skimage import ioimport numpy as np import syscaffe_root = '../../'sys.path.insert(0, caffe_root + '/python')import caffeimport cv2root = '../../'file_input=open(root+'data/train.txt','r') in_image_db=lmdb.open(root+'examples/99/train_image_lmdb', map_size=int(1e12)) in_label_db=lmdb.open(root+'examples/99/train_label_lmdb', map_size=int(1e12)) in_image_txn = in_image_db.begin(write=True) in_label_txn = in_label_db.begin(write=True)for in_idx, in_ in enumerate(file_input): content = in_.strip() content = content.split(' ') im_file = root + 'data/verification/' + content[0] try: im = io.imread(im_file) except: print '-------------------------', im_file continue im = im[:,:, 3] im = cv2.resize(im, (224, 224), interpolation=cv2.INTER_LINEAR) data = np.zeros((3, 224, 224), np.uint8) data[0, :, :] = im[:, :] data[1, :, :] = im[:, :] data[2, :, :] = im[:, :] im_dat = caffe.io.array_to_datum(data) in_image_txn.put('{:0>10d}'.format(in_idx), im_dat.SerializeToString()) print 'data train: {} [{}]'.format(content[0], in_idx + 1) del im_file, im, im_dat, data target_label = np.zeros((4, 1, 1)) target_label[0, 0, 0] = int(content[1]) target_label[1, 0, 0] = int(content[2]) target_label[2, 0, 0] = int(content[3]) target_label[3, 0, 0] = int(content[4]) label_data = caffe.io.array_to_datum(target_label) in_label_txn.put('{:0>10d}'.format(in_idx), label_data.SerializeToString()) del target_label, label_data in_image_txn.commit() in_label_txn.commit() in_image_db.close() in_label_db.close() file_input.close()

切片文是什么意思?

切片文(Slice Article)通常指的是利用图片或视频素材,通过剪切、拼接和加工等手法,创作出具有独特视觉效果的文章。切片文通常具有较高的艺术性和创意性,可以为读者带来视觉上的享受。

在社交媒体和网络上,许多用户会分享切片文,这些文章通常以图片、视频或动画的形式呈现,以吸引读者的注意力。切片文可以用于宣传、营销、娱乐等场景,具有广泛的应用价值。同时,切片文的制作过程也需要一定的设计和编辑能力,因此对于有兴趣从事这一领域的人来说,学习相关技能是很有必要的。

怎么生成uint8类型的数组python?

Uint8Array对象8位无符号整数值的类型化数组。内容将初始化为0。如果无法分配请求数目的字节,则将引发异常。转换成普通数组的方法:

1、构造uint8Array=newUint8Array(length);

2、转换方法:(1)vararray=Array.from(uint8Array)(2)vararray=[].slice.call(uint8Array)

前端刷算法用什么语言?

选用JS

leecode可以用js刷题了,我大js越来越被认可了是吧。但是刷题中会因为忽略js的一些特性掉入坑里。我这里总结一下我掉过的坑。

坑1:js中数组对象是引用对象

js中除了object还有数组对象也是引用对象,这点常常被忽视,所以在递归的时候传递数组要用arr.slice(0)这样复制一个一样的新数组,不然会出现你传入的数组会被同级的递归改变,结果就不对了。

所以只要数组复制的地方最好都要这么写,除非你真的想引用。而且注意是slice不是splice这两个方法差别很大,你如果用splice(0)也能得到数组的复制,但是你将会删了原数组,因为splice是一个操作

增加和删除的元素,返回值是删除的元素的集合。splice(0)是表示从idx为0开始删除到数组尾部,所以得到的返回值也是这个数组。slice(start,end)可以理解为切片,省略end表示到数组尾部,如果end为负

则从数组尾部开始数。

坑2:js中的sort是默认以字典序排序

一般排序的时候都以为如果是升序就不用写compare函数,然而js中的arr.sort()是按字典序排序的,这就导致你如果数组中都是非负数用sort可以得到你想要的效果,但是有负数的话就不对了。

比如 arr = [-1,-3,-5,7,4,-2] ; arr.sort() ;console.log(arr) ;

你会得到 [-1, -2, -3, -5, 4, 7]

所以要记得写compare函数,不要偷懒,写成匿名函数的形式最好 。

坑3:函数没有变量提升

其实这个一般不容易犯,主要当时我是和第二个坑结合了,我自定义compare函数的时候写的是 var compare = function(a,b){return a-b;} ,本来没错,但是我写在了sort的下面,于是sort找不到compare函数就按照默认的字符顺序排列,搞的

我还以为是compare定义出现了问题。函数中定义变量是有“变量提升”的,就是说你在函数的任何位置定义var a都相当于在函数最开始的地方定义了var a,所以用习惯了之后就忘了函数不是变量,没有变量提升了。你在下面定义会找不到。所以写compare函数的时

候写成匿名函数吧。

坑4:浮点数运算不精确

试试console.log(0.3-0.2)你会发现是0.09999999999999998。我发现只要有奇数的浮点数存在,js就无法精确计算。这应该跟浮点数在js中存储的机制有关系。这个问题没有太好的解决办法,一般来讲答案是要求保留2位或3位小数的,利用toFixed(n)直接保留

n位就可以了,这个方法本来就是四舍五入的。但是总有些情况你可能不想四舍五入而是想取上下界什么的,这样就只能靠一些方法hack比如你想取前两位:(a*100-b*100)/100这样。

坑5:判断数组为空

判断数组为空时不能像变量一样直接用 if(!arr),因为数组不会像变量那样隐式转换,所以可以在你知道arr是个数组的情况下使用arr.length>0判断,但有些情况下可能那个变量还不是数组,就不能去length,所以网上看了一个比较周全的方法,就是先判断该对象到

底是不是数组类型的,然后再取长度判断

cass标注面积快捷键?

是快速标注吗?如果那就应该是 “qdim” ,其他就简单了 下面的提供参考,希望对你有帮助:

F1: 获取帮助

F2: 实现作图窗和文本窗口的切换

F3: 控制是否实现对象自动捕捉

F4: 数字化仪控制

F5: 等轴测平面切换

F6: 控制状态行上坐标的显示方式

F7: 栅格显示模式控制

F8: 正交模式控制

F9: 栅格捕捉模式控制

F10: 极轴模式控制

F11: 对象追 踪式控制

Ctrl+A:全选

Ctrl+B: 栅格捕捉模式控制(F9)

Ctrl+C: 将选择的对象复制到剪切板上

Ctrl+D:开/关坐标值

Ctrl+E:确定轴测图方向

Ctrl+F: 控制是否实现对象自动捕捉(f3)

Ctrl+G: 栅格显示模式控制(F7)

Ctrl+H:pickstyle

Ctrl+I:空

Ctrl+J: 重复执行上一步命令

Ctrl+K: 超级链接

Ctrl+L:正交开/关

Ctrl+M: 打开选项对话框

Ctrl+N: 新建图形文件

Ctrl+O: 打开图象文件

Ctrl+P: 打开打印对说框

Ctrl+Q:退出

Ctrl+R:空

Ctrl+S: 保存文件

Ctrl+T:数字化仪关

Ctrl+U: 极轴模式控制(F10)

Ctrl+V: 粘贴剪贴板上的内容

Ctrl+W: 对象追 踪式控制(F11)

Ctrl+X: 剪切所选择的内容

Ctrl+Y: 重做

Ctrl+Z: 取消前一步的操作

Ctrl+1: 打开特性对话框

Ctrl+2: 打开图象资源管理器

Ctrl+3:打开工具选项板

Ctrl+4:图纸集管理器

Ctrl+5:信息选项板

Ctrl+6: 打开图象数据原子

Ctrl+7:标记集管理器

Ctrl+8:超级计算器

Ctrl+9:隐藏/显示命令行

Ctrl+0:隐藏/显示快捷图标

AA: 测量区域和周长(area)

AL: 对齐(align)

AR: 阵列(array)

AP: 加载*lsp程系

AV: 打开 视图对话框(dsviewer)

SE: 草图设置

①捕捉和栅格

②极轴追踪

③对象捕捉

④动态输入

ST: 打开字体设置对话框(style)

SO: 绘制二围面( 2d solid)

SP: 拼音的校核(spell)

SC: 缩放比例 (scale)

SN: 栅格捕捉模式设置(snap)

DT: 文本的设置(dtext)

DI: 测量两点间的距离

OI: 插入外部对相

A: 绘圆弧

B: 定义块

C: 画圆

D: 尺寸资源管理器

E: 删除

F: 倒圆角

G: 对相组合

H: 填充

I: 插入

J:合并

K:空

L: 直线

M: 移动

N:空

O: 偏移

P: 移动

Q:空

R:redraw

S: 拉伸

T: 文本输入

U: 恢复上一次操做

V: 设置当前坐标

W: 定义块并保存到硬盘中

X: 炸开

Y:空

Z: 缩放

autocad中鼠标键(快捷键)功能使用详解

鼠标的功能!

二键式鼠标

左键 : 选择功能键(选象素 选点 选功能)

右键: 绘图区-----快捷菜单或[ENTER]功能

1.变量 SHORTCUTMENU 等于0或偶数---------[ENTER]

2.变量 SHORTCUTMENU为基数---------快捷菜单

3.或用于环境选项--------使用者设定---------快捷菜单开关设定

[shift]+右键:对象捕捉快捷菜单

三键式鼠标

左键 : 选择功能键(选象素 选点 选功能)

右键: 绘图区-----快捷菜单或[ENTER]功能

1.变量 SHORTCUTMENU 等于0或偶数---------[ENTER]

2.变量 SHORTCUTMENU 为基数---------快捷菜单

3.或用于环境选项--------使用者设定---------快捷菜单开关设定

中间键 :Mbuttonpan=1(系统默认值)

压着不放并拖曳 实现平移

双击 ZOOM ------E缩放成实际范围

[Shift]+压着不放并拖曳:作垂直或水平的实时平移

[Ctrl]+压着不放并拖曳:随意式实时平移

Mbuttonpan=0:对象捕捉快捷菜单

[Shift]+右键:对象捕捉快捷菜单

二键+中间滚轮鼠标

左键 : 选择功能键(选象素 选点 选功能)

右键: 绘图区-----快捷菜单或[ENTER]功能

1.变量 SHORTCUTMENU 等于0或偶数---------[ENTER]

2.变量 SHORTCUTMENU 为基数---------快捷菜单

3.或用于环境选项--------使用者设定---------快捷菜单开关设定

中间滚轮 1.旋转轮子向前或向后,实时缩放、拉近、拉远

2.压轮子不放并拖曳 实时平移

3.双击 ZOOM ------E缩放成实际范围

[Shift]+压轮子不放并拖曳 作垂直或水平的实时平移

[Ctrl]+压轮子不放并拖曳 随意式实时平移

Mbuttonpan=0 (系统默认值=1) 按一下轮子 对象捕捉快捷菜单

[Shift]+右键 对象捕捉快捷菜单

AutoCAD 命令

acad.pgp文件

我已经将其命令的内容翻译出来,希望对用快捷键的朋友有点帮助吧

3A, *3DARRAY

;三维阵列

3DO, *3DORBIT

;三维动态观察器

3F, *3DFACE

;曲面三维面

3P, *3DPOLY

;三维多段线

A, *ARC

;圆弧

ADC, *ADCENTER

;AutoCAD 设计中心

AA, *AREA

;查询面积

AL, *ALIGN

;将实体对象输出到ACIS文件中

AP, *APPLOAD

;加载应用程序

AR, *ARRAY

;阵列

-AR, *-ARRAY

;阵列

ATT, *ATTDEF

;定义属性

-ATT, *-ATTDEF

;修改定义属性

ATE, *ATTEDIT

;修改块属性

-ATE, *-ATTEDIT

;命令行修改块属性

ATTE, *-ATTEDIT

;命令行修改块属性

B, *BLOCK

;做块

-B, *-BLOCK

;修改块

BH, *BHATCH

;图案填充

BO, *BOUNDARY

;图案填充中的边界

-BO, *-BOUNDARY

;修改图案填充中的边界

BR, *BREAK

;打断

C, *CIRCLE

;画圆

CH, *PROPERTIES

;特性

-CH, *CHANGE

;不使用特性对话框进行特性修改

CHA, *CHAMFER

;倒角

COL, *COLOR

;指定当前图层颜色

COLOUR, *COLOR

;指定当前图层颜色

CO, *COPY

;复制选择

D, *DIMSTYLE

;标注样式

DAL, *DIMALIGNED

;对齐标注

DAN, *DIMANGULAR

;角度标注

DBA, *DIMBASELINE

;基线标注

DBC, *DBCONNECT

;数据库

DCE, *DIMCENTER

;圆心中心标记

DCO, *DIMCONTINUE

;连续标注

DDA, *DIMDISASSOCIATE

;删除选定择标注的关联性

DDI, *DIMDIAMETER

;直径标注

DED, *DIMEDIT

;编辑标注

DI, *DIST

;距离查询

DIV, *DIVIDE

;定数等分在线上加点

DLI, *DIMLINEAR

;线性标注

DO, *DONUT

;圆环

DOR, *DIMORDINATE

;标注坐标

DOV, *DIMOVERRIDE

;标注替代

DR, *DRAWORDER

;显示顺序

DRA, *DIMRADIUS

;半径标注

DRE, *DIMREASSOCIATE

;重新关联标注

DS, *DSETTINGS

;捕捉设置

DST, *DIMSTYLE

;标注样式

DT, *DTEXT

单行文本

DV, *DVIEW

;定义平行投影或透视视图

E, *ERASE

;删除

ED, *DDEDIT

编辑多行文字或文字

EL, *ELLIPSE

;椭圆

EX, *EXTEND

;延伸

EXIT, *QUIT

;退出

EXP, *EXPORT

;输出文件

EXT, *EXTRUDE

;实体拉伸

F, *FILLET

;倒圆角

FI, *FILTER

;对象选择过滤器

G, *GROUP

;建组

-G, *-GROUP

;用命令行编辑建立组

GR, *DDGRIPS

;选项

H, *BHATCH

;填充

-H, *HATCH

;用命令行填充

HE, *HATCHEDIT

;图案填充编辑

HI, *HIDE

;3D消隐

I, *INSERT

;插入块

-I, *-INSERT

;命令行插入块

IAD, *IMAGEADJUST

;图像调整

IAT, *IMAGEATTACH

;插入光栅图像

ICL, *IMAGECLIP

;剪裁图像

IM, *IMAGE

;图像管理器

-IM, *-IMAGE

;命令行方式图像管理器

IMP, *IMPORT

;插入其它格式文件

IN, *INTERSECT

;3D实体编辑交集

INF, *INTERFERE

;3D实体干涉

IO, *INSERTOBJ

;插入OLE对象

L, *LINE

;绘直线

LA, *LAYER

;管理图层和图层特性

-LA, *-LAYER

;用命令行管理图层和图层特性

LE, *QLEADER

;注释引线

LEN, *LENGTHEN

;修改对象的长度和圆弧的包含角

LI, *LIST

;查询

LINEWEIGHT, *LWEIGHT

;设置线宽

LO, *-LAYOUT

;命令行布局设置

LS, *LIST

;查询

LT, *LINETYPE

;加载、设置和修改线型

-LT, *-LINETYPE

;命令行设置、加载和修改线型

LTYPE, *LINETYPE

;加载、设置和修改线型

-LTYPE, *-LINETYPE

;命令行设置、加载和修改线型

LTS, *LTSCALE

;设置全局线型比例因子

LW, *LWEIGHT

;设置线宽

M, *MOVE

;移动

MA, *MATCHPROP

;匹配特性(扫把)

ME, *MEASURE

;定距等分

MI, *MIRROR

;镜像

ML, *MLINE

;多线

MO, *PROPERTIES

;特性

MS, *MSPACE

;从图纸空间切换到模型空间视口

MT, *MTEXT

;多行文本编辑器

MV, *MVIEW

;创建并控制布局视口

O, *OFFSET

;偏移

OP, *OPTIONS

;选项

ORBIT, *3DORBIT

;三维动态观察器

OS, *OSNAP

;对象捕捉

-OS, *-OSNAP

;命令行的对象捕捉

P, *PAN

;实时平移

-P, *-PAN

;命令行实时平移

PA, *PASTESPEC

PARTIALOPEN, *-PARTIALOPEN

;将选定视图或图层的几何图形加载到图形中

PE, *PEDIT

;编辑多段线和三维多边形网格

PL, *PLINE

;创建二维多段线

PO, *POINT

;创建点对象

POL, *POLYGON

;正多边形

PR, *OPTIONS

;特性

PRCLOSE, *PROPERTIESCLOSE

;关闭“特性”窗口

PROPS, *PROPERTIES

打开特性窗口

PRE, *PREVIEW

;打印预览

PRINT, *PLOT

;打印

PS, *PSPACE

;从模型空间视口切换到图纸空间

PTW, *PUBLISHTOWEB

;网上发布

PU, *PURGE

;清理文件

-PU, *-PURGE

;命令行的清理文件

R, *REDRAW

;刷新当前视口中的显示

RA, *REDRAWALL

;重画

RE, *REGEN

;重生成

REA, *REGENALL

;全部重生成

REC, *RECTANGLE

;恢复被 UNDEFINE 忽略的 AutoCAD 内部命令

REG, *REGION

;面域

REN, *RENAME

;重命名

-REN, *-RENAME

;命令行的重命名

REV, *REVOLVE

;实体旋转

RM, *DDRMODES

;草图设置

RO, *ROTATE

;旋转

RPR, *RPREF

;设置渲染系统配置

RR, *RENDER

;渲染渲染

S, *STRETCH

;拉伸

SC, *SCALE

;缩放

SCR, *scrīpt

;运行脚本

SE, *DSETTINGS

;对象捕捉设置

SEC, *SECTION

;实体 截面

SET, *SETVAR

;设置变量

SHA, *SHADE

;这个不知道是做什么的

SL, *SLICE

;实体剖切

SN, *SNAP

;规定光标按指定的间距移动

SO, *SOLID

;二维填充

SP, *SPELL

;拼写检查

SPL, *SPLINE

;样条曲线

SPE, *SPLINEDIT

;编辑样条曲线

ST, *STYLE

;文字样式

SU, *SUBTRACT

;实体编辑差集

T, *MTEXT

;多行文本

-T, *-MTEXT

;命令行的多行文本

TA, *TABLET

;数字化仪定点

TH, *THICKNESS

;显示图形统计信息、模式及范围

TI, *TILEMODE

;这个也不知道是做什么的

TO, *TOOLBAR

;自定义设置

TOL, *TOLERANCE

;创建形位公差

TOR, *TORUS

;实体圆环体

TR, *TRIM

;修剪

UC, *DDUCS

;命名UC

UCP, *DDUCSP

;正交UCS

UN, *UNITS

;图形单位

-UN, *-UNITS

;命令行图形单位

UNI, *UNION

;并集

V, *VIEW

;视图

-V, *-VIEW

;命令行设置视图

VP, *DDVPOINT

;三维视图视点预置

-VP, *VPOINT

;命令行三维视图视点预置

W, *WBLOCK

;写块

-W, *-WBLOCK

;命令行的写块

WE, *WEDGE

;实体楔体

X, *EXPLODE

;这个不用说了吧,爆开

XA, *XATTACH

;外部参照

XB, *XBIND

;绑定

-XB, *-XBIND

;命令行的绑定

XC, *XCLIP

;定义外部参照或块剪裁边界,并且设置前剪裁面和后剪裁面

XL, *XLINE

;构造线

XR, *XREF

;外部参照管理器

-XR, *-XREF

;命令行的外部参照管理器

Z, *ZOOM

;缩放

=====================

记住部分常用的就好哦!

觉得有用点个赞吧

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,322人围观)

还没有评论,来说两句吧...