| | #ifndef OPENPOSE_POSE_POSE_EXTRACTOR_NET_HPP |
| | #define OPENPOSE_POSE_POSE_EXTRACTOR_NET_HPP |
| |
|
| | #include <atomic> |
| | #include <openpose/core/common.hpp> |
| | #include <openpose/core/enumClasses.hpp> |
| | #include <openpose/pose/poseParameters.hpp> |
| |
|
| | namespace op |
| | { |
| | class OP_API PoseExtractorNet |
| | { |
| | public: |
| | PoseExtractorNet(const PoseModel poseModel, |
| | const std::vector<HeatMapType>& heatMapTypes = {}, |
| | const ScaleMode heatMapScaleMode = ScaleMode::ZeroToOneFixedAspect, |
| | const bool addPartCandidates = false, |
| | const bool maximizePositives = false); |
| |
|
| | virtual ~PoseExtractorNet(); |
| |
|
| | void initializationOnThread(); |
| |
|
| | virtual void forwardPass( |
| | const std::vector<Array<float>>& inputNetData, const Point<int>& inputDataSize, |
| | const std::vector<double>& scaleRatios = {1.f}, const Array<float>& poseNetOutput = Array<float>{}) = 0; |
| |
|
| | virtual const float* getCandidatesCpuConstPtr() const = 0; |
| |
|
| | virtual const float* getCandidatesGpuConstPtr() const = 0; |
| |
|
| | virtual const float* getHeatMapCpuConstPtr() const = 0; |
| |
|
| | virtual const float* getHeatMapGpuConstPtr() const = 0; |
| |
|
| | virtual std::vector<int> getHeatMapSize() const = 0; |
| |
|
| | Array<float> getHeatMapsCopy() const; |
| |
|
| | std::vector<std::vector<std::array<float,3>>> getCandidatesCopy() const; |
| |
|
| | virtual const float* getPoseGpuConstPtr() const = 0; |
| |
|
| | Array<float> getPoseKeypoints() const; |
| |
|
| | Array<float> getPoseScores() const; |
| |
|
| | float getScaleNetToOutput() const; |
| |
|
| | double get(const PoseProperty property) const; |
| |
|
| | void set(const PoseProperty property, const double value); |
| |
|
| | void increase(const PoseProperty property, const double value); |
| |
|
| | void clear(); |
| |
|
| | protected: |
| | const PoseModel mPoseModel; |
| | Point<int> mNetOutputSize; |
| | Array<float> mPoseKeypoints; |
| | Array<float> mPoseScores; |
| | float mScaleNetToOutput; |
| |
|
| | void checkThread() const; |
| |
|
| | virtual void netInitializationOnThread() = 0; |
| |
|
| | private: |
| | const std::vector<HeatMapType> mHeatMapTypes; |
| | const ScaleMode mHeatMapScaleMode; |
| | const bool mAddPartCandidates; |
| | std::array<std::atomic<double>, (int)PoseProperty::Size> mProperties; |
| | std::thread::id mThreadId; |
| |
|
| | DELETE_COPY(PoseExtractorNet); |
| | }; |
| | } |
| |
|
| | #endif |
| |
|