Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
VisualDL
提交
23b35c70
V
VisualDL
项目概览
PaddlePaddle
/
VisualDL
1 年多 前同步成功
通知
88
Star
4655
Fork
642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
5
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VisualDL
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
5
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
23b35c70
编写于
12月 31, 2017
作者:
S
superjom
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add image check
上级
23a4be30
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
15 deletion
+19
-15
visualdl/logic/sdk.cc
visualdl/logic/sdk.cc
+5
-1
visualdl/python/test_storage.py
visualdl/python/test_storage.py
+4
-9
visualdl/utils/image.h
visualdl/utils/image.h
+10
-5
未找到文件。
visualdl/logic/sdk.cc
浏览文件 @
23b35c70
...
...
@@ -119,7 +119,11 @@ void Image::SetSample(int index,
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++
)
{
data_str
[
i
]
=
data
[
i
];
}
entry
.
SetRaw
(
std
::
string
(
data_str
.
begin
(),
data_str
.
end
()));
Uint8Image
image
(
shape
[
2
],
shape
[
0
]
*
shape
[
1
]);
NormalizeImage
(
&
image
,
&
data
[
0
],
shape
[
0
]
*
shape
[
1
],
shape
[
2
]);
// entry.SetRaw(std::string(data_str.begin(), data_str.end()));
entry
.
SetRaw
(
std
::
string
(
image
.
data
(),
image
.
data
()
+
image
.
rows
()
*
image
.
cols
()));
static_assert
(
!
is_same_type
<
value_t
,
shape_t
>::
value
,
...
...
visualdl/python/test_storage.py
浏览文件 @
23b35c70
...
...
@@ -42,7 +42,7 @@ class StorageTest(unittest.TestCase):
for
pass_
in
xrange
(
num_passes
):
image_writer
.
start_sampling
()
for
ins
in
xrange
(
num_samples
):
index
=
image_writer
.
is_sample_taken
()
index
=
image_writer
.
is_sample_taken
()
if
index
!=
-
1
:
data
=
np
.
random
.
random
(
shape
)
*
256
data
=
np
.
ndarray
.
flatten
(
data
)
...
...
@@ -89,19 +89,14 @@ class StorageTest(unittest.TestCase):
data
=
image_record
.
data
()
shape
=
image_record
.
shape
()
PIL_image_shape
=
(
shape
[
0
]
*
shape
[
1
],
shape
[
2
])
PIL_image_shape
=
(
shape
[
0
]
*
shape
[
1
],
shape
[
2
])
data
=
np
.
array
(
data
,
dtype
=
'uint8'
).
reshape
(
PIL_image_shape
)
print
'origin'
,
origin_data
.
flatten
()
print
'data'
,
data
.
flatten
()
image
=
Image
.
fromarray
(
data
.
reshape
(
shape
))
self
.
assertTrue
(
np
.
equal
(
origin_data
.
reshape
(
PIL_image_shape
),
data
).
all
())
self
.
assertTrue
(
np
.
equal
(
origin_data
.
reshape
(
PIL_image_shape
),
data
).
all
())
if
__name__
==
'__main__'
:
...
...
visualdl/utils/image.h
浏览文件 @
23b35c70
...
...
@@ -13,7 +13,8 @@ using uint8_t = unsigned char;
* 2: height*width, channel
*/
template
<
typename
T
>
using
ImageDT
=
Eigen
::
Matrix
<
T
,
Eigen
::
Dynamic
,
Eigen
::
Dynamic
,
Eigen
::
RowMajor
>
;
using
ImageDT
=
Eigen
::
Matrix
<
T
,
Eigen
::
Dynamic
,
Eigen
::
Dynamic
,
Eigen
::
RowMajor
>
;
using
Uint8Image
=
ImageDT
<
uint8_t
>
;
/*
...
...
@@ -21,10 +22,13 @@ using Uint8Image = ImageDT<uint8_t>;
* depth: number of channels
*/
static
void
NormalizeImage
(
Uint8Image
*
image
,
float
*
buffer
,
const
float
*
buffer
,
int
hw
,
int
depth
)
{
Eigen
::
Map
<
Eigen
::
MatrixXf
>
values
(
buffer
,
depth
,
hw
);
// Both image and buffer should be used in row major.
Eigen
::
Map
<
const
Eigen
::
Matrix
<
float
,
Eigen
::
Dynamic
,
Eigen
::
Dynamic
,
Eigen
::
RowMajor
>>
values
(
buffer
,
depth
,
hw
);
CHECK_EQ
(
image
->
size
(),
hw
*
depth
);
CHECK_EQ
(
image
->
row
(
0
).
size
(),
hw
);
...
...
@@ -60,11 +64,12 @@ static void NormalizeImage(Uint8Image* image,
float
max_val
=
std
::
max
(
std
::
abs
(
image_min
),
image_max
);
scale
=
(
max_val
<
kZeroThreshold
?
0.0
f
:
127.0
f
)
/
max_val
;
}
else
{
scale
=
(
image_max
<
image_max
<
kZeroThreshold
?
0.0
f
:
255.0
f
)
/
image_max
;
scale
=
(
image_max
<
kZeroThreshold
?
0.0
f
:
255.0
f
)
/
image_max
;
offset
=
0.0
f
;
}
LOG
(
INFO
)
<<
"scale "
<<
scale
;
// Transform image, turning nonfinite values to bad_color
for
(
int
i
=
0
;
i
<
depth
;
i
++
)
{
auto
tmp
=
scale
*
values
.
row
(
i
).
array
()
+
offset
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录