Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
自由之枫~
opencv
提交
9ffe4694
O
opencv
项目概览
自由之枫~
/
opencv
与 Fork 源项目一致
Fork自
OpenCV / opencv
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9ffe4694
编写于
5月 04, 2018
作者:
D
Dmitry Kurtaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reduce memory consumption at Caffe importer
上级
9fa01a7b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
28 deletion
+29
-28
modules/dnn/src/caffe/caffe_importer.cpp
modules/dnn/src/caffe/caffe_importer.cpp
+12
-8
modules/dnn/src/caffe/caffe_io.cpp
modules/dnn/src/caffe/caffe_io.cpp
+17
-20
未找到文件。
modules/dnn/src/caffe/caffe_importer.cpp
浏览文件 @
9ffe4694
...
...
@@ -250,16 +250,13 @@ public:
blobShapeFromProto
(
pbBlob
,
shape
);
dstBlob
.
create
((
int
)
shape
.
size
(),
&
shape
[
0
],
CV_32F
);
float
*
dstData
=
dstBlob
.
ptr
<
float
>
();
if
(
pbBlob
.
data_size
())
{
// Single precision floats.
CV_Assert
(
pbBlob
.
data_size
()
==
(
int
)
dstBlob
.
total
());
CV_DbgAssert
(
pbBlob
.
GetDescriptor
()
->
FindFieldByLowercaseName
(
"data"
)
->
cpp_type
()
==
FieldDescriptor
::
CPPTYPE_FLOAT
);
for
(
int
i
=
0
;
i
<
pbBlob
.
data_size
();
i
++
)
dstData
[
i
]
=
pbBlob
.
data
(
i
);
Mat
(
dstBlob
.
dims
,
&
dstBlob
.
size
[
0
],
CV_32F
,
(
void
*
)
pbBlob
.
data
().
data
()).
copyTo
(
dstBlob
);
}
else
{
...
...
@@ -288,11 +285,18 @@ public:
if
(
li
==
netBinary
.
layer_size
()
||
netBinary
.
layer
(
li
).
blobs_size
()
==
0
)
return
;
const
caffe
::
LayerParameter
&
binLayer
=
netBinary
.
layer
(
li
);
layerParams
.
blobs
.
resize
(
binLayer
.
blobs_size
());
for
(
int
bi
=
0
;
bi
<
binLayer
.
blobs_size
();
bi
++
)
caffe
::
LayerParameter
*
binLayer
=
netBinary
.
mutable_layer
(
li
);
const
int
numBlobs
=
binLayer
->
blobs_size
();
layerParams
.
blobs
.
resize
(
numBlobs
);
for
(
int
bi
=
0
;
bi
<
numBlobs
;
bi
++
)
{
blobFromProto
(
binLayer
->
blobs
(
bi
),
layerParams
.
blobs
[
bi
]);
}
binLayer
->
clear_blobs
();
CV_Assert
(
numBlobs
==
binLayer
->
blobs
().
ClearedCount
());
for
(
int
bi
=
0
;
bi
<
numBlobs
;
bi
++
)
{
blobFromProto
(
binLayer
.
blobs
(
bi
),
layerParams
.
blobs
[
bi
]
);
delete
binLayer
->
mutable_blobs
()
->
ReleaseCleared
(
);
}
}
...
...
modules/dnn/src/caffe/caffe_io.cpp
浏览文件 @
9ffe4694
...
...
@@ -132,7 +132,7 @@ void UpgradeV0PaddingLayers(const NetParameter& param,
NetParameter
*
param_upgraded_pad
);
// Upgrade a single V0LayerConnection to the V1LayerParameter format.
bool
UpgradeV0LayerParameter
(
const
V1LayerParameter
&
v0_layer_connection
,
bool
UpgradeV0LayerParameter
(
V1LayerParameter
*
v0_layer_connection
,
V1LayerParameter
*
layer_param
);
V1LayerParameter_LayerType
UpgradeV0LayerType
(
const
string
&
type
);
...
...
@@ -149,9 +149,9 @@ bool NetNeedsV1ToV2Upgrade(const NetParameter& net_param);
// Perform all necessary transformations to upgrade a NetParameter with
// deprecated V1LayerParameters.
bool
UpgradeV1Net
(
const
NetParameter
&
v1_net_param
,
NetParameter
*
net_param
);
bool
UpgradeV1Net
(
NetParameter
*
net_param
);
bool
UpgradeV1LayerParameter
(
const
V1LayerParameter
&
v1_layer_param
,
bool
UpgradeV1LayerParameter
(
V1LayerParameter
*
v1_layer_param
,
LayerParameter
*
layer_param
);
const
char
*
UpgradeV1LayerType
(
const
V1LayerParameter_LayerType
type
);
...
...
@@ -194,7 +194,7 @@ bool UpgradeV0Net(const NetParameter& v0_net_param_padding_layers,
net_param
->
set_name
(
v0_net_param
.
name
());
}
for
(
int
i
=
0
;
i
<
v0_net_param
.
layers_size
();
++
i
)
{
is_fully_compatible
&=
UpgradeV0LayerParameter
(
v0_net_param
.
layers
(
i
),
is_fully_compatible
&=
UpgradeV0LayerParameter
(
v0_net_param
.
mutable_
layers
(
i
),
net_param
->
add_layers
());
}
for
(
int
i
=
0
;
i
<
v0_net_param
.
input_size
();
++
i
)
{
...
...
@@ -268,8 +268,9 @@ void UpgradeV0PaddingLayers(const NetParameter& param,
}
}
bool
UpgradeV0LayerParameter
(
const
V1LayerParameter
&
v0_layer_connection
,
bool
UpgradeV0LayerParameter
(
V1LayerParameter
*
v0_layer_connection_
,
V1LayerParameter
*
layer_param
)
{
const
V1LayerParameter
&
v0_layer_connection
=
*
v0_layer_connection_
;
bool
is_fully_compatible
=
true
;
layer_param
->
Clear
();
for
(
int
i
=
0
;
i
<
v0_layer_connection
.
bottom_size
();
++
i
)
{
...
...
@@ -287,9 +288,7 @@ bool UpgradeV0LayerParameter(const V1LayerParameter& v0_layer_connection,
if
(
v0_layer_param
.
has_type
())
{
layer_param
->
set_type
(
UpgradeV0LayerType
(
type
));
}
for
(
int
i
=
0
;
i
<
v0_layer_param
.
blobs_size
();
++
i
)
{
layer_param
->
add_blobs
()
->
CopyFrom
(
v0_layer_param
.
blobs
(
i
));
}
layer_param
->
mutable_blobs
()
->
Swap
(
v0_layer_connection_
->
mutable_blobs
());
for
(
int
i
=
0
;
i
<
v0_layer_param
.
blobs_lr_size
();
++
i
)
{
layer_param
->
add_blobs_lr
(
v0_layer_param
.
blobs_lr
(
i
));
}
...
...
@@ -770,8 +769,7 @@ bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) {
if
(
NetNeedsV1ToV2Upgrade
(
*
param
))
{
LOG
(
ERROR
)
<<
"Attempting to upgrade input file specified using deprecated "
<<
"V1LayerParameter: "
<<
param_file
;
NetParameter
original_param
(
*
param
);
if
(
!
UpgradeV1Net
(
original_param
,
param
))
{
if
(
!
UpgradeV1Net
(
param
))
{
success
=
false
;
LOG
(
ERROR
)
<<
"Warning: had one or more problems upgrading "
<<
"V1LayerParameter (see above); continuing anyway."
;
...
...
@@ -791,23 +789,23 @@ bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) {
return
success
;
}
bool
UpgradeV1Net
(
const
NetParameter
&
v1_net_param
,
NetParameter
*
net_param
)
{
bool
UpgradeV1Net
(
NetParameter
*
net_param
)
{
// V1LayerParameter layers -> LayerParameter layer
bool
is_fully_compatible
=
true
;
if
(
v1_net_param
.
layer_size
()
>
0
)
{
if
(
net_param
->
layer_size
()
>
0
)
{
LOG
(
ERROR
)
<<
"Input NetParameter to be upgraded already specifies 'layer' "
<<
"fields; these will be ignored for the upgrade."
;
is_fully_compatible
=
false
;
}
net_param
->
CopyFrom
(
v1_net_param
);
net_param
->
clear_layers
();
net_param
->
clear_layer
();
for
(
int
i
=
0
;
i
<
v1_net_param
.
layers_size
();
++
i
)
{
if
(
!
UpgradeV1LayerParameter
(
v1_net_param
.
layers
(
i
),
for
(
int
i
=
0
;
i
<
net_param
->
layers_size
();
++
i
)
{
if
(
!
UpgradeV1LayerParameter
(
net_param
->
mutable_
layers
(
i
),
net_param
->
add_layer
()))
{
LOG
(
ERROR
)
<<
"Upgrade of input layer "
<<
i
<<
" failed."
;
is_fully_compatible
=
false
;
}
}
net_param
->
clear_layers
();
return
is_fully_compatible
;
}
...
...
@@ -834,8 +832,9 @@ void UpgradeNetBatchNorm(NetParameter* net_param) {
}
}
bool
UpgradeV1LayerParameter
(
const
V1LayerParameter
&
v1_layer_param
,
bool
UpgradeV1LayerParameter
(
V1LayerParameter
*
v1_layer_param_
,
LayerParameter
*
layer_param
)
{
const
V1LayerParameter
&
v1_layer_param
=
*
v1_layer_param_
;
layer_param
->
Clear
();
bool
is_fully_compatible
=
true
;
for
(
int
i
=
0
;
i
<
v1_layer_param
.
bottom_size
();
++
i
)
{
...
...
@@ -856,9 +855,7 @@ bool UpgradeV1LayerParameter(const V1LayerParameter& v1_layer_param,
if
(
v1_layer_param
.
has_type
())
{
layer_param
->
set_type
(
UpgradeV1LayerType
(
v1_layer_param
.
type
()));
}
for
(
int
i
=
0
;
i
<
v1_layer_param
.
blobs_size
();
++
i
)
{
layer_param
->
add_blobs
()
->
CopyFrom
(
v1_layer_param
.
blobs
(
i
));
}
layer_param
->
mutable_blobs
()
->
Swap
(
v1_layer_param_
->
mutable_blobs
());
for
(
int
i
=
0
;
i
<
v1_layer_param
.
param_size
();
++
i
)
{
while
(
layer_param
->
param_size
()
<=
i
)
{
layer_param
->
add_param
();
}
layer_param
->
mutable_param
(
i
)
->
set_name
(
v1_layer_param
.
param
(
i
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录