5 #include <fsdk/Optional.h>
12 #ifndef DOXYGEN_SHOULD_SKIP_THIS
19 struct EthnicityEstimation {
20 float africanAmerican;
36 inline Ethnicities getPredominantEthnicity()
const;
42 inline float getEthnicityScore(Ethnicities ethnicity)
const;
55 struct IAttributeEstimator : IRefCounted {
61 enum EstimationRequest {
63 estimateGender = 1 << 1,
64 estimateEthnicity = 1 << 2,
71 struct EstimationResult {
75 Optional<float> gender;
77 Optional<float> genderScore;
79 Optional<EthnicityEstimation> ethnicity;
89 virtual Result<FSDKError> estimate(
91 const IAttributeEstimator::EstimationRequest request,
92 IAttributeEstimator::EstimationResult& out)
const noexcept = 0;
104 virtual ResultValue<FSDKError, IAttributeEstimator::EstimationResult> estimate(
105 const Span<const Image> warps,
106 const IAttributeEstimator::EstimationRequest request,
107 Span<IAttributeEstimator::EstimationResult> results)
const noexcept = 0;
113 using EstimationRequest = IAttributeEstimator::EstimationRequest;
114 using AttributeEstimationResult = IAttributeEstimator::EstimationResult;
119 EthnicityEstimation::Ethnicities
120 EthnicityEstimation::getPredominantEthnicity()
const {
121 const float* arr = &this->africanAmerican;
122 return static_cast<EthnicityEstimation::Ethnicities
>(
123 std::distance(arr, std::max_element(arr, arr+EthnicityEstimation::Count))
131 EthnicityEstimation::getEthnicityScore(
132 EthnicityEstimation::Ethnicities ethnicity
134 return *(&this->africanAmerican +
static_cast<uint32_t
>(ethnicity));
140 inline IAttributeEstimator::EstimationRequest
142 IAttributeEstimator::EstimationRequest first,
143 IAttributeEstimator::EstimationRequest second
145 return static_cast<IAttributeEstimator::EstimationRequest
>(
146 static_cast<int>(first) | static_cast<int>(second)
#define DECLARE_SMARTPTR(X)
Smart ptr declaration helper macro.
Definition: Def.h:59
Common data types and structures.
Object system types and interfaces.