Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
0f72bbfe
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0f72bbfe
编写于
5月 13, 2020
作者:
C
Channingss
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support interface
上级
f55d7014
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
22 addition
and
278 deletion
+22
-278
deploy/cpp/CMakeLists.txt
deploy/cpp/CMakeLists.txt
+17
-4
deploy/cpp/cmake/yaml-cpp.cmake
deploy/cpp/cmake/yaml-cpp.cmake
+1
-1
deploy/cpp/include/paddlex/visualize.h
deploy/cpp/include/paddlex/visualize.h
+2
-2
deploy/cpp/src/classifier.cpp
deploy/cpp/src/classifier.cpp
+0
-74
deploy/cpp/src/detector.cpp
deploy/cpp/src/detector.cpp
+0
-109
deploy/cpp/src/segmenter.cpp
deploy/cpp/src/segmenter.cpp
+0
-86
deploy/cpp/src/visualize.cpp
deploy/cpp/src/visualize.cpp
+2
-2
未找到文件。
deploy/cpp/CMakeLists.txt
浏览文件 @
0f72bbfe
...
@@ -10,7 +10,9 @@ SET(TENSORRT_DIR "" CACHE PATH "Compile demo with TensorRT")
...
@@ -10,7 +10,9 @@ SET(TENSORRT_DIR "" CACHE PATH "Compile demo with TensorRT")
SET
(
PADDLE_DIR
""
CACHE PATH
"Location of libraries"
)
SET
(
PADDLE_DIR
""
CACHE PATH
"Location of libraries"
)
SET
(
OPENCV_DIR
""
CACHE PATH
"Location of libraries"
)
SET
(
OPENCV_DIR
""
CACHE PATH
"Location of libraries"
)
SET
(
CUDA_LIB
""
CACHE PATH
"Location of libraries"
)
SET
(
CUDA_LIB
""
CACHE PATH
"Location of libraries"
)
set
(
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
${
CMAKE_BINARY_DIR
}
/lib
)
set
(
CMAKE_LIBRARY_OUTPUT_DIRECTORY
${
CMAKE_BINARY_DIR
}
/lib
)
set
(
CMAKE_RUNTIME_OUTPUT_DIRECTORY
${
CMAKE_BINARY_DIR
}
/demo
)
include
(
cmake/yaml-cpp.cmake
)
include
(
cmake/yaml-cpp.cmake
)
include_directories
(
"
${
CMAKE_SOURCE_DIR
}
/"
)
include_directories
(
"
${
CMAKE_SOURCE_DIR
}
/"
)
...
@@ -213,15 +215,19 @@ if (NOT WIN32)
...
@@ -213,15 +215,19 @@ if (NOT WIN32)
endif
()
endif
()
set
(
DEPS
${
DEPS
}
${
OpenCV_LIBS
}
)
set
(
DEPS
${
DEPS
}
${
OpenCV_LIBS
}
)
add_executable
(
classifier src/classifier.cpp src/transforms.cpp src/paddlex.cpp
)
add_library
(
paddlex_inference SHARED src/visualize src/transforms.cpp src/paddlex.cpp
)
ADD_DEPENDENCIES
(
paddlex_inference ext-yaml-cpp
)
target_link_libraries
(
paddlex_inference
${
DEPS
}
)
add_executable
(
classifier demo/classifier.cpp src/transforms.cpp src/paddlex.cpp
)
ADD_DEPENDENCIES
(
classifier ext-yaml-cpp
)
ADD_DEPENDENCIES
(
classifier ext-yaml-cpp
)
target_link_libraries
(
classifier
${
DEPS
}
)
target_link_libraries
(
classifier
${
DEPS
}
)
add_executable
(
detector
src
/detector.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp
)
add_executable
(
detector
demo
/detector.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp
)
ADD_DEPENDENCIES
(
detector ext-yaml-cpp
)
ADD_DEPENDENCIES
(
detector ext-yaml-cpp
)
target_link_libraries
(
detector
${
DEPS
}
)
target_link_libraries
(
detector
${
DEPS
}
)
add_executable
(
segmenter
src
/segmenter.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp
)
add_executable
(
segmenter
demo
/segmenter.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp
)
ADD_DEPENDENCIES
(
segmenter ext-yaml-cpp
)
ADD_DEPENDENCIES
(
segmenter ext-yaml-cpp
)
target_link_libraries
(
segmenter
${
DEPS
}
)
target_link_libraries
(
segmenter
${
DEPS
}
)
...
@@ -252,3 +258,10 @@ if (WIN32 AND WITH_MKL)
...
@@ -252,3 +258,10 @@ if (WIN32 AND WITH_MKL)
)
)
endif
()
endif
()
file
(
COPY
"
${
CMAKE_SOURCE_DIR
}
/include/paddlex/visualize.h"
DESTINATION
"
${
CMAKE_BINARY_DIR
}
/include/"
)
file
(
COPY
"
${
CMAKE_SOURCE_DIR
}
/include/paddlex/transforms.h"
DESTINATION
"
${
CMAKE_BINARY_DIR
}
/include/"
)
file
(
COPY
"
${
CMAKE_SOURCE_DIR
}
/include/paddlex/paddlex.h"
DESTINATION
"
${
CMAKE_BINARY_DIR
}
/include/"
)
deploy/cpp/cmake/yaml-cpp.cmake
浏览文件 @
0f72bbfe
...
@@ -14,7 +14,7 @@ ExternalProject_Add(
...
@@ -14,7 +14,7 @@ ExternalProject_Add(
-DYAML_CPP_INSTALL=OFF
-DYAML_CPP_INSTALL=OFF
-DYAML_CPP_BUILD_CONTRIB=OFF
-DYAML_CPP_BUILD_CONTRIB=OFF
-DMSVC_SHARED_RT=OFF
-DMSVC_SHARED_RT=OFF
-DBUILD_SHARED_LIBS=O
FF
-DBUILD_SHARED_LIBS=O
N
-DCMAKE_BUILD_TYPE=
${
CMAKE_BUILD_TYPE
}
-DCMAKE_BUILD_TYPE=
${
CMAKE_BUILD_TYPE
}
-DCMAKE_CXX_FLAGS=
${
CMAKE_CXX_FLAGS
}
-DCMAKE_CXX_FLAGS=
${
CMAKE_CXX_FLAGS
}
-DCMAKE_CXX_FLAGS_DEBUG=
${
CMAKE_CXX_FLAGS_DEBUG
}
-DCMAKE_CXX_FLAGS_DEBUG=
${
CMAKE_CXX_FLAGS_DEBUG
}
...
...
deploy/cpp/include/paddlex/visualize.h
浏览文件 @
0f72bbfe
...
@@ -46,13 +46,13 @@ namespace PaddleX {
...
@@ -46,13 +46,13 @@ namespace PaddleX {
// Generate visualization colormap for each class
// Generate visualization colormap for each class
std
::
vector
<
int
>
GenerateColorMap
(
int
num_class
);
std
::
vector
<
int
>
GenerateColorMap
(
int
num_class
);
cv
::
Mat
Visualize
Det
(
const
cv
::
Mat
&
img
,
cv
::
Mat
Visualize
(
const
cv
::
Mat
&
img
,
const
DetResult
&
results
,
const
DetResult
&
results
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
vector
<
int
>&
colormap
,
const
std
::
vector
<
int
>&
colormap
,
float
threshold
=
0.5
);
float
threshold
=
0.5
);
cv
::
Mat
Visualize
Seg
(
const
cv
::
Mat
&
img
,
cv
::
Mat
Visualize
(
const
cv
::
Mat
&
img
,
const
SegResult
&
result
,
const
SegResult
&
result
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
vector
<
int
>&
colormap
);
const
std
::
vector
<
int
>&
colormap
);
...
...
deploy/cpp/src/classifier.cpp
已删除
100644 → 0
浏览文件 @
f55d7014
// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <glog/logging.h>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include "include/paddlex/paddlex.h"
DEFINE_string
(
model_dir
,
""
,
"Path of inference model"
);
DEFINE_bool
(
use_gpu
,
false
,
"Infering with GPU or CPU"
);
DEFINE_bool
(
use_trt
,
false
,
"Infering with TensorRT"
);
DEFINE_int32
(
gpu_id
,
0
,
"GPU card id"
);
DEFINE_string
(
image
,
""
,
"Path of test image file"
);
DEFINE_string
(
image_list
,
""
,
"Path of test image list file"
);
int
main
(
int
argc
,
char
**
argv
)
{
// Parsing command-line
google
::
ParseCommandLineFlags
(
&
argc
,
&
argv
,
true
);
if
(
FLAGS_model_dir
==
""
)
{
std
::
cerr
<<
"--model_dir need to be defined"
<<
std
::
endl
;
return
-
1
;
}
if
(
FLAGS_image
==
""
&
FLAGS_image_list
==
""
)
{
std
::
cerr
<<
"--image or --image_list need to be defined"
<<
std
::
endl
;
return
-
1
;
}
// 加载模型
PaddleX
::
Model
model
;
model
.
Init
(
FLAGS_model_dir
,
FLAGS_use_gpu
,
FLAGS_use_trt
,
FLAGS_gpu_id
);
// 进行预测
if
(
FLAGS_image_list
!=
""
)
{
std
::
ifstream
inf
(
FLAGS_image_list
);
if
(
!
inf
)
{
std
::
cerr
<<
"Fail to open file "
<<
FLAGS_image_list
<<
std
::
endl
;
return
-
1
;
}
std
::
string
image_path
;
while
(
getline
(
inf
,
image_path
))
{
PaddleX
::
ClsResult
result
;
cv
::
Mat
im
=
cv
::
imread
(
image_path
,
1
);
model
.
predict
(
im
,
&
result
);
std
::
cout
<<
"Predict label: "
<<
result
.
category
<<
", label_id:"
<<
result
.
category_id
<<
", score: "
<<
result
.
score
<<
std
::
endl
;
}
}
else
{
PaddleX
::
ClsResult
result
;
cv
::
Mat
im
=
cv
::
imread
(
FLAGS_image
,
1
);
model
.
predict
(
im
,
&
result
);
std
::
cout
<<
"Predict label: "
<<
result
.
category
<<
", label_id:"
<<
result
.
category_id
<<
", score: "
<<
result
.
score
<<
std
::
endl
;
}
return
0
;
}
deploy/cpp/src/detector.cpp
已删除
100644 → 0
浏览文件 @
f55d7014
// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <glog/logging.h>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include "include/paddlex/paddlex.h"
#include "include/paddlex/visualize.h"
DEFINE_string
(
model_dir
,
""
,
"Path of inference model"
);
DEFINE_bool
(
use_gpu
,
false
,
"Infering with GPU or CPU"
);
DEFINE_bool
(
use_trt
,
false
,
"Infering with TensorRT"
);
DEFINE_int32
(
gpu_id
,
0
,
"GPU card id"
);
DEFINE_string
(
image
,
""
,
"Path of test image file"
);
DEFINE_string
(
image_list
,
""
,
"Path of test image list file"
);
DEFINE_string
(
save_dir
,
"output"
,
"Path to save visualized image"
);
int
main
(
int
argc
,
char
**
argv
)
{
// 解析命令行参数
google
::
ParseCommandLineFlags
(
&
argc
,
&
argv
,
true
);
if
(
FLAGS_model_dir
==
""
)
{
std
::
cerr
<<
"--model_dir need to be defined"
<<
std
::
endl
;
return
-
1
;
}
if
(
FLAGS_image
==
""
&
FLAGS_image_list
==
""
)
{
std
::
cerr
<<
"--image or --image_list need to be defined"
<<
std
::
endl
;
return
-
1
;
}
// 加载模型
PaddleX
::
Model
model
;
model
.
Init
(
FLAGS_model_dir
,
FLAGS_use_gpu
,
FLAGS_use_trt
,
FLAGS_gpu_id
);
auto
colormap
=
PaddleX
::
GenerateColorMap
(
model
.
labels
.
size
());
std
::
string
save_dir
=
"output"
;
// 进行预测
if
(
FLAGS_image_list
!=
""
)
{
std
::
ifstream
inf
(
FLAGS_image_list
);
if
(
!
inf
)
{
std
::
cerr
<<
"Fail to open file "
<<
FLAGS_image_list
<<
std
::
endl
;
return
-
1
;
}
std
::
string
image_path
;
while
(
getline
(
inf
,
image_path
))
{
PaddleX
::
DetResult
result
;
cv
::
Mat
im
=
cv
::
imread
(
image_path
,
1
);
model
.
predict
(
im
,
&
result
);
for
(
int
i
=
0
;
i
<
result
.
boxes
.
size
();
++
i
)
{
std
::
cout
<<
"image file: "
<<
image_path
<<
", predict label: "
<<
result
.
boxes
[
i
].
category
<<
", label_id:"
<<
result
.
boxes
[
i
].
category_id
<<
", score: "
<<
result
.
boxes
[
i
].
score
<<
", box:("
<<
result
.
boxes
[
i
].
coordinate
[
0
]
<<
", "
<<
result
.
boxes
[
i
].
coordinate
[
1
]
<<
", "
<<
result
.
boxes
[
i
].
coordinate
[
2
]
<<
", "
<<
result
.
boxes
[
i
].
coordinate
[
3
]
<<
")"
<<
std
::
endl
;
}
// 可视化
cv
::
Mat
vis_img
=
PaddleX
::
VisualizeDet
(
im
,
result
,
model
.
labels
,
colormap
,
0.5
);
std
::
string
save_path
=
PaddleX
::
generate_save_path
(
FLAGS_save_dir
,
image_path
);
cv
::
imwrite
(
save_path
,
vis_img
);
result
.
clear
();
std
::
cout
<<
"Visualized output saved as "
<<
save_path
<<
std
::
endl
;
}
}
else
{
PaddleX
::
DetResult
result
;
cv
::
Mat
im
=
cv
::
imread
(
FLAGS_image
,
1
);
model
.
predict
(
im
,
&
result
);
for
(
int
i
=
0
;
i
<
result
.
boxes
.
size
();
++
i
)
{
std
::
cout
<<
", predict label: "
<<
result
.
boxes
[
i
].
category
<<
", label_id:"
<<
result
.
boxes
[
i
].
category_id
<<
", score: "
<<
result
.
boxes
[
i
].
score
<<
", box:("
<<
result
.
boxes
[
i
].
coordinate
[
0
]
<<
", "
<<
result
.
boxes
[
i
].
coordinate
[
1
]
<<
", "
<<
result
.
boxes
[
i
].
coordinate
[
2
]
<<
", "
<<
result
.
boxes
[
i
].
coordinate
[
3
]
<<
")"
<<
std
::
endl
;
}
// 可视化
cv
::
Mat
vis_img
=
PaddleX
::
VisualizeDet
(
im
,
result
,
model
.
labels
,
colormap
,
0.5
);
std
::
string
save_path
=
PaddleX
::
generate_save_path
(
FLAGS_save_dir
,
FLAGS_image
);
cv
::
imwrite
(
save_path
,
vis_img
);
result
.
clear
();
std
::
cout
<<
"Visualized output saved as "
<<
save_path
<<
std
::
endl
;
}
return
0
;
}
deploy/cpp/src/segmenter.cpp
已删除
100644 → 0
浏览文件 @
f55d7014
// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <glog/logging.h>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include "include/paddlex/paddlex.h"
#include "include/paddlex/visualize.h"
DEFINE_string
(
model_dir
,
""
,
"Path of inference model"
);
DEFINE_bool
(
use_gpu
,
false
,
"Infering with GPU or CPU"
);
DEFINE_bool
(
use_trt
,
false
,
"Infering with TensorRT"
);
DEFINE_int32
(
gpu_id
,
0
,
"GPU card id"
);
DEFINE_string
(
image
,
""
,
"Path of test image file"
);
DEFINE_string
(
image_list
,
""
,
"Path of test image list file"
);
DEFINE_string
(
save_dir
,
"output"
,
"Path to save visualized image"
);
int
main
(
int
argc
,
char
**
argv
)
{
// 解析命令行参数
google
::
ParseCommandLineFlags
(
&
argc
,
&
argv
,
true
);
if
(
FLAGS_model_dir
==
""
)
{
std
::
cerr
<<
"--model_dir need to be defined"
<<
std
::
endl
;
return
-
1
;
}
if
(
FLAGS_image
==
""
&
FLAGS_image_list
==
""
)
{
std
::
cerr
<<
"--image or --image_list need to be defined"
<<
std
::
endl
;
return
-
1
;
}
// 加载模型
PaddleX
::
Model
model
;
model
.
Init
(
FLAGS_model_dir
,
FLAGS_use_gpu
,
FLAGS_use_trt
,
FLAGS_gpu_id
);
auto
colormap
=
PaddleX
::
GenerateColorMap
(
model
.
labels
.
size
());
// 进行预测
if
(
FLAGS_image_list
!=
""
)
{
std
::
ifstream
inf
(
FLAGS_image_list
);
if
(
!
inf
)
{
std
::
cerr
<<
"Fail to open file "
<<
FLAGS_image_list
<<
std
::
endl
;
return
-
1
;
}
std
::
string
image_path
;
while
(
getline
(
inf
,
image_path
))
{
PaddleX
::
SegResult
result
;
cv
::
Mat
im
=
cv
::
imread
(
image_path
,
1
);
model
.
predict
(
im
,
&
result
);
// 可视化
cv
::
Mat
vis_img
=
PaddleX
::
VisualizeSeg
(
im
,
result
,
model
.
labels
,
colormap
);
std
::
string
save_path
=
PaddleX
::
generate_save_path
(
FLAGS_save_dir
,
image_path
);
cv
::
imwrite
(
save_path
,
vis_img
);
result
.
clear
();
std
::
cout
<<
"Visualized output saved as "
<<
save_path
<<
std
::
endl
;
}
}
else
{
PaddleX
::
SegResult
result
;
cv
::
Mat
im
=
cv
::
imread
(
FLAGS_image
,
1
);
model
.
predict
(
im
,
&
result
);
// 可视化
cv
::
Mat
vis_img
=
PaddleX
::
VisualizeSeg
(
im
,
result
,
model
.
labels
,
colormap
);
std
::
string
save_path
=
PaddleX
::
generate_save_path
(
FLAGS_save_dir
,
FLAGS_image
);
cv
::
imwrite
(
save_path
,
vis_img
);
result
.
clear
();
std
::
cout
<<
"Visualized output saved as "
<<
save_path
<<
std
::
endl
;
}
return
0
;
}
deploy/cpp/src/visualize.cpp
浏览文件 @
0f72bbfe
...
@@ -31,7 +31,7 @@ std::vector<int> GenerateColorMap(int num_class) {
...
@@ -31,7 +31,7 @@ std::vector<int> GenerateColorMap(int num_class) {
return
colormap
;
return
colormap
;
}
}
cv
::
Mat
Visualize
Det
(
const
cv
::
Mat
&
img
,
cv
::
Mat
Visualize
(
const
cv
::
Mat
&
img
,
const
DetResult
&
result
,
const
DetResult
&
result
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
vector
<
int
>&
colormap
,
const
std
::
vector
<
int
>&
colormap
,
...
@@ -105,7 +105,7 @@ cv::Mat VisualizeDet(const cv::Mat& img,
...
@@ -105,7 +105,7 @@ cv::Mat VisualizeDet(const cv::Mat& img,
return
vis_img
;
return
vis_img
;
}
}
cv
::
Mat
Visualize
Seg
(
const
cv
::
Mat
&
img
,
cv
::
Mat
Visualize
(
const
cv
::
Mat
&
img
,
const
SegResult
&
result
,
const
SegResult
&
result
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
map
<
int
,
std
::
string
>&
labels
,
const
std
::
vector
<
int
>&
colormap
)
{
const
std
::
vector
<
int
>&
colormap
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录