Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sq975
openpose
提交
ff30d4f5
O
openpose
项目概览
sq975
/
openpose
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
openpose
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ff30d4f5
编写于
9月 25, 2017
作者:
G
gineshidalgo99
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added net drawer + alpha BODY_19 code
上级
3aadfc99
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
149 addition
and
42 deletion
+149
-42
doc/release_notes.md
doc/release_notes.md
+1
-0
examples/tests/drawProtoTxt.sh
examples/tests/drawProtoTxt.sh
+18
-0
include/openpose/pose/enumClasses.hpp
include/openpose/pose/enumClasses.hpp
+2
-1
include/openpose/pose/poseParameters.hpp
include/openpose/pose/poseParameters.hpp
+85
-34
src/openpose/pose/bodyPartConnectorBase.cpp
src/openpose/pose/bodyPartConnectorBase.cpp
+6
-3
src/openpose/pose/poseParameters.cpp
src/openpose/pose/poseParameters.cpp
+1
-1
src/openpose/pose/renderPose.cu
src/openpose/pose/renderPose.cu
+34
-3
src/openpose/utilities/flagsToOpenPose.cpp
src/openpose/utilities/flagsToOpenPose.cpp
+2
-0
未找到文件。
doc/release_notes.md
浏览文件 @
ff30d4f5
...
...
@@ -115,3 +115,4 @@ OpenPose Library - Release Notes
## Current version (future OpenPose 1.1.1)
1.
Main improvements:
1.
COCO JSON file outputs 0 as score for non-detected keypoints.
examples/tests/drawProtoTxt.sh
0 → 100644
浏览文件 @
ff30d4f5
# Script for internal use. We might completely change it continuously and we will not answer questions about it.
# Required
# sudo apt-get install graphviz
# USAGE EXAMPLE
# clear && clear && make all -j24 && bash ./examples/tests/speed_test.sh
# # Go back to main folder
# cd ../../
PROTO_TXT_PATH
=
/mnt/DataUbuntu/openpose_train/training_results/pose/pose_training.prototxt
OUTPUT_PNG_PATH
=
/mnt/DataUbuntu/openpose_train/training_results/pose/pose_training.png
# Get model speed
python ~/devel/openpose_caffe_train/python/draw_net.py
$PROTO_TXT_PATH
$OUTPUT_PNG_PATH
display
$OUTPUT_PNG_PATH
rm
$OUTPUT_PNG_PATH
include/openpose/pose/enumClasses.hpp
浏览文件 @
ff30d4f5
...
...
@@ -12,7 +12,8 @@ namespace op
MPI_15
=
1
,
/**< MPI model, with 15+1 components (see poseParameters.hpp for details). */
MPI_15_4
=
2
,
/**< Variation of the MPI model, reduced number of CNN stages to 4: faster but less accurate.*/
BODY_18
=
3
,
/**< Experimental. Do not use. */
BODY_22
=
4
,
/**< Experimental. Do not use. */
BODY_19
=
4
,
/**< Experimental. Do not use. */
BODY_22
=
5
,
/**< Experimental. Do not use. */
Size
,
};
...
...
include/openpose/pose/poseParameters.hpp
浏览文件 @
ff30d4f5
...
...
@@ -103,26 +103,26 @@ namespace op
const
std
::
vector
<
float
>
POSE_MPI_COLORS_RENDER
{
POSE_MPI_COLORS_RENDER_GPU
};
// BODY_18
const
std
::
map
<
unsigned
int
,
std
::
string
>
POSE_BODY_18_BODY_PARTS
{
// Windows map copy error if `= POSE_COCO_BODY_PARTS`
{
0
,
"Nose"
},
{
1
,
"Neck"
},
{
2
,
"RShoulder"
},
{
3
,
"RElbow"
},
{
4
,
"RWrist"
},
{
5
,
"LShoulder"
},
{
6
,
"LElbow"
},
{
7
,
"LWrist"
},
{
8
,
"RHip"
},
{
9
,
"RKnee"
},
{
10
,
"RAnkle"
},
{
11
,
"LHip"
},
{
12
,
"LKnee"
},
{
13
,
"LAnkle"
},
{
14
,
"REye"
},
{
15
,
"LEye"
},
{
16
,
"REar"
},
{
17
,
"LEar"
},
{
18
,
"Background"
}
};
{
0
,
"Nose"
},
{
1
,
"Neck"
},
{
2
,
"RShoulder"
},
{
3
,
"RElbow"
},
{
4
,
"RWrist"
},
{
5
,
"LShoulder"
},
{
6
,
"LElbow"
},
{
7
,
"LWrist"
},
{
8
,
"RHip"
},
{
9
,
"RKnee"
},
{
10
,
"RAnkle"
},
{
11
,
"LHip"
},
{
12
,
"LKnee"
},
{
13
,
"LAnkle"
},
{
14
,
"REye"
},
{
15
,
"LEye"
},
{
16
,
"REar"
},
{
17
,
"LEar"
},
{
18
,
"Background"
}
};
const
unsigned
int
POSE_BODY_18_NUMBER_PARTS
{
POSE_COCO_NUMBER_PARTS
};
const
std
::
vector
<
unsigned
int
>
POSE_BODY_18_MAP_IDX
{
POSE_COCO_MAP_IDX
};
#define POSE_BODY_18_PAIRS_RENDER_GPU POSE_COCO_PAIRS_RENDER_GPU
...
...
@@ -130,7 +130,56 @@ namespace op
const
std
::
vector
<
unsigned
int
>
POSE_BODY_18_PAIRS
{
POSE_COCO_PAIRS
};
#define POSE_BODY_18_COLORS_RENDER_GPU POSE_COCO_COLORS_RENDER_GPU
const
std
::
vector
<
float
>
POSE_BODY_18_COLORS_RENDER
{
POSE_BODY_18_COLORS_RENDER_GPU
};
// BODY_22 (experimental, do not use)
// BODY_19
const
std
::
map
<
unsigned
int
,
std
::
string
>
POSE_BODY_19_BODY_PARTS
{
{
0
,
"Nose"
},
{
1
,
"Neck"
},
{
2
,
"RShoulder"
},
{
3
,
"RElbow"
},
{
4
,
"RWrist"
},
{
5
,
"LShoulder"
},
{
6
,
"LElbow"
},
{
7
,
"LWrist"
},
{
8
,
"LowerAbs"
},
{
9
,
"RHip"
},
{
10
,
"RKnee"
},
{
11
,
"RAnkle"
},
{
12
,
"LHip"
},
{
13
,
"LKnee"
},
{
14
,
"LAnkle"
},
{
15
,
"REye"
},
{
16
,
"LEye"
},
{
17
,
"REar"
},
{
18
,
"LEar"
},
{
19
,
"Background"
}
};
const
unsigned
int
POSE_BODY_19_NUMBER_PARTS
=
19u
;
// Equivalent to size of std::map POSE_BODY_19_BODY_PARTS - 1 (removing background)
const
std
::
vector
<
unsigned
int
>
POSE_BODY_19_MAP_IDX
{
20
,
21
,
34
,
35
,
42
,
43
,
36
,
37
,
38
,
39
,
44
,
45
,
46
,
47
,
26
,
27
,
22
,
23
,
24
,
25
,
28
,
29
,
30
,
31
,
32
,
33
,
50
,
51
,
52
,
53
,
56
,
57
,
54
,
55
,
58
,
59
,
40
,
41
,
48
,
49
};
#define POSE_BODY_19_PAIRS_RENDER_GPU {1,8, 1,2, 1,5, 2,3, 3,4, 5,6, 6,7, 8,9, 9,10, 10,11, 8,12, 12,13, 13,14, 1,0, 0,15, 15,17, 0,16, 16,18}
const
std
::
vector
<
unsigned
int
>
POSE_BODY_19_PAIRS_RENDER
{
POSE_COCO_PAIRS_RENDER_GPU
};
const
std
::
vector
<
unsigned
int
>
POSE_BODY_19_PAIRS
{
1
,
8
,
1
,
2
,
1
,
5
,
2
,
3
,
3
,
4
,
5
,
6
,
6
,
7
,
8
,
9
,
9
,
10
,
10
,
11
,
8
,
12
,
12
,
13
,
13
,
14
,
1
,
0
,
0
,
15
,
15
,
17
,
0
,
16
,
16
,
18
,
2
,
17
,
5
,
18
};
#define POSE_BODY_19_COLORS_RENDER_GPU \
255.f, 0.f, 85.f, \
255.f, 0.f, 0.f, \
255.f, 85.f, 0.f, \
255.f, 170.f, 0.f, \
255.f, 255.f, 0.f, \
170.f, 255.f, 0.f, \
85.f, 255.f, 0.f, \
0.f, 255.f, 0.f, \
255.f, 0.f, 0.f, \
0.f, 255.f, 85.f, \
0.f, 255.f, 170.f, \
0.f, 255.f, 255.f, \
0.f, 170.f, 255.f, \
0.f, 85.f, 255.f, \
0.f, 0.f, 255.f, \
255.f, 0.f, 170.f, \
170.f, 0.f, 255.f, \
255.f, 0.f, 255.f, \
85.f, 0.f, 255.f
const
std
::
vector
<
float
>
POSE_BODY_19_COLORS_RENDER
{
POSE_BODY_19_COLORS_RENDER_GPU
};
// BODY_22
const
std
::
map
<
unsigned
int
,
std
::
string
>
POSE_BODY_22_BODY_PARTS
{
{
0
,
"Nose"
},
{
1
,
"Neck"
},
...
...
@@ -154,7 +203,7 @@ namespace op
{
19
,
"LTest1"
},
{
20
,
"RTest2"
},
{
21
,
"LTest2"
},
{
22
,
"Background"
}
,
{
22
,
"Background"
}
};
const
unsigned
int
POSE_BODY_22_NUMBER_PARTS
=
22u
;
// Equivalent to size of std::map POSE_BODY_22_BODY_PARTS - 1 (removing background)
const
std
::
vector
<
unsigned
int
>
POSE_BODY_22_MAP_IDX
{
35
,
36
,
43
,
45
,
37
,
38
,
39
,
40
,
45
,
46
,
47
,
48
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
51
,
52
};
...
...
@@ -184,31 +233,32 @@ namespace op
// Constant Array Parameters
const
std
::
array
<
float
,
(
int
)
PoseModel
::
Size
>
POSE_CCN_DECREASE_FACTOR
{
8.
f
,
8.
f
,
8.
f
,
8.
f
8.
f
,
8.
f
,
8.
f
,
8.
f
,
8.
f
,
8.
f
};
const
std
::
array
<
unsigned
int
,
(
int
)
PoseModel
::
Size
>
POSE_MAX_PEAKS
{
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
,
POSE_MAX_PEOPLE
};
const
std
::
array
<
unsigned
int
,
(
int
)
PoseModel
::
Size
>
POSE_NUMBER_BODY_PARTS
{
POSE_COCO_NUMBER_PARTS
,
POSE_MPI_NUMBER_PARTS
,
POSE_MPI_NUMBER_PARTS
,
POSE_BODY_18_NUMBER_PARTS
,
POSE_BODY_22_NUMBER_PARTS
POSE_COCO_NUMBER_PARTS
,
POSE_MPI_NUMBER_PARTS
,
POSE_MPI_NUMBER_PARTS
,
POSE_BODY_18_NUMBER_PARTS
,
POSE_BODY_
19_NUMBER_PARTS
,
POSE_BODY_
22_NUMBER_PARTS
};
const
std
::
array
<
std
::
vector
<
unsigned
int
>
,
(
int
)
PoseModel
::
Size
>
POSE_BODY_PART_PAIRS
{
POSE_COCO_PAIRS
,
POSE_MPI_PAIRS
,
POSE_MPI_PAIRS
,
POSE_BODY_18_PAIRS
,
POSE_BODY_22_PAIRS
POSE_COCO_PAIRS
,
POSE_MPI_PAIRS
,
POSE_MPI_PAIRS
,
POSE_BODY_18_PAIRS
,
POSE_BODY_
19_PAIRS
,
POSE_BODY_
22_PAIRS
};
const
std
::
array
<
std
::
vector
<
unsigned
int
>
,
(
int
)
PoseModel
::
Size
>
POSE_BODY_PART_PAIRS_RENDER
{
POSE_COCO_PAIRS_RENDER
,
POSE_MPI_PAIRS
,
POSE_MPI_PAIRS
,
POSE_BODY_18_PAIRS_RENDER
,
POSE_BODY_22_PAIRS_RENDER
POSE_COCO_PAIRS_RENDER
,
POSE_MPI_PAIRS
,
POSE_MPI_PAIRS
,
POSE_BODY_18_PAIRS_RENDER
,
POSE_BODY_
19_PAIRS_RENDER
,
POSE_BODY_
22_PAIRS_RENDER
};
const
std
::
array
<
std
::
vector
<
unsigned
int
>
,
(
int
)
PoseModel
::
Size
>
POSE_MAP_IDX
{
POSE_COCO_MAP_IDX
,
POSE_MPI_MAP_IDX
,
POSE_MPI_MAP_IDX
,
POSE_BODY_18_MAP_IDX
,
POSE_BODY_22_MAP_IDX
POSE_COCO_MAP_IDX
,
POSE_MPI_MAP_IDX
,
POSE_MPI_MAP_IDX
,
POSE_BODY_18_MAP_IDX
,
POSE_BODY_
19_MAP_IDX
,
POSE_BODY_
22_MAP_IDX
};
const
std
::
array
<
std
::
vector
<
float
>
,
(
int
)
PoseModel
::
Size
>
POSE_COLORS
{
POSE_COCO_COLORS_RENDER
,
POSE_MPI_COLORS_RENDER
,
POSE_MPI_COLORS_RENDER
,
POSE_BODY_18_COLORS_RENDER
,
POSE_BODY_22_COLORS_RENDER
POSE_COCO_COLORS_RENDER
,
POSE_MPI_COLORS_RENDER
,
POSE_MPI_COLORS_RENDER
,
POSE_BODY_18_COLORS_RENDER
,
POSE_BODY_
19_COLORS_RENDER
,
POSE_BODY_
22_COLORS_RENDER
};
const
std
::
array
<
std
::
string
,
(
int
)
PoseModel
::
Size
>
POSE_PROTOTXT
{
"pose/coco/pose_deploy_linevec.prototxt"
,
"pose/mpi/pose_deploy_linevec.prototxt"
,
"pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt"
,
"pose/body_18/pose_deploy.prototxt"
,
"pose/body_19/pose_deploy.prototxt"
,
"pose/body_22/pose_deploy.prototxt"
};
const
std
::
array
<
std
::
string
,
(
int
)
PoseModel
::
Size
>
POSE_TRAINED_MODEL
{
...
...
@@ -216,6 +266,7 @@ namespace op
"pose/mpi/pose_iter_160000.caffemodel"
,
"pose/mpi/pose_iter_160000.caffemodel"
,
"pose/body_18/pose_iter_XXXXXX.caffemodel"
,
"pose/body_19/pose_iter_XXXXXX.caffemodel"
,
"pose/body_22/pose_iter_40000.caffemodel"
};
// POSE_BODY_PART_MAPPING crashes on Windows at dynamic initialization, to avoid this crash:
...
...
@@ -228,19 +279,19 @@ namespace op
// Default Model Parameters
// They might be modified on running time
const
std
::
array
<
float
,
(
int
)
PoseModel
::
Size
>
POSE_DEFAULT_NMS_THRESHOLD
{
0.05
f
,
0.6
f
,
0.3
f
,
0.05
f
,
0.05
f
0.05
f
,
0.6
f
,
0.3
f
,
0.05
f
,
0.05
f
,
0.05
f
};
const
std
::
array
<
unsigned
int
,
(
int
)
PoseModel
::
Size
>
POSE_DEFAULT_CONNECT_INTER_MIN_ABOVE_THRESHOLD
{
9
,
8
,
8
,
9
,
9
9
,
8
,
8
,
9
,
9
,
9
};
const
std
::
array
<
float
,
(
int
)
PoseModel
::
Size
>
POSE_DEFAULT_CONNECT_INTER_THRESHOLD
{
0.05
f
,
0.01
f
,
0.01
f
,
0.05
f
,
0.05
f
0.05
f
,
0.01
f
,
0.01
f
,
0.05
f
,
0.05
f
,
0.05
f
};
const
std
::
array
<
unsigned
int
,
(
int
)
PoseModel
::
Size
>
POSE_DEFAULT_CONNECT_MIN_SUBSET_CNT
{
3
,
3
,
3
,
3
,
3
3
,
3
,
3
,
3
,
3
,
3
};
const
std
::
array
<
float
,
(
int
)
PoseModel
::
Size
>
POSE_DEFAULT_CONNECT_MIN_SUBSET_SCORE
{
0.4
f
,
0.4
f
,
0.4
f
,
0.4
f
,
0.4
f
0.4
f
,
0.4
f
,
0.4
f
,
0.4
f
,
0.4
f
,
0.4
f
};
// Rendering parameters
...
...
src/openpose/pose/bodyPartConnectorBase.cpp
浏览文件 @
ff30d4f5
...
...
@@ -40,7 +40,8 @@ namespace op
// Change w.r.t. other
if
(
nA
==
0
)
// nB == 0 or not
{
if
(
poseModel
==
PoseModel
::
COCO_18
||
poseModel
==
PoseModel
::
BODY_18
||
poseModel
==
PoseModel
::
BODY_22
)
if
(
poseModel
==
PoseModel
::
COCO_18
||
poseModel
==
PoseModel
::
BODY_18
||
poseModel
==
PoseModel
::
BODY_19
||
poseModel
==
PoseModel
::
BODY_22
)
{
for
(
auto
i
=
1
;
i
<=
nB
;
i
++
)
{
...
...
@@ -81,7 +82,8 @@ namespace op
}
else
// if (nA != 0 && nB == 0)
{
if
(
poseModel
==
PoseModel
::
COCO_18
||
poseModel
==
PoseModel
::
BODY_18
||
poseModel
==
PoseModel
::
BODY_22
)
if
(
poseModel
==
PoseModel
::
COCO_18
||
poseModel
==
PoseModel
::
BODY_18
||
poseModel
==
PoseModel
::
BODY_19
||
poseModel
==
PoseModel
::
BODY_22
)
{
for
(
auto
i
=
1
;
i
<=
nA
;
i
++
)
{
...
...
@@ -214,7 +216,8 @@ namespace op
}
}
// Add ears connections (in case person is looking to opposite direction to camera)
else
if
(
poseModel
==
PoseModel
::
COCO_18
&&
(
pairIndex
==
17
||
pairIndex
==
18
))
else
if
(((
poseModel
==
PoseModel
::
COCO_18
||
poseModel
==
PoseModel
::
BODY_18
)
&&
(
pairIndex
==
17
||
pairIndex
==
18
))
||
(
poseModel
==
PoseModel
::
BODY_19
&&
(
pairIndex
==
18
||
pairIndex
==
19
)))
{
for
(
const
auto
&
connectionKI
:
connectionK
)
{
...
...
src/openpose/pose/poseParameters.cpp
浏览文件 @
ff30d4f5
...
...
@@ -3,7 +3,7 @@
namespace
op
{
const
std
::
array
<
std
::
map
<
unsigned
int
,
std
::
string
>
,
(
int
)
PoseModel
::
Size
>
POSE_BODY_PART_MAPPING
{
POSE_COCO_BODY_PARTS
,
POSE_MPI_BODY_PARTS
,
POSE_MPI_BODY_PARTS
,
POSE_BODY_18_BODY_PARTS
,
POSE_BODY_22_BODY_PARTS
POSE_COCO_BODY_PARTS
,
POSE_MPI_BODY_PARTS
,
POSE_MPI_BODY_PARTS
,
POSE_BODY_18_BODY_PARTS
,
POSE_BODY_
19_BODY_PARTS
,
POSE_BODY_
22_BODY_PARTS
};
unsigned
int
poseBodyPartMapStringToKey
(
const
PoseModel
poseModel
,
const
std
::
vector
<
std
::
string
>&
strings
)
...
...
src/openpose/pose/renderPose.cu
浏览文件 @
ff30d4f5
...
...
@@ -10,10 +10,12 @@ namespace op
__constant__
const
float
PI
=
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745
f
;
__constant__
const
unsigned
int
COCO_PAIRS_GPU
[]
=
POSE_COCO_PAIRS_RENDER_GPU
;
__constant__
const
unsigned
int
BODY_18_PAIRS_GPU
[]
=
POSE_BODY_18_PAIRS_RENDER_GPU
;
__constant__
const
unsigned
int
BODY_19_PAIRS_GPU
[]
=
POSE_BODY_19_PAIRS_RENDER_GPU
;
__constant__
const
unsigned
int
BODY_22_PAIRS_GPU
[]
=
POSE_BODY_22_PAIRS_RENDER_GPU
;
__constant__
const
unsigned
int
MPI_PAIRS_GPU
[]
=
POSE_MPI_PAIRS_RENDER_GPU
;
__constant__
const
float
COCO_COLORS
[]
=
{
POSE_COCO_COLORS_RENDER_GPU
};
__constant__
const
float
BODY_18_COLORS
[]
=
{
POSE_BODY_18_COLORS_RENDER_GPU
};
__constant__
const
float
BODY_19_COLORS
[]
=
{
POSE_BODY_19_COLORS_RENDER_GPU
};
__constant__
const
float
BODY_22_COLORS
[]
=
{
POSE_BODY_22_COLORS_RENDER_GPU
};
__constant__
const
float
MPI_COLORS
[]
=
{
POSE_MPI_COLORS_RENDER_GPU
};
...
...
@@ -148,6 +150,32 @@ namespace op
radius
,
stickwidth
,
threshold
,
alphaColorToAdd
,
blendOriginalFrame
,
(
googlyEyes
?
14
:
-
1
),
(
googlyEyes
?
15
:
-
1
));
}
__global__
void
renderPoseBody19
(
float
*
targetPtr
,
const
int
targetWidth
,
const
int
targetHeight
,
const
float
*
const
posePtr
,
const
int
numberPeople
,
const
float
threshold
,
const
bool
googlyEyes
,
const
bool
blendOriginalFrame
,
const
float
alphaColorToAdd
)
{
const
auto
x
=
(
blockIdx
.
x
*
blockDim
.
x
)
+
threadIdx
.
x
;
const
auto
y
=
(
blockIdx
.
y
*
blockDim
.
y
)
+
threadIdx
.
y
;
const
auto
globalIdx
=
threadIdx
.
y
*
blockDim
.
x
+
threadIdx
.
x
;
// Shared parameters
__shared__
float2
sharedMins
[
POSE_MAX_PEOPLE
];
__shared__
float2
sharedMaxs
[
POSE_MAX_PEOPLE
];
__shared__
float
sharedScaleF
[
POSE_MAX_PEOPLE
];
// Other parameters
const
auto
numberPartPairs
=
sizeof
(
BODY_19_PAIRS_GPU
)
/
(
2
*
sizeof
(
BODY_19_PAIRS_GPU
[
0
]));
const
auto
numberColors
=
sizeof
(
BODY_19_COLORS
)
/
(
3
*
sizeof
(
BODY_19_COLORS
[
0
]));
const
auto
radius
=
fastMin
(
targetWidth
,
targetHeight
)
/
100.
f
;
const
auto
stickwidth
=
fastMin
(
targetWidth
,
targetHeight
)
/
120.
f
;
// Render key points
renderKeypoints
(
targetPtr
,
sharedMaxs
,
sharedMins
,
sharedScaleF
,
globalIdx
,
x
,
y
,
targetWidth
,
targetHeight
,
posePtr
,
BODY_19_PAIRS_GPU
,
numberPeople
,
POSE_BODY_19_NUMBER_PARTS
,
numberPartPairs
,
BODY_19_COLORS
,
numberColors
,
radius
,
stickwidth
,
threshold
,
alphaColorToAdd
,
blendOriginalFrame
,
(
googlyEyes
?
15
:
-
1
),
(
googlyEyes
?
16
:
-
1
));
}
__global__
void
renderPoseBody22
(
float
*
targetPtr
,
const
int
targetWidth
,
const
int
targetHeight
,
const
float
*
const
posePtr
,
const
int
numberPeople
,
const
float
threshold
,
const
bool
googlyEyes
,
const
bool
blendOriginalFrame
,
const
float
alphaColorToAdd
)
...
...
@@ -361,13 +389,16 @@ namespace op
std
::
tie
(
threadsPerBlock
,
numBlocks
)
=
getNumberCudaThreadsAndBlocks
(
frameSize
);
if
(
poseModel
==
PoseModel
::
COCO_18
)
renderPoseCoco
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
numberPeople
,
renderPoseCoco
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
numberPeople
,
renderThreshold
,
googlyEyes
,
blendOriginalFrame
,
alphaBlending
);
else
if
(
poseModel
==
PoseModel
::
BODY_18
)
renderPoseBody18
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
numberPeople
,
renderPoseBody18
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
numberPeople
,
renderThreshold
,
googlyEyes
,
blendOriginalFrame
,
alphaBlending
);
else
if
(
poseModel
==
PoseModel
::
BODY_19
)
renderPoseBody19
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
numberPeople
,
renderThreshold
,
googlyEyes
,
blendOriginalFrame
,
alphaBlending
);
else
if
(
poseModel
==
PoseModel
::
BODY_22
)
renderPoseBody22
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
numberPeople
,
renderPoseBody22
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
numberPeople
,
renderThreshold
,
googlyEyes
,
blendOriginalFrame
,
alphaBlending
);
else
if
(
poseModel
==
PoseModel
::
MPI_15
||
poseModel
==
PoseModel
::
MPI_15_4
)
renderPoseMpi29Parts
<<<
threadsPerBlock
,
numBlocks
>>>
(
framePtr
,
frameSize
.
x
,
frameSize
.
y
,
posePtr
,
...
...
src/openpose/utilities/flagsToOpenPose.cpp
浏览文件 @
ff30d4f5
...
...
@@ -20,6 +20,8 @@ namespace op
return
PoseModel
::
MPI_15_4
;
else
if
(
poseModeString
==
"BODY_18"
)
return
PoseModel
::
BODY_18
;
else
if
(
poseModeString
==
"BODY_19"
)
return
PoseModel
::
BODY_19
;
else
if
(
poseModeString
==
"BODY_22"
)
return
PoseModel
::
BODY_22
;
// else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录