Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleHub
提交
cbac164a
P
PaddleHub
项目概览
PaddlePaddle
/
PaddleHub
大约 1 年 前同步成功
通知
282
Star
12117
Fork
2091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
200
列表
看板
标记
里程碑
合并请求
4
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleHub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
200
Issue
200
列表
看板
标记
里程碑
合并请求
4
合并请求
4
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
cbac164a
编写于
2月 25, 2020
作者:
C
channingss
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
set model version==1.1.0
上级
6df0e934
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
98 addition
and
57 deletion
+98
-57
demo/mask_detection/cpp/export_model.py
demo/mask_detection/cpp/export_model.py
+22
-3
demo/mask_detection/python/export_model.py
demo/mask_detection/python/export_model.py
+22
-3
demo/mask_detection/python/infer.py
demo/mask_detection/python/infer.py
+54
-51
未找到文件。
demo/mask_detection/cpp/export_model.py
浏览文件 @
cbac164a
...
@@ -11,17 +11,36 @@
...
@@ -11,17 +11,36 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# 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.
import
os
import
paddlehub
as
hub
import
paddlehub
as
hub
# Load mask detector module from PaddleHub
# Load mask detector module from PaddleHub
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_server_mask"
)
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_server_mask"
,
version
=
'1.1.0'
)
# Export inference model for deployment
# Export inference model for deployment
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_server_mask"
)
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_server_mask"
)
# rename of params
classify_param
=
"./pyramidbox_lite_server_mask/pyramidbox_lite/__param__"
detection_param
=
"./pyramidbox_lite_server_mask/mask_detector/__param__"
if
os
.
path
.
isfile
(
detection_param
):
os
.
system
(
"mv "
+
detection_param
+
" ./pyramidbox_lite_server_mask/mask_detector/__params__"
)
if
os
.
path
.
isfile
(
classify_param
):
os
.
system
(
"mv "
+
classify_param
+
" ./pyramidbox_lite_server_mask/pyramidbox_lite/__params__"
)
print
(
"pyramidbox_lite_server_mask module export done!"
)
print
(
"pyramidbox_lite_server_mask module export done!"
)
# Load mask detector (mobile version) module from PaddleHub
# Load mask detector (mobile version) module from PaddleHub
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_mobile_mask"
)
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_mobile_mask"
,
version
=
"1.1.0"
)
# Export inference model for deployment
# Export inference model for deployment
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_mobile_mask"
)
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_mobile_mask"
)
# rename of params
classify_param
=
"./pyramidbox_lite_mobile_mask/pyramidbox_lite/__param__"
detection_param
=
"./pyramidbox_lite_mobile_mask/mask_detector/__param__"
if
os
.
path
.
isfile
(
detection_param
):
os
.
system
(
"mv "
+
detection_param
+
" ./pyramidbox_lite_mobile_mask/mask_detector/__params__"
)
if
os
.
path
.
isfile
(
classify_param
):
os
.
system
(
"mv "
+
classify_param
+
" ./pyramidbox_lite_mobile_mask/pyramidbox_lite/__params__"
)
print
(
"pyramidbox_lite_mobile_mask module export done!"
)
print
(
"pyramidbox_lite_mobile_mask module export done!"
)
demo/mask_detection/python/export_model.py
浏览文件 @
cbac164a
...
@@ -11,17 +11,36 @@
...
@@ -11,17 +11,36 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# 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.
import
os
import
paddlehub
as
hub
import
paddlehub
as
hub
# Load mask detector module from PaddleHub
# Load mask detector module from PaddleHub
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_server_mask"
)
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_server_mask"
,
version
=
'1.1.0'
)
# Export inference model for deployment
# Export inference model for deployment
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_server_mask"
)
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_server_mask"
)
# rename of params
classify_param
=
"./pyramidbox_lite_server_mask/pyramidbox_lite/__param__"
detection_param
=
"./pyramidbox_lite_server_mask/mask_detector/__param__"
if
os
.
path
.
isfile
(
detection_param
):
os
.
system
(
"mv "
+
detection_param
+
" ./pyramidbox_lite_server_mask/mask_detector/__params__"
)
if
os
.
path
.
isfile
(
classify_param
):
os
.
system
(
"mv "
+
classify_param
+
" ./pyramidbox_lite_server_mask/pyramidbox_lite/__params__"
)
print
(
"pyramidbox_lite_server_mask module export done!"
)
print
(
"pyramidbox_lite_server_mask module export done!"
)
# Load mask detector (mobile version) module from PaddleHub
# Load mask detector (mobile version) module from PaddleHub
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_mobile_mask"
)
module
=
hub
.
Module
(
name
=
"pyramidbox_lite_mobile_mask"
,
version
=
"1.1.0"
)
# Export inference model for deployment
# Export inference model for deployment
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_mobile_mask"
)
module
.
processor
.
save_inference_model
(
"./pyramidbox_lite_mobile_mask"
)
# rename of params
classify_param
=
"./pyramidbox_lite_mobile_mask/pyramidbox_lite/__param__"
detection_param
=
"./pyramidbox_lite_mobile_mask/mask_detector/__param__"
if
os
.
path
.
isfile
(
detection_param
):
os
.
system
(
"mv "
+
detection_param
+
" ./pyramidbox_lite_mobile_mask/mask_detector/__params__"
)
if
os
.
path
.
isfile
(
classify_param
):
os
.
system
(
"mv "
+
classify_param
+
" ./pyramidbox_lite_mobile_mask/pyramidbox_lite/__params__"
)
print
(
"pyramidbox_lite_mobile_mask module export done!"
)
print
(
"pyramidbox_lite_mobile_mask module export done!"
)
demo/mask_detection/python/infer.py
浏览文件 @
cbac164a
...
@@ -33,21 +33,27 @@ import argparse
...
@@ -33,21 +33,27 @@ import argparse
def
parse_args
():
def
parse_args
():
parser
=
argparse
.
ArgumentParser
(
'mask detection.'
)
parser
=
argparse
.
ArgumentParser
(
'mask detection.'
)
parser
.
add_argument
(
parser
.
add_argument
(
'--models_dir'
,
'--models_dir'
,
type
=
str
,
default
=
''
,
help
=
'path of models.'
)
type
=
str
,
parser
.
add_argument
(
default
=
''
,
'--img_paths'
,
type
=
str
,
default
=
''
,
help
=
'path of images'
)
help
=
'path of models.'
)
parser
.
add_argument
(
parser
.
add_argument
(
'--img_paths'
,
'--video_path'
,
type
=
str
,
default
=
''
,
help
=
'path of video.'
)
type
=
str
,
parser
.
add_argument
(
default
=
''
,
'--video_size'
,
type
=
tuple
,
default
=
(
1920
,
1080
),
help
=
'size of video.'
)
help
=
'path of images'
)
parser
.
add_argument
(
parser
.
add_argument
(
'--video_path'
,
'--use_camera'
,
type
=
str
,
default
=
''
,
help
=
'path of video.'
)
parser
.
add_argument
(
'--video_size'
,
type
=
tuple
,
default
=
(
1920
,
1080
),
help
=
'size of video.'
)
parser
.
add_argument
(
'--use_camera'
,
type
=
bool
,
type
=
bool
,
default
=
False
,
default
=
False
,
help
=
'switch detect video or camera, default:video.'
)
help
=
'switch detect video or camera, default:video.'
)
parser
.
add_argument
(
parser
.
add_argument
(
'--use_gpu'
,
'--use_gpu'
,
type
=
bool
,
type
=
bool
,
default
=
False
,
default
=
False
,
help
=
'switch cpu/gpu, default:cpu.'
)
help
=
'switch cpu/gpu, default:cpu.'
)
...
@@ -102,8 +108,7 @@ class MaskClassifier:
...
@@ -102,8 +108,7 @@ class MaskClassifier:
h
,
w
=
self
.
EVAL_SIZE
[
1
],
self
.
EVAL_SIZE
[
0
]
h
,
w
=
self
.
EVAL_SIZE
[
1
],
self
.
EVAL_SIZE
[
0
]
inputs
=
[]
inputs
=
[]
for
face
in
faces
:
for
face
in
faces
:
im
=
cv2
.
resize
(
im
=
cv2
.
resize
(
face
.
rect_data
,
(
128
,
128
),
face
.
rect_data
,
(
128
,
128
),
fx
=
0
,
fx
=
0
,
fy
=
0
,
fy
=
0
,
interpolation
=
cv2
.
INTER_CUBIC
)
interpolation
=
cv2
.
INTER_CUBIC
)
...
@@ -132,7 +137,7 @@ class MaskClassifier:
...
@@ -132,7 +137,7 @@ class MaskClassifier:
input_data
=
np
.
concatenate
(
inputs
)
input_data
=
np
.
concatenate
(
inputs
)
im_tensor
=
fluid
.
core
.
PaddleTensor
(
im_tensor
=
fluid
.
core
.
PaddleTensor
(
input_data
.
copy
().
astype
(
'float32'
))
input_data
.
copy
().
astype
(
'float32'
))
output_data
=
self
.
predictor
.
run
([
im_tensor
])[
1
]
output_data
=
self
.
predictor
.
run
([
im_tensor
])[
0
]
output_data
=
output_data
.
as_ndarray
()
output_data
=
output_data
.
as_ndarray
()
self
.
Postprocess
(
output_data
,
faces
)
self
.
Postprocess
(
output_data
,
faces
)
...
@@ -146,8 +151,10 @@ class FaceDetector:
...
@@ -146,8 +151,10 @@ class FaceDetector:
def
Preprocess
(
self
,
image
,
shrink
):
def
Preprocess
(
self
,
image
,
shrink
):
h
,
w
=
int
(
image
.
shape
[
1
]
*
shrink
),
int
(
image
.
shape
[
0
]
*
shrink
)
h
,
w
=
int
(
image
.
shape
[
1
]
*
shrink
),
int
(
image
.
shape
[
0
]
*
shrink
)
im
=
cv2
.
resize
(
im
=
cv2
.
resize
(
image
,
(
h
,
w
),
image
,
(
h
,
w
),
fx
=
0
,
fy
=
0
,
interpolation
=
cv2
.
INTER_CUBIC
)
fx
=
0
,
fy
=
0
,
interpolation
=
cv2
.
INTER_CUBIC
)
# HWC -> CHW
# HWC -> CHW
im
=
im
.
swapaxes
(
1
,
2
)
im
=
im
.
swapaxes
(
1
,
2
)
im
=
im
.
swapaxes
(
0
,
1
)
im
=
im
.
swapaxes
(
0
,
1
)
...
@@ -187,15 +194,13 @@ class FaceDetector:
...
@@ -187,15 +194,13 @@ class FaceDetector:
def
predict_images
(
args
):
def
predict_images
(
args
):
detector
=
FaceDetector
(
detector
=
FaceDetector
(
model_dir
=
args
.
models_dir
+
'/pyramidbox_lite/'
,
model_dir
=
args
.
models_dir
+
'/pyramidbox_lite/'
,
mean
=
[
104.0
,
177.0
,
123.0
],
mean
=
[
104.0
,
177.0
,
123.0
],
scale
=
[
0.007843
,
0.007843
,
0.007843
],
scale
=
[
0.007843
,
0.007843
,
0.007843
],
use_gpu
=
args
.
use_gpu
,
use_gpu
=
args
.
use_gpu
,
threshold
=
0.7
)
threshold
=
0.7
)
classifier
=
MaskClassifier
(
classifier
=
MaskClassifier
(
model_dir
=
args
.
models_dir
+
'/mask_detector/'
,
model_dir
=
args
.
models_dir
+
'/mask_detector/'
,
mean
=
[
0.5
,
0.5
,
0.5
],
mean
=
[
0.5
,
0.5
,
0.5
],
scale
=
[
1.0
,
1.0
,
1.0
],
scale
=
[
1.0
,
1.0
,
1.0
],
use_gpu
=
args
.
use_gpu
)
use_gpu
=
args
.
use_gpu
)
...
@@ -225,15 +230,13 @@ def predict_video(args, im_shape=(1920, 1080), use_camera=False):
...
@@ -225,15 +230,13 @@ def predict_video(args, im_shape=(1920, 1080), use_camera=False):
else
:
else
:
capture
=
cv2
.
VideoCapture
(
args
.
video_path
)
capture
=
cv2
.
VideoCapture
(
args
.
video_path
)
detector
=
FaceDetector
(
detector
=
FaceDetector
(
model_dir
=
args
.
models_dir
+
'/pyramidbox_lite/'
,
model_dir
=
args
.
models_dir
+
'/pyramidbox_lite/'
,
mean
=
[
104.0
,
177.0
,
123.0
],
mean
=
[
104.0
,
177.0
,
123.0
],
scale
=
[
0.007843
,
0.007843
,
0.007843
],
scale
=
[
0.007843
,
0.007843
,
0.007843
],
use_gpu
=
args
.
use_gpu
,
use_gpu
=
args
.
use_gpu
,
threshold
=
0.7
)
threshold
=
0.7
)
classifier
=
MaskClassifier
(
classifier
=
MaskClassifier
(
model_dir
=
args
.
models_dir
+
'/mask_detector/'
,
model_dir
=
args
.
models_dir
+
'/mask_detector/'
,
mean
=
[
0.5
,
0.5
,
0.5
],
mean
=
[
0.5
,
0.5
,
0.5
],
scale
=
[
1.0
,
1.0
,
1.0
],
scale
=
[
1.0
,
1.0
,
1.0
],
use_gpu
=
args
.
use_gpu
)
use_gpu
=
args
.
use_gpu
)
...
@@ -244,8 +247,8 @@ def predict_video(args, im_shape=(1920, 1080), use_camera=False):
...
@@ -244,8 +247,8 @@ def predict_video(args, im_shape=(1920, 1080), use_camera=False):
os
.
makedirs
(
path
)
os
.
makedirs
(
path
)
fps
=
30
fps
=
30
fourcc
=
cv2
.
VideoWriter_fourcc
(
*
'mp4v'
)
fourcc
=
cv2
.
VideoWriter_fourcc
(
*
'mp4v'
)
writer
=
cv2
.
VideoWriter
(
writer
=
cv2
.
VideoWriter
(
os
.
path
.
join
(
path
,
'result.mp4'
),
fourcc
,
fps
,
os
.
path
.
join
(
path
,
'result.mp4'
),
fourcc
,
fps
,
args
.
video_size
)
args
.
video_size
)
import
time
import
time
start_time
=
time
.
time
()
start_time
=
time
.
time
()
index
=
0
index
=
0
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录