Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sq975
openpose
提交
1a544a83
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 搜索 >>
提交
1a544a83
编写于
9月 05, 2018
作者:
G
gineshidalgo99
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Experimental tracking released
上级
5401f668
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
88 addition
and
33 deletion
+88
-33
README.md
README.md
+2
-4
doc/quick_start.md
doc/quick_start.md
+22
-0
doc/release_notes.md
doc/release_notes.md
+1
-0
doc/released_features.md
doc/released_features.md
+2
-1
src/openpose/pose/bodyPartConnectorBase.cpp
src/openpose/pose/bodyPartConnectorBase.cpp
+42
-17
src/openpose/tracking/personTracker.cpp
src/openpose/tracking/personTracker.cpp
+19
-11
未找到文件。
README.md
浏览文件 @
1a544a83
...
...
@@ -26,6 +26,7 @@
-
Compatible with Flir/Point Grey cameras, but provided C++ demos to add your custom input.
-
**Calibration toolbox**
:
-
Easy estimation of distortion, intrinsic, and extrinsic camera parameters.
-
**Single-person tracking**
for further speed up or visual smoothing.
-
**Input**
: Image, video, webcam, Flir/Point Grey and IP camera. Included C++ demos to add your custom input.
-
**Output**
: Basic image + keypoint display/saving (PNG, JPG, AVI, ...), keypoint saving (JSON, XML, YML, ...), and/or keypoints as array class.
-
**OS**
: Ubuntu (14, 16), Windows (8, 10), Mac OSX, Nvidia TX2.
...
...
@@ -36,6 +37,7 @@
## Latest Features
-
Sep 2018:
[
**Experimental single-person tracker**
](
doc/quick_start.md#tracking
)
for further speed up or visual smoothing!
-
Jun 2018:
[
**Combined body-foot model released! 40% faster and 5% more accurate**
](
doc/installation.md
)
!
-
Jun 2018:
[
**Python API**
](
doc/modules/python_module.md
)
released!
-
Jun 2018:
[
**OpenCL/AMD graphic card version**
](
doc/installation.md
)
released!
...
...
@@ -43,10 +45,6 @@
-
Jun 2018:
[
**Mac OSX version (CPU)**
](
doc/installation.md
)
released!
-
Mar 2018:
[
**CPU version**
](
doc/installation.md#cpu-version
)
!
-
Mar 2018:
[
**3-D keypoint reconstruction module**
](
doc/modules/3d_reconstruction_module.md
)
(
from
multiple camera views)!
-
Sep 2017:
[
**CMake**
](
doc/installation.md
)
installer and
**IP camera**
support!
-
Jul 2017:
[
**Windows portable binaries and demo**
](
https://github.com/CMU-Perceptual-Computing-Lab/openpose/releases
)
!
-
Jul 2017:
**Hands**
released!
-
Jun 2017:
**Face**
released!
For further details, check
[
all released features
](
doc/released_features.md
)
and
[
release notes
](
doc/release_notes.md
)
.
...
...
doc/quick_start.md
浏览文件 @
1a544a83
...
...
@@ -8,6 +8,7 @@ OpenPose - Quick Start
3.
[
Running on Images
](
#running-on-images
)
4.
[
Maximum Accuracy Configuration
](
#maximum-accuracy-configuration
)
5.
[
3-D Reconstruction
](
#3-d-reconstruction
)
6.
[
Tracking
](
#tracking
)
2.
[
Expected Visual Results
](
#expected-visual-results
)
...
...
@@ -167,6 +168,27 @@ build\x64\Release\OpenPoseDemo.exe --flir_camera --3d --number_people_max 1 --fa
### Tracking
1.
Runtime huge speed up by reducing the accuracy:
```
# Using OpenPose 1 frame, tracking the following e.g., 5 frames
./build/examples/openpose/openpose.bin --tracking 5 --number_people_max 1
```
2.
Runtime speed up while keeping most of the accuracy:
```
:: Using OpenPose 1 frame and tracking another frame
./build/examples/openpose/openpose.bin --tracking 1 --number_people_max 1
```
3.
Visual smoothness:
```
# Running both OpenPose and tracking on each frame. Note: There is no speed up/slow down
./build/examples/openpose/openpose.bin --tracking 0 --number_people_max 1
```
## Expected Visual Results
The visual GUI should show the original image with the poses blended on it, similarly to the pose of this gif:
<p
align=
"center"
>
...
...
doc/release_notes.md
浏览文件 @
1a544a83
...
...
@@ -261,6 +261,7 @@ OpenPose Library - Release Notes
## Current version - future OpenPose 1.4.1
1.
Main improvements:
1.
Added initial single-person tracker for further speed up or visual smoothing (
`--tracking`
flag).
2.
Functions or parameters renamed:
3.
Main bugs fixed:
...
...
doc/released_features.md
浏览文件 @
1a544a83
OpenPose Library -
Latest
Released Features
OpenPose Library -
All
Released Features
====================================
-
Sep 2018:
[
**Experimental tracker**
](
./quick_start.md#tracking
)
!
-
Jun 2018:
[
**Combined body-foot model released! 40% faster and 5% more accurate**
](
./installation.md
)
!
-
Jun 2018:
[
**Python API**
](
./modules/python_module.md
)
released!
-
Jun 2018:
[
**OpenCL/AMD graphic card version**
](
./modules/calibration_module.md
)
released!
...
...
src/openpose/pose/bodyPartConnectorBase.cpp
浏览文件 @
1a544a83
...
...
@@ -609,24 +609,46 @@ namespace op
// const auto numberPeople = intRound(peaksPtr[rootNumberIndex]);
poseKeypoints
.
reset
({
numberPeople
,
(
int
)
numberBodyParts
,
3
},
0
);
poseScores
.
reset
(
numberPeople
,
0
);
// // 48 channels
// const std::vector<float> average{
// 0.f, -2.76364f, -1.3345f, 0.f, -1.95322f, 3.95679f, -1.20664f, 4.76543f,
// 1.3345f, 0.f, 1.92318f, 3.96891f, 1.17999f, 4.7901f, 0.f, 7.72201f,
// -0.795236f, 7.74017f, -0.723963f, 11.209f, -0.651316f, 15.6972f,
// 0.764623f, 7.74869f, 0.70755f, 11.2307f, 0.612832f, 15.7281f,
// -0.123134f, -3.43515f, 0.111775f, -3.42761f,
// -0.387066f, -3.16603f, 0.384038f, -3.15951f,
// 0.344764f, 12.9666f, 0.624157f, 12.9057f, 0.195454f, 12.565f,
// -1.06074f, 12.9951f, -1.2427f, 12.9309f, -0.800837f, 12.5845f};
// const std::vector<float> sigma{
// 3.39629f, 3.15605f, 3.16913f, 1.8234f, 5.82252f, 5.05674f, 7.09876f, 6.64574f,
// 3.16913f, 1.8234f, 5.79415f, 5.01424f, 7.03866f, 6.62427f, 5.52593f, 6.75962f,
// 5.91224f, 6.87241f, 8.66473f, 10.1792f, 11.5871f, 13.6565f,
// 5.86653f, 6.89568f, 8.68067f, 10.2127f, 11.5954f, 13.6722f,
// 3.3335f, 3.49128f, 3.34476f, 3.50079f,
// 2.93982f, 3.11151f, 2.95006f, 3.11004f,
// 9.69408f, 7.58921f, 9.71193f, 7.44185f, 9.19343f, 7.11157f,
// 9.16848f, 7.86122f, 9.07613f, 7.83682f, 8.91951f, 7.33715f};
// 50 channels
const
std
::
vector
<
float
>
average
{
0.
f
,
-
2.76364
f
,
-
1.3345
f
,
0.
f
,
-
1.95322
f
,
3.95679
f
,
-
1.20664
f
,
4.76543
f
,
1.3345
f
,
0.
f
,
1.92318
f
,
3.96891
f
,
1.17999
f
,
4.7901
f
,
0.
f
,
7.72201
f
,
-
0.795236
f
,
7.74017
f
,
-
0.723963
f
,
11.209
f
,
-
0.651316
f
,
15.6972
f
,
0.764623
f
,
7.74869
f
,
0.70755
f
,
11.2307
f
,
0.612832
f
,
15.7281
f
,
-
0.123134
f
,
-
3.43515
f
,
0.111775
f
,
-
3.42761
f
,
-
0.387066
f
,
-
3.16603
f
,
0.384038
f
,
-
3.15951
f
,
0.344764
f
,
12.9666
f
,
0.624157
f
,
12.9057
f
,
0.195454
f
,
12.565
f
,
-
1.06074
f
,
12.9951
f
,
-
1.2427
f
,
12.9309
f
,
-
0.800837
f
,
12.5845
f
};
0
,
-
6.55251
,
0
,
-
4.15062
,
-
1.48818
,
-
4.15506
,
-
2.22408
,
-
0.312264
,
-
1.42204
,
0.588495
,
1.51044
,
-
4.14629
,
2.2113
,
-
0.312283
,
1.41081
,
0.612377
,
-
0
,
3.41112
,
-
0.932306
,
3.45504
,
-
0.899812
,
6.79837
,
-
0.794223
,
11.4972
,
0.919047
,
3.46442
,
0.902314
,
6.81245
,
0.79518
,
11.5132
,
-
0.243982
,
-
7.07925
,
0.28065
,
-
7.07398
,
-
0.792812
,
-
7.09374
,
0.810145
,
-
7.06958
,
0.582387
,
7.46846
,
0.889349
,
7.40577
,
0.465088
,
7.03969
,
-
0.96686
,
7.46148
,
-
1.20773
,
7.38834
,
-
0.762135
,
6.99575
};
const
std
::
vector
<
float
>
sigma
{
3.39629
f
,
3.15605
f
,
3.16913
f
,
1.8234
f
,
5.82252
f
,
5.05674
f
,
7.09876
f
,
6.64574
f
,
3.16913
f
,
1.8234
f
,
5.79415
f
,
5.01424
f
,
7.03866
f
,
6.62427
f
,
5.52593
f
,
6.75962
f
,
5.91224
f
,
6.87241
f
,
8.66473
f
,
10.1792
f
,
11.5871
f
,
13.6565
f
,
5.86653
f
,
6.89568
f
,
8.68067
f
,
10.2127
f
,
11.5954
f
,
13.6722
f
,
3.3335
f
,
3.49128
f
,
3.34476
f
,
3.50079
f
,
2.93982
f
,
3.11151
f
,
2.95006
f
,
3.11004
f
,
9.69408
f
,
7.58921
f
,
9.71193
f
,
7.44185
f
,
9.19343
f
,
7.11157
f
,
9.16848
f
,
7.86122
f
,
9.07613
f
,
7.83682
f
,
8.91951
f
,
7.33715
f
};
7.26789
,
9.70751
,
6.29588
,
8.93472
,
6.97401
,
9.13746
,
7.49632
,
9.44757
,
8.06695
,
9.97319
,
6.99726
,
9.14608
,
7.50529
,
9.43568
,
8.05888
,
9.98207
,
6.38929
,
9.29314
,
6.71801
,
9.39271
,
8.00608
,
10.6141
,
10.3416
,
12.7812
,
6.69875
,
9.41407
,
8.01876
,
10.637
,
10.3475
,
12.7849
,
7.30923
,
9.7324
,
7.27886
,
9.73406
,
7.35978
,
9.7289
,
7.28914
,
9.67711
,
7.93153
,
8.10845
,
7.95577
,
8.01729
,
7.56865
,
7.87314
,
7.4655
,
8.25336
,
7.43958
,
8.26333
,
7.33667
,
7.97446
};
// To get ideal distance
const
auto
numberBodyPartsAndBkgAndPAFChannels
=
numberBodyParts
+
1
+
bodyPartPairs
.
size
();
const
auto
heatMapOffset
=
heatMapSize
.
area
();
...
...
@@ -647,7 +669,10 @@ namespace op
{
if
(
bpOrig
!=
rootIndex
)
{
const
auto
bpChannel
=
(
bpOrig
<
rootIndex
?
bpOrig
:
bpOrig
-
1
);
// // 48 channels
// const auto bpChannel = (bpOrig < rootIndex ? bpOrig : bpOrig-1);
// 50 channels
const
auto
bpChannel
=
bpOrig
;
// Get ideal distance
const
auto
offsetIndex
=
numberBodyPartsAndBkgAndPAFChannels
+
2
*
bpChannel
;
const
auto
*
mapX
=
heatMapPtr
+
offsetIndex
*
heatMapOffset
;
...
...
src/openpose/tracking/personTracker.cpp
浏览文件 @
1a544a83
...
...
@@ -299,23 +299,23 @@ namespace op
{
if
(
personEntries
.
size
()
&&
!
poseIds
.
empty
())
{
int
dims
[]
=
{
(
int
)
personEntries
.
size
(),
(
int
)
personEntries
.
begin
()
->
second
.
keypoints
.
size
(),
3
};
cv
::
Mat
opArrayMat
(
3
,
dims
,
CV_32FC1
);
poseKeypoints
.
reset
(
{(
int
)
personEntries
.
size
(),
(
int
)
personEntries
.
begin
()
->
second
.
keypoints
.
size
(),
3
}
);
for
(
auto
i
=
0
;
i
<
poseIds
.
getSize
(
0
);
i
++
)
{
const
int
id
=
poseIds
[
i
];
const
PersonTrackerEntry
&
pe
=
personEntries
.
at
(
id
);
for
(
int
j
=
0
;
j
<
dims
[
1
];
j
++
)
const
int
baseIndexY
=
i
*
poseKeypoints
.
getSize
(
1
)
*
poseKeypoints
.
getSize
(
2
);
for
(
int
j
=
0
;
j
<
poseKeypoints
.
getSize
(
1
)
;
j
++
)
{
const
auto
baseIndex
=
i
*
dims
[
1
]
*
dims
[
2
]
+
j
*
dims
[
2
]
;
opArrayMat
.
at
<
float
>
(
baseIndex
+
0
)
=
pe
.
keypoints
[
j
].
x
;
opArrayMat
.
at
<
float
>
(
baseIndex
+
1
)
=
pe
.
keypoints
[
j
].
y
;
opArrayMat
.
at
<
float
>
(
baseIndex
+
2
)
=
(
int
)
pe
.
status
[
j
];
const
auto
baseIndex
=
baseIndexY
+
j
*
poseKeypoints
.
getSize
(
2
)
;
poseKeypoints
[
baseIndex
]
=
pe
.
keypoints
[
j
].
x
;
poseKeypoints
[
baseIndex
+
1
]
=
pe
.
keypoints
[
j
].
y
;
poseKeypoints
[
baseIndex
+
2
]
=
(
int
)
pe
.
status
[
j
];
if
(
pe
.
keypoints
[
j
].
x
==
0
&&
pe
.
keypoints
[
j
].
y
==
0
)
opArrayMat
.
at
<
float
>
(
baseIndex
+
2
)
=
0
;
poseKeypoints
[
baseIndex
+
2
]
=
0
;
}
}
poseKeypoints
.
setFrom
(
opArrayMat
);
}
}
catch
(
const
std
::
exception
&
e
)
...
...
@@ -359,8 +359,8 @@ namespace op
{
try
{
error
(
"PersonTracker (`tracking` flag) buggy and not working yet, but we are working on it!
"
" Coming soon!"
,
__LINE__
,
__FUNCTION__
,
__FILE__
);
log
(
"Person tracking (`tracking` flag) is in experimental phase. Please, let us know if you
"
" find any bug on this alpha version."
,
op
::
Priority
::
High
);
}
catch
(
const
std
::
exception
&
e
)
{
...
...
@@ -377,6 +377,14 @@ namespace op
{
try
{
// Sanity Checks
if
(
poseKeypoints
.
getSize
(
0
)
>
1
)
error
(
"Person tracking (`--tracking` flag) is in experimental phase and only allows tracking of up"
" to 1 person at the time. Please, also include the `--number_people_max 1` flag when using"
" the `--tracking` flag. Tracking more than one person at the time is not expected as"
" short- nor medium-term goal."
,
__LINE__
,
__FUNCTION__
,
__FILE__
);
/*
* 1. Get poseKeypoints for all people - Checks
* 2. If last image is empty or mPersonEntries is empty (& poseKeypoints and poseIds has data or crash it)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录