basic版本的yolo,在yolov3版本上增加人体跟踪
xuepengqiang
2020-05-26 5966f2b095841627d62daac0159e81f83544b85c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef TRACKER_H
#define TRACKER_H
#include <vector>
 
#include "kalmfilter.h"
#include "track.h"
#include "../encoder_tools/model.h"
 
class NearNeighborDisMetric;
 
class tracker
{
public:
    NearNeighborDisMetric* metric;
    float max_iou_distance;
    int max_age;
    int n_init;
 
    KalmFilter* kf;
 
    int _next_idx;
public:
    std::vector<std::shared_ptr<Track>> tracks;
    tracker(  /*NearNeighborDisMetric* metric,*/
            float max_cosine_distance, int nn_budget,
            float max_iou_distance = MAX_IOU_DISTANCE,
            int max_age = MAX_AGE, int n_init = N_INIT);
 
    ~tracker();
    void predict();
    void update(const DETECTIONS& detections);
    typedef DYNAMICM (tracker::* GATED_METRIC_FUNC)(
            std::vector<std::shared_ptr<Track>>& tracks,
            const DETECTIONS& dets,
            const std::vector<int>& track_indices,
            const std::vector<int>& detection_indices);
private:
    void _match(const DETECTIONS& detections, TRACHER_MATCHD& res);
    void _initiate_track(const DETECTION_ROW& detection);
public:
    DYNAMICM gated_matric(
            std::vector<std::shared_ptr<Track>>& tracks,
            const DETECTIONS& dets,
            const std::vector<int>& track_indices,
            const std::vector<int>& detection_indices);
    DYNAMICM iou_cost(
            std::vector<std::shared_ptr<Track>>& tracks,
            const DETECTIONS& dets,
            const std::vector<int>& track_indices,
            const std::vector<int>& detection_indices);
    Eigen::VectorXf iou(DETECTBOX& bbox,
                        DETECTBOXSS &candidates);
};
 
#endif // TRACKER_H