mirror of
https://github.com/gosticks/openpose.git
synced 2026-08-11 20:00:25 +00:00
Fixed 4k images with many people not rendering skeletons
This commit is contained in:
@@ -407,7 +407,10 @@ OpenPose Library - Release Notes
|
||||
4. Natural sort now works properly with filenames containining numbers longer than the limit of an int.
|
||||
5. Optionally auto-generated bin folder only contains the required DLLs (depending on the CMake configuration), instead of all of them.
|
||||
6. When WrapperStructFace and WrapperStructHand are not called and configured for Wrapper, setting body to CPU rendering was not working.
|
||||
7. Skelton rendering: All or some skeletons were not properly displayed or completely missing on images with many people.
|
||||
7. Skeleton rendering bugs:
|
||||
1. All or some skeletons were not properly displayed or completely missing on images with many people (e.g., videos with about 32 people).
|
||||
2. All or some skeletons were not properly displayed or completely missing on images where the multiplication of people and image resolution was too big (e.g., videos with about 32 people on 4k resolution).
|
||||
3. Flag `output_resolution` was not working with GPU resize, redirected to CPU in those cases.
|
||||
4. Changes/additions that affect the compatibility with the OpenPose Unity Plugin:
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace op
|
||||
Array<float>& frameArray, const Array<float>& faceKeypoints, const float renderThreshold);
|
||||
|
||||
void renderFaceKeypointsGpu(
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
|
||||
const float* const facePtr, const int numberPeople, const float renderThreshold,
|
||||
const float alphaColorToAdd = FACE_DEFAULT_ALPHA_KEYPOINT);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace op
|
||||
}
|
||||
|
||||
OP_API void getNumberCudaThreadsAndBlocks(
|
||||
dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<int>& frameSize);
|
||||
dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<unsigned int>& frameSize);
|
||||
|
||||
template <typename T>
|
||||
void reorderAndNormalize(
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace op
|
||||
Array<float>& frameArray, const std::array<Array<float>, 2>& handKeypoints, const float renderThreshold);
|
||||
|
||||
void renderHandKeypointsGpu(
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
|
||||
const float* const handsPtr, const int numberHands, const float renderThreshold,
|
||||
const float alphaColorToAdd = HAND_DEFAULT_ALPHA_KEYPOINT);
|
||||
}
|
||||
|
||||
@@ -13,32 +13,32 @@ namespace op
|
||||
|
||||
void renderPoseKeypointsGpu(
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const PoseModel poseModel,
|
||||
const int numberPeople, const Point<int>& frameSize, const float* const posePtr,
|
||||
const int numberPeople, const Point<unsigned int>& frameSize, const float* const posePtr,
|
||||
const float renderThreshold, const bool googlyEyes = false, const bool blendOriginalFrame = true,
|
||||
const float alphaBlending = POSE_DEFAULT_ALPHA_KEYPOINT);
|
||||
|
||||
void renderPoseHeatMapGpu(
|
||||
float* frame, const Point<int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
float* frame, const Point<unsigned int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
const float scaleToKeepRatio, const unsigned int part,
|
||||
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
|
||||
|
||||
void renderPoseHeatMapsGpu(
|
||||
float* frame, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
|
||||
float* frame, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
|
||||
const Point<int>& heatMapSize, const float scaleToKeepRatio,
|
||||
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
|
||||
|
||||
void renderPosePAFGpu(
|
||||
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
|
||||
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
|
||||
const Point<int>& heatMapSize, const float scaleToKeepRatio, const int part,
|
||||
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
|
||||
|
||||
void renderPosePAFsGpu(
|
||||
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
|
||||
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
|
||||
const Point<int>& heatMapSize, const float scaleToKeepRatio,
|
||||
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
|
||||
|
||||
void renderPoseDistanceGpu(
|
||||
float* framePtr, const Point<int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
float* framePtr, const Point<unsigned int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
const float scaleToKeepRatio, const unsigned int part, const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
namespace op
|
||||
{
|
||||
__inline__ __device__ void getBoundingBoxPerPerson(
|
||||
float* maxPtr, float* minPtr, float* scalePtr,const int targetWidth, const int targetHeight,
|
||||
float* maxPtr, float* minPtr, float* scalePtr,const unsigned int targetWidth, const unsigned int targetHeight,
|
||||
const float* const keypointsPtr, const int numberPeople, const int numberParts, const float threshold)
|
||||
{
|
||||
const auto globalIdx = threadIdx.x;
|
||||
const unsigned long globalIdx = threadIdx.x;
|
||||
|
||||
// Fill shared parameters
|
||||
if (globalIdx < numberPeople)
|
||||
@@ -18,10 +18,10 @@ namespace op
|
||||
float maxValueY = 0.f;
|
||||
for (auto part = 0 ; part < numberParts ; part++)
|
||||
{
|
||||
const auto index = 3 * (globalIdx*numberParts + part);
|
||||
const auto x = keypointsPtr[index];
|
||||
const auto y = keypointsPtr[index+1];
|
||||
const auto score = keypointsPtr[index+2];
|
||||
const unsigned long index = 3u * (globalIdx*numberParts + part);
|
||||
const float x = keypointsPtr[index];
|
||||
const float y = keypointsPtr[index+1];
|
||||
const float score = keypointsPtr[index+2];
|
||||
if (score > threshold)
|
||||
{
|
||||
if (x < minValueX)
|
||||
@@ -62,7 +62,7 @@ namespace op
|
||||
__inline__ __device__ void renderKeypoints(
|
||||
float* targetPtr, float* sharedMaxs, float* sharedMins, float* sharedScaleF, const float* const maxPtr,
|
||||
const float* const minPtr, const float* const scalePtr, const int globalIdx, const int x, const int y,
|
||||
const int targetWidth, const int targetHeight, const float* const keypointsPtr,
|
||||
const unsigned int targetWidth, const unsigned int targetHeight, const float* const keypointsPtr,
|
||||
const unsigned int* const partPairsPtr, const int numberPeople, const int numberParts,
|
||||
const int numberPartPairs, const float* const rgbColorsPtr, const int numberColors, const float radius,
|
||||
const float lineWidth, const float* const keypointScalePtr, const int numberScales, const float threshold,
|
||||
@@ -82,7 +82,7 @@ namespace op
|
||||
// Fill each (x,y) target pixel
|
||||
if (x < targetWidth && y < targetHeight)
|
||||
{
|
||||
const auto baseIndex = 3*(y * targetWidth + x);
|
||||
const unsigned long baseIndex = 3u*(y * (unsigned long)targetWidth + x);
|
||||
float b = targetPtr[baseIndex];
|
||||
float g = targetPtr[baseIndex+1];
|
||||
float r = targetPtr[baseIndex+2];
|
||||
@@ -208,7 +208,7 @@ namespace op
|
||||
|
||||
__inline__ __device__ void renderKeypointsOld(
|
||||
float* targetPtr, float2* sharedMaxs, float2* sharedMins, float* sharedScaleF, const int globalIdx,
|
||||
const int x, const int y, const int targetWidth, const int targetHeight, const float* const keypointsPtr,
|
||||
const int x, const int y, const unsigned int targetWidth, const unsigned int targetHeight, const float* const keypointsPtr,
|
||||
const unsigned int* const partPairsPtr, const int numberPeople, const int numberParts,
|
||||
const int numberPartPairs, const float* const rgbColorsPtr, const int numberColors, const float radius,
|
||||
const float lineWidth, const float* const keypointScalePtr, const int numberScales, const float threshold,
|
||||
@@ -224,10 +224,10 @@ namespace op
|
||||
float maxValueY = 0.f;
|
||||
for (auto part = 0 ; part < numberParts ; part++)
|
||||
{
|
||||
const auto index = 3 * (globalIdx*numberParts + part);
|
||||
const auto x = keypointsPtr[index];
|
||||
const auto y = keypointsPtr[index+1];
|
||||
const auto score = keypointsPtr[index+2];
|
||||
const unsigned long index = 3u * (((unsigned long)globalIdx)*numberParts + part);
|
||||
const float x = keypointsPtr[index];
|
||||
const float y = keypointsPtr[index+1];
|
||||
const float score = keypointsPtr[index+2];
|
||||
if (score > threshold)
|
||||
{
|
||||
if (x < minValueX)
|
||||
@@ -263,7 +263,7 @@ namespace op
|
||||
// Fill each (x,y) target pixel
|
||||
if (x < targetWidth && y < targetHeight)
|
||||
{
|
||||
const auto baseIndex = 3*(y * targetWidth + x);
|
||||
const unsigned long baseIndex = 3u*(y * (unsigned long)targetWidth + x);
|
||||
float b = targetPtr[baseIndex];
|
||||
float g = targetPtr[baseIndex+1];
|
||||
float r = targetPtr[baseIndex+2];
|
||||
|
||||
@@ -83,7 +83,7 @@ namespace op
|
||||
// I prefer std::round(T&) over positiveIntRound(T) for std::atomic
|
||||
const auto elementRendered = spElementToRender->load();
|
||||
const auto numberPeople = faceKeypoints.getSize(0);
|
||||
const Point<int> frameSize{outputData.getSize(1), outputData.getSize(0)};
|
||||
const Point<unsigned int> frameSize{(unsigned int)outputData.getSize(1), (unsigned int)outputData.getSize(0)};
|
||||
if (numberPeople > 0 && elementRendered == 0)
|
||||
{
|
||||
// Draw faceKeypoints
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace op
|
||||
}
|
||||
|
||||
void renderFaceKeypointsGpu(
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
|
||||
const float* const facePtr, const int numberPeople, const float renderThreshold, const float alphaColorToAdd)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -8,16 +8,11 @@
|
||||
namespace op
|
||||
{
|
||||
#ifdef USE_CUDA
|
||||
#ifdef DNDEBUG
|
||||
#define base 32
|
||||
#else
|
||||
#define base 64
|
||||
#endif
|
||||
const dim3 THREADS_PER_BLOCK_TINY{base, base, 1}; // 32 |64
|
||||
const dim3 THREADS_PER_BLOCK_SMALL{2*base, 2*base, 1}; // 64 |128
|
||||
const dim3 THREADS_PER_BLOCK_MEDIUM{4*base, 4*base, 1}; // 128|256
|
||||
const dim3 THREADS_PER_BLOCK_BIG{8*base, 8*base, 1}; // 256|512
|
||||
const dim3 THREADS_PER_BLOCK_HUGE{16*base, 16*base, 1}; // 512|1024
|
||||
const dim3 THREADS_PER_BLOCK_TINY {32, 32, 1};
|
||||
const dim3 THREADS_PER_BLOCK_SMALL {64, 64, 1};
|
||||
const dim3 THREADS_PER_BLOCK_MEDIUM{128, 128, 1};
|
||||
const dim3 THREADS_PER_BLOCK_BIG {256, 256, 1};
|
||||
const dim3 THREADS_PER_BLOCK_HUGE {256, 256, 1};
|
||||
#endif
|
||||
|
||||
void cudaCheck(const int line, const std::string& function, const std::string& file)
|
||||
@@ -65,7 +60,7 @@ namespace op
|
||||
}
|
||||
}
|
||||
|
||||
void getNumberCudaThreadsAndBlocks(dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<int>& frameSize)
|
||||
void getNumberCudaThreadsAndBlocks(dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<unsigned int>& frameSize)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -93,8 +88,8 @@ namespace op
|
||||
else
|
||||
numberCudaThreads = THREADS_PER_BLOCK_TINY;
|
||||
// numberCudaBlocks
|
||||
numberCudaBlocks = dim3{getNumberCudaBlocks((unsigned int)frameSize.x, numberCudaThreads.x),
|
||||
getNumberCudaBlocks((unsigned int)frameSize.y, numberCudaThreads.y),
|
||||
numberCudaBlocks = dim3{getNumberCudaBlocks(frameSize.x, numberCudaThreads.x),
|
||||
getNumberCudaBlocks(frameSize.y, numberCudaThreads.y),
|
||||
numberCudaThreads.z};
|
||||
#else
|
||||
UNUSED(numberCudaThreads);
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace op
|
||||
// I prefer std::round(T&) over positiveIntRound(T) for std::atomic
|
||||
const auto elementRendered = spElementToRender->load();
|
||||
const auto numberPeople = handKeypoints[0].getSize(0);
|
||||
const Point<int> frameSize{outputData.getSize(1), outputData.getSize(0)};
|
||||
const Point<unsigned int> frameSize{(unsigned int)outputData.getSize(1), (unsigned int)outputData.getSize(0)};
|
||||
// GPU rendering
|
||||
if (numberPeople > 0 && elementRendered == 0)
|
||||
{
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace op
|
||||
}
|
||||
|
||||
void renderHandKeypointsGpu(
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
|
||||
const float* const handsPtr, const int numberHands, const float renderThreshold, const float alphaColorToAdd)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace op
|
||||
const auto hasBkg = addBkgChannel(mPoseModel);
|
||||
const auto numberBodyPartsPlusBkg = numberBodyParts + (hasBkg ? 1 : 0);
|
||||
const auto numberBodyPAFChannels = getPosePartPairs(mPoseModel).size();
|
||||
const Point<int> frameSize{outputData.getSize(1), outputData.getSize(0)};
|
||||
const Point<unsigned int> frameSize{(unsigned int)outputData.getSize(1), (unsigned int)outputData.getSize(0)};
|
||||
// Draw poseKeypoints
|
||||
if (elementRendered == 0)
|
||||
{
|
||||
|
||||
@@ -119,7 +119,7 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void getBoundingBoxPerPersonPose(
|
||||
float* maxPtr, float* minPtr, float* scalePtr,const int targetWidth, const int targetHeight,
|
||||
float* maxPtr, float* minPtr, float* scalePtr,const unsigned int targetWidth, const unsigned int targetHeight,
|
||||
const float* const keypointsPtr, const int numberPeople, const int numberParts, const float threshold)
|
||||
{
|
||||
getBoundingBoxPerPerson(
|
||||
@@ -127,9 +127,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseCoco(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, 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)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned 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;
|
||||
@@ -159,9 +159,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseBody19(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, 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)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned 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;
|
||||
@@ -192,9 +192,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseBody23(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, 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)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned 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;
|
||||
@@ -257,9 +257,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseBody25b(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, 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)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned 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;
|
||||
@@ -289,9 +289,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseBody135(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, 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)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned 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;
|
||||
@@ -321,9 +321,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseMpi29Parts(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
|
||||
const float* const posePtr, const int numberPeople, const float threshold, const bool blendOriginalFrame,
|
||||
const float alphaColorToAdd)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
|
||||
const bool blendOriginalFrame, const float alphaColorToAdd)
|
||||
{
|
||||
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
|
||||
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
|
||||
@@ -353,9 +353,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseCar12(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, 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)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned 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;
|
||||
@@ -385,9 +385,9 @@ namespace op
|
||||
}
|
||||
|
||||
__global__ void renderPoseCar22(
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, 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)
|
||||
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
|
||||
const unsigned 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;
|
||||
@@ -416,10 +416,10 @@ namespace op
|
||||
blendOriginalFrame, (googlyEyes ? 6 : -1), (googlyEyes ? 7 : -1));
|
||||
}
|
||||
|
||||
__global__ void renderBodyPartHeatMaps(float* targetPtr, const int targetWidth, const int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap,
|
||||
const int heightHeatMap, const float scaleToKeepRatio,
|
||||
const int numberBodyParts, const float alphaColorToAdd)
|
||||
__global__ void renderBodyPartHeatMaps(
|
||||
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap, const float scaleToKeepRatio,
|
||||
const int numberBodyParts, const float alphaColorToAdd)
|
||||
{
|
||||
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
|
||||
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
|
||||
@@ -451,10 +451,10 @@ namespace op
|
||||
}
|
||||
}
|
||||
|
||||
__global__ void renderBodyPartHeatMap(float* targetPtr, const int targetWidth, const int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap,
|
||||
const int heightHeatMap, const float scaleToKeepRatio, const unsigned int part,
|
||||
const float alphaColorToAdd, const bool absValue = false)
|
||||
__global__ void renderBodyPartHeatMap(
|
||||
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap, const float scaleToKeepRatio,
|
||||
const unsigned int part, const float alphaColorToAdd, const bool absValue = false)
|
||||
{
|
||||
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
|
||||
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
|
||||
@@ -479,10 +479,10 @@ namespace op
|
||||
}
|
||||
}
|
||||
|
||||
__global__ void renderPartAffinities(float* targetPtr, const int targetWidth, const int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap,
|
||||
const int heightHeatMap, const float scaleToKeepRatio,
|
||||
const int partsToRender, const int initPart, const float alphaColorToAdd)
|
||||
__global__ void renderPartAffinities(
|
||||
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap,
|
||||
const float scaleToKeepRatio, const int partsToRender, const int initPart, const float alphaColorToAdd)
|
||||
{
|
||||
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
|
||||
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
|
||||
@@ -546,10 +546,11 @@ namespace op
|
||||
}
|
||||
}
|
||||
|
||||
__global__ void renderDistance(float* targetPtr, const int targetWidth, const int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap,
|
||||
const float scaleToKeepRatio, const int part, const int numberBodyParts,
|
||||
const int numberBodyPAFChannels, const float alphaColorToAdd)
|
||||
__global__ void renderDistance(
|
||||
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
|
||||
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap,
|
||||
const float scaleToKeepRatio, const int part, const int numberBodyParts, const int numberBodyPAFChannels,
|
||||
const float alphaColorToAdd)
|
||||
{
|
||||
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
|
||||
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
|
||||
@@ -580,7 +581,7 @@ namespace op
|
||||
error("Alpha must be in the range [0, 1].", __LINE__, __FUNCTION__, __FILE__);
|
||||
}
|
||||
|
||||
inline void renderPosePAFGpuAux(float* framePtr, const PoseModel poseModel, const Point<int>& frameSize,
|
||||
inline void renderPosePAFGpuAux(float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize,
|
||||
const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
const float scaleToKeepRatio, const int part, const int partsToRender,
|
||||
const float alphaBlending)
|
||||
@@ -607,7 +608,7 @@ namespace op
|
||||
|
||||
void renderPoseKeypointsGpu(
|
||||
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const PoseModel poseModel,
|
||||
const int numberPeople, const Point<int>& frameSize, const float* const posePtr,
|
||||
const int numberPeople, const Point<unsigned int>& frameSize, const float* const posePtr,
|
||||
const float renderThreshold, const bool googlyEyes, const bool blendOriginalFrame, const float alphaBlending)
|
||||
{
|
||||
try
|
||||
@@ -747,9 +748,9 @@ namespace op
|
||||
}
|
||||
}
|
||||
|
||||
void renderPoseHeatMapGpu(float* framePtr, const Point<int>& frameSize, const float* const heatMapPtr,
|
||||
const Point<int>& heatMapSize, const float scaleToKeepRatio, const unsigned int part,
|
||||
const float alphaBlending)
|
||||
void renderPoseHeatMapGpu(
|
||||
float* framePtr, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
|
||||
const Point<int>& heatMapSize, const float scaleToKeepRatio, const unsigned int part, const float alphaBlending)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -772,7 +773,7 @@ namespace op
|
||||
}
|
||||
}
|
||||
|
||||
void renderPoseHeatMapsGpu(float* framePtr, const PoseModel poseModel, const Point<int>& frameSize,
|
||||
void renderPoseHeatMapsGpu(float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize,
|
||||
const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
const float scaleToKeepRatio, const float alphaBlending)
|
||||
{
|
||||
@@ -800,7 +801,7 @@ namespace op
|
||||
}
|
||||
|
||||
void renderPosePAFGpu(
|
||||
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
|
||||
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
|
||||
const Point<int>& heatMapSize, const float scaleToKeepRatio, const int part, const float alphaBlending)
|
||||
{
|
||||
try
|
||||
@@ -815,7 +816,7 @@ namespace op
|
||||
}
|
||||
|
||||
void renderPosePAFsGpu(
|
||||
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
|
||||
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
|
||||
const Point<int>& heatMapSize, const float scaleToKeepRatio, const float alphaBlending)
|
||||
{
|
||||
try
|
||||
@@ -833,7 +834,7 @@ namespace op
|
||||
}
|
||||
|
||||
void renderPoseDistanceGpu(
|
||||
float* framePtr, const Point<int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
float* framePtr, const Point<unsigned int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
|
||||
const float scaleToKeepRatio, const unsigned int part, const float alphaBlending)
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user