RetinaFace.h 2.21 KB
Newer Older
Your Name's avatar
Your Name committed
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef __DETECTOR_RETINAFACE_H__
#define __DETECTOR_RETINAFACE_H__

#include <migraphx/program.hpp>
#include <CommonDefinition.h>
#include <SSDDefinition.h>

namespace migraphxSamples
{

class DetectorRetinaFace
{
liucong's avatar
liucong committed
13
    public:
Your Name's avatar
Your Name committed
14
    DetectorRetinaFace();
liucong's avatar
liucong committed
15

Your Name's avatar
Your Name committed
16
17
18
19
    ~DetectorRetinaFace();

    ErrorCode Initialize(InitializationParameterOfDetector initializationParameterOfDetector);

liucong's avatar
liucong committed
20
    ErrorCode Detect(const cv::Mat& srcImage, std::vector<ResultOfDetection>& resultsOfDetection);
Your Name's avatar
Your Name committed
21

liucong's avatar
liucong committed
22
    private:
Your Name's avatar
Your Name committed
23
    void GetSSDParameter();
liucong's avatar
liucong committed
24
25
26
    void GetResult(const std::vector<std::vector<float>>& classification,
                   const std::vector<std::vector<float>>& regression,
                   std::vector<ResultOfDetection>& resultsOfDetection);
Your Name's avatar
Your Name committed
27

liucong's avatar
liucong committed
28
29
30
31
32
33
34
35
    std::vector<float>
    PermuteLayer(const std::vector<float>& data, int width, int height, int channels);
    void PriorBoxLayer(int indexOfLayer, int* priorboxOutputData);
    void SoftmaxLayer(int softMaxWidth[], int* softMaxInputData[], int* softMaxOutputData);
    void DetectionOutputLayer(int* allLocPreds[],
                              int* allPriorBoxes[],
                              int* confScores,
                              int* assistMemPool);
Your Name's avatar
Your Name committed
36
37

    void ComputeSoftMax(int* src, int size, int* dst);
liucong's avatar
liucong committed
38
39
    void QuickSort(int* src, int low, int high, QuickSortStack* stack, int maxNum);
    void NonMaxSuppression(int* proposals, int anchorsNum, int NMSThresh, int maxRoiNum);
Your Name's avatar
Your Name committed
40
    void Swap(int* src1, int* src2);
liucong's avatar
liucong committed
41
42
43
44
45
46
47
48
49
50
51
    void ComputeOverlap(int xMin1,
                        int yMin1,
                        int xMax1,
                        int yMax1,
                        int xMin2,
                        int yMin2,
                        int xMax2,
                        int yMax2,
                        int* areaSum,
                        int* areaInter);
    void CreateDetectionResults(std::vector<ResultOfDetection>& resultsOfDetection);
Your Name's avatar
Your Name committed
52

liucong's avatar
liucong committed
53
    private:
Your Name's avatar
Your Name committed
54
    cv::FileStorage configurationFile;
liucong's avatar
liucong committed
55

Your Name's avatar
Your Name committed
56
57
    migraphx::program net;
    cv::Size inputSize;
liucong's avatar
liucong committed
58
    std::string inputName;
Your Name's avatar
Your Name committed
59
60
61
62
63
64
65
66
67
68
69
70
    migraphx::shape inputShape;

    float scale;
    cv::Scalar meanValue;
    bool swapRB;
    bool crop;
    bool useInt8;
    bool useFP16;

    SSDParameter ssdParameter;
};

liucong's avatar
liucong committed
71
} // namespace migraphxSamples
Your Name's avatar
Your Name committed
72
73

#endif