Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
dc124ecb
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
大约 1 年 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
dc124ecb
编写于
12月 15, 2020
作者:
L
littletomatodonkey
提交者:
GitHub
12月 15, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix cpp time (#482)
* fix time sta for cpp * fix time sta for cpp
上级
25adf371
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
16 addition
and
13 deletion
+16
-13
deploy/cpp_infer/include/cls.h
deploy/cpp_infer/include/cls.h
+1
-1
deploy/cpp_infer/src/cls.cpp
deploy/cpp_infer/src/cls.cpp
+11
-1
deploy/cpp_infer/src/main.cpp
deploy/cpp_infer/src/main.cpp
+4
-11
未找到文件。
deploy/cpp_infer/include/cls.h
浏览文件 @
dc124ecb
...
@@ -61,7 +61,7 @@ public:
...
@@ -61,7 +61,7 @@ public:
void
LoadModel
(
const
std
::
string
&
model_path
,
const
std
::
string
&
params_path
);
void
LoadModel
(
const
std
::
string
&
model_path
,
const
std
::
string
&
params_path
);
// Run predictor
// Run predictor
void
Run
(
cv
::
Mat
&
img
);
double
Run
(
cv
::
Mat
&
img
);
private:
private:
std
::
shared_ptr
<
Predictor
>
predictor_
;
std
::
shared_ptr
<
Predictor
>
predictor_
;
...
...
deploy/cpp_infer/src/cls.cpp
浏览文件 @
dc124ecb
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// See the License for the specific language governing permissions and
// limitations under the License.
// limitations under the License.
#include <chrono>
#include <include/cls.h>
#include <include/cls.h>
namespace
PaddleClas
{
namespace
PaddleClas
{
...
@@ -52,7 +53,7 @@ void Classifier::LoadModel(const std::string &model_path,
...
@@ -52,7 +53,7 @@ void Classifier::LoadModel(const std::string &model_path,
this
->
predictor_
=
CreatePredictor
(
config
);
this
->
predictor_
=
CreatePredictor
(
config
);
}
}
void
Classifier
::
Run
(
cv
::
Mat
&
img
)
{
double
Classifier
::
Run
(
cv
::
Mat
&
img
)
{
cv
::
Mat
srcimg
;
cv
::
Mat
srcimg
;
cv
::
Mat
resize_img
;
cv
::
Mat
resize_img
;
img
.
copyTo
(
srcimg
);
img
.
copyTo
(
srcimg
);
...
@@ -69,6 +70,7 @@ void Classifier::Run(cv::Mat &img) {
...
@@ -69,6 +70,7 @@ void Classifier::Run(cv::Mat &img) {
auto
input_names
=
this
->
predictor_
->
GetInputNames
();
auto
input_names
=
this
->
predictor_
->
GetInputNames
();
auto
input_t
=
this
->
predictor_
->
GetInputHandle
(
input_names
[
0
]);
auto
input_t
=
this
->
predictor_
->
GetInputHandle
(
input_names
[
0
]);
input_t
->
Reshape
({
1
,
3
,
resize_img
.
rows
,
resize_img
.
cols
});
input_t
->
Reshape
({
1
,
3
,
resize_img
.
rows
,
resize_img
.
cols
});
auto
start
=
std
::
chrono
::
system_clock
::
now
();
input_t
->
CopyFromCpu
(
input
.
data
());
input_t
->
CopyFromCpu
(
input
.
data
());
this
->
predictor_
->
Run
();
this
->
predictor_
->
Run
();
...
@@ -81,6 +83,12 @@ void Classifier::Run(cv::Mat &img) {
...
@@ -81,6 +83,12 @@ void Classifier::Run(cv::Mat &img) {
out_data
.
resize
(
out_num
);
out_data
.
resize
(
out_num
);
output_t
->
CopyToCpu
(
out_data
.
data
());
output_t
->
CopyToCpu
(
out_data
.
data
());
auto
end
=
std
::
chrono
::
system_clock
::
now
();
auto
duration
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
microseconds
>
(
end
-
start
);
double
cost_time
=
double
(
duration
.
count
())
*
std
::
chrono
::
microseconds
::
period
::
num
/
std
::
chrono
::
microseconds
::
period
::
den
;
int
maxPosition
=
int
maxPosition
=
max_element
(
out_data
.
begin
(),
out_data
.
end
())
-
out_data
.
begin
();
max_element
(
out_data
.
begin
(),
out_data
.
end
())
-
out_data
.
begin
();
...
@@ -88,6 +96,8 @@ void Classifier::Run(cv::Mat &img) {
...
@@ -88,6 +96,8 @@ void Classifier::Run(cv::Mat &img) {
std
::
cout
<<
"
\t
class id: "
<<
maxPosition
<<
std
::
endl
;
std
::
cout
<<
"
\t
class id: "
<<
maxPosition
<<
std
::
endl
;
std
::
cout
<<
std
::
fixed
<<
std
::
setprecision
(
10
)
std
::
cout
<<
std
::
fixed
<<
std
::
setprecision
(
10
)
<<
"
\t
score: "
<<
double
(
out_data
[
maxPosition
])
<<
std
::
endl
;
<<
"
\t
score: "
<<
double
(
out_data
[
maxPosition
])
<<
std
::
endl
;
return
cost_time
;
}
}
}
// namespace PaddleClas
}
// namespace PaddleClas
deploy/cpp_infer/src/main.cpp
浏览文件 @
dc124ecb
...
@@ -72,22 +72,15 @@ int main(int argc, char **argv) {
...
@@ -72,22 +72,15 @@ int main(int argc, char **argv) {
cv
::
Mat
srcimg
=
cv
::
imread
(
img_path
,
cv
::
IMREAD_COLOR
);
cv
::
Mat
srcimg
=
cv
::
imread
(
img_path
,
cv
::
IMREAD_COLOR
);
cv
::
cvtColor
(
srcimg
,
srcimg
,
cv
::
COLOR_BGR2RGB
);
cv
::
cvtColor
(
srcimg
,
srcimg
,
cv
::
COLOR_BGR2RGB
);
auto
start
=
std
::
chrono
::
system_clock
::
now
();
double
run_time
=
classifier
.
Run
(
srcimg
);
classifier
.
Run
(
srcimg
);
auto
end
=
std
::
chrono
::
system_clock
::
now
();
auto
duration
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
microseconds
>
(
end
-
start
);
double
curr_time
=
double
(
duration
.
count
())
*
std
::
chrono
::
microseconds
::
period
::
num
/
std
::
chrono
::
microseconds
::
period
::
den
;
if
(
idx
>=
warmup_iter
)
{
if
(
idx
>=
warmup_iter
)
{
elapsed_time
+=
curr
_time
;
elapsed_time
+=
run
_time
;
std
::
cout
<<
"Current image path: "
<<
img_path
<<
std
::
endl
;
std
::
cout
<<
"Current image path: "
<<
img_path
<<
std
::
endl
;
std
::
cout
<<
"Current time cost: "
<<
curr
_time
<<
" s, "
std
::
cout
<<
"Current time cost: "
<<
run
_time
<<
" s, "
<<
"average time cost in all: "
<<
"average time cost in all: "
<<
elapsed_time
/
(
idx
+
1
-
warmup_iter
)
<<
" s."
<<
std
::
endl
;
<<
elapsed_time
/
(
idx
+
1
-
warmup_iter
)
<<
" s."
<<
std
::
endl
;
}
else
{
}
else
{
std
::
cout
<<
"Current time cost: "
<<
curr
_time
<<
" s."
<<
std
::
endl
;
std
::
cout
<<
"Current time cost: "
<<
run
_time
<<
" s."
<<
std
::
endl
;
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录