forked from floratest1/SpireCV
fix formatting issues
This commit is contained in:
parent
8e1a62651d
commit
5867b339f4
|
@ -195,7 +195,7 @@ void SORT::update(TargetsInFrame& tgts)
|
|||
tracklet.age = 0;
|
||||
tracklet.hits = 1;
|
||||
tracklet.misses = 0;
|
||||
tracklet.frame_id=tgts.frame_id;
|
||||
tracklet.frame_id = tgts.frame_id;
|
||||
tracklet.tentative = true;
|
||||
// initate the motion
|
||||
pair<Matrix<double, 8, 1>, Matrix<double, 8, 8> > motion = kf.initiate(tracklet.bbox);
|
||||
|
@ -245,13 +245,13 @@ void SORT::update(TargetsInFrame& tgts)
|
|||
int detectionIndex = match.second;
|
||||
if (trackletIndex >= 0 && detectionIndex >= 0)
|
||||
{
|
||||
if (iouMatrix[match.first][match.second] >= _iou_threshold)//iou_thrshold
|
||||
if (iouMatrix[match.first][match.second] >= _iou_threshold) // iou_thrshold
|
||||
{
|
||||
sv::Box box;
|
||||
tgts.targets[detectionIndex].getBox(box);
|
||||
this->_tracklets[trackletIndex].age = 0;
|
||||
this->_tracklets[trackletIndex].hits++;
|
||||
this->_tracklets[trackletIndex].frame_id=tgts.frame_id;
|
||||
this->_tracklets[trackletIndex].frame_id = tgts.frame_id;
|
||||
this->_tracklets[trackletIndex].bbox << box.x1, box.y1, box.x2-box.x1, box.y2-box.y1;
|
||||
|
||||
auto[mean, covariance] = kf.update(this->_tracklets[trackletIndex].mean, this->_tracklets[trackletIndex].covariance, box);
|
||||
|
@ -264,7 +264,7 @@ void SORT::update(TargetsInFrame& tgts)
|
|||
}
|
||||
}
|
||||
// create new tracklets for unmatched detections
|
||||
for (int i = 0; i < tgts.targets.size(); i++)
|
||||
for (int i=0; i<tgts.targets.size(); i++)
|
||||
{
|
||||
if (match_det[i] == -1)
|
||||
{
|
||||
|
@ -277,7 +277,7 @@ void SORT::update(TargetsInFrame& tgts)
|
|||
tracklet.age = 0;
|
||||
tracklet.hits = 1;
|
||||
tracklet.misses = 0;
|
||||
tracklet.frame_id=tgts.frame_id;
|
||||
tracklet.frame_id = tgts.frame_id;
|
||||
tracklet.tentative = true;
|
||||
|
||||
auto[new_mean, new_covariance] = kf.initiate(tracklet.bbox);
|
||||
|
@ -295,7 +295,7 @@ void SORT::update(TargetsInFrame& tgts)
|
|||
{
|
||||
tracklet.tentative = false;
|
||||
}
|
||||
if ((tgts.frame_id-tracklet.frame_id <= _max_age) || (!tracklet.tentative && tracklet.frame_id==tgts.frame_id))
|
||||
if ((tgts.frame_id-tracklet.frame_id <= _max_age) || (!tracklet.tentative && tracklet.frame_id == tgts.frame_id))
|
||||
{
|
||||
_new_tracklets.push_back(tracklet);
|
||||
}
|
||||
|
|
|
@ -51,11 +51,11 @@ struct Tracklet
|
|||
/* data */
|
||||
public:
|
||||
Eigen::Vector4d bbox; // double x, y, w, h;
|
||||
int id=0;
|
||||
int id = 0;
|
||||
int age;
|
||||
int hits;
|
||||
int misses;
|
||||
int frame_id=0;
|
||||
int frame_id = 0;
|
||||
bool tentative;
|
||||
std::vector<double> features;
|
||||
Eigen::Matrix<double, 8, 1> mean;
|
||||
|
|
|
@ -11,19 +11,19 @@ if __name__ == '__main__':
|
|||
# use COCO API to load forecast results and annotations
|
||||
cocoGt = COCO(anno_json)
|
||||
with open(pred_json,'r') as file:
|
||||
data = json.load(file)
|
||||
data = json.load(file)
|
||||
|
||||
# align anno_json with pred_json category_id
|
||||
gtCatDicts = {}
|
||||
for anns in range(len(cocoGt.getCatIds())):
|
||||
gtCatDicts[anns] = cocoGt.getCatIds()[anns]
|
||||
gtCatDicts[anns] = cocoGt.getCatIds()[anns]
|
||||
|
||||
pdCatIds=list(set([d['category_id'] for d in data]))
|
||||
|
||||
if not set(pdCatIds).issubset(set(cocoGt.getCatIds())):
|
||||
for ins in data:
|
||||
temp = int(gtCatDicts[ins['category_id']])
|
||||
ins['category_id'] = temp
|
||||
temp = int(gtCatDicts[ins['category_id']])
|
||||
ins['category_id'] = temp
|
||||
|
||||
# load prediction results
|
||||
cocoDt = cocoGt.loadRes(data)
|
||||
|
|
|
@ -8,17 +8,21 @@ using namespace cv;
|
|||
|
||||
//extract name
|
||||
std::string GetImageFileName(const std::string& imagePath) {
|
||||
size_t lastSlash = imagePath.find_last_of("/\\");
|
||||
if (lastSlash == std::string::npos) {
|
||||
return imagePath;
|
||||
} else {
|
||||
std::string fileName = imagePath.substr(lastSlash + 1);
|
||||
size_t lastDot = fileName.find_last_of(".");
|
||||
if (lastDot != std::string::npos) {
|
||||
return fileName.substr(0, lastDot);
|
||||
}
|
||||
return fileName;
|
||||
size_t lastSlash = imagePath.find_last_of("/\\");
|
||||
if (lastSlash == std::string::npos)
|
||||
{
|
||||
return imagePath;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string fileName = imagePath.substr(lastSlash + 1);
|
||||
size_t lastDot = fileName.find_last_of(".");
|
||||
if (lastDot != std::string::npos)
|
||||
{
|
||||
return fileName.substr(0, lastDot);
|
||||
}
|
||||
return fileName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -60,8 +64,8 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
|
||||
for (int i = 0; i < val_image.size(); i++) {
|
||||
|
||||
for (int i = 0; i < val_image.size(); i++)
|
||||
{
|
||||
//create pred file
|
||||
std::string val_image_name = GetImageFileName(val_image[i]);
|
||||
std::string filename = folder+"/"+ val_image_name + ".txt";
|
||||
|
@ -84,11 +88,12 @@ int main(int argc, char *argv[])
|
|||
// reslusts
|
||||
for (int j = 0; j < tgts.targets.size(); j++)
|
||||
{
|
||||
sv::Box b;
|
||||
tgts.targets[j].getBox(b);
|
||||
file<<tgts.targets[j].category_id<<" "<<(float)(b.x1+b.x2)/(2*cols)<<" "<<(float)(b.y1+b.y2)/(2*rows)<<" "<<(float)(b.x2-b.x1)/cols<<" "<<(float)(b.y2-b.y1)/rows<<" "<<(float)tgts.targets[j].score<<"\n";
|
||||
}
|
||||
file.close();
|
||||
sv::Box b;
|
||||
tgts.targets[j].getBox(b);
|
||||
file << tgts.targets[j].category_id << " " << (float)(b.x1+b.x2) / (2*cols) << " " << (float)(b.y1+b.y2) / (2*rows) << \
|
||||
" " << (float)(b.x2-b.x1) / cols << " " << (float)(b.y2-b.y1) / rows << " " << (float)tgts.targets[j].score << "\n";
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -4,11 +4,11 @@ import os
|
|||
import cv2
|
||||
|
||||
# revert prediction results to coco_json
|
||||
path = os.path.abspath(os.path.join(os.getcwd(),"../../.."))
|
||||
path = os.path.abspath(os.path.join(os.getcwd(), "../../.."))
|
||||
|
||||
# all files dir
|
||||
images_path = path+'/val2017/val2017'
|
||||
preds_path = path+'/val2017/preds'
|
||||
images_path = path + '/val2017/val2017'
|
||||
preds_path = path + '/val2017/preds'
|
||||
coco_json_save ='pd_coco.json'
|
||||
|
||||
# config coco_json
|
||||
|
@ -27,25 +27,26 @@ for image in images:
|
|||
# read pred's txt
|
||||
pred_path = preds_path + '/' + image_name + '.txt'
|
||||
if not os.path.exists(pred_path):
|
||||
continue
|
||||
continue
|
||||
with open(pred_path, 'r') as f:
|
||||
preds = f.readlines()
|
||||
preds = [l.strip() for l in preds]
|
||||
for j,pred in enumerate(preds):
|
||||
pred = pred.split(' ')
|
||||
category_id = int(pred[0])
|
||||
x = float(pred[1]) * width
|
||||
y = float(pred[2]) * height
|
||||
w = float(pred[3]) * width
|
||||
h = float(pred[4]) * height
|
||||
xmin = x - w / 2
|
||||
ymin = y - h / 2
|
||||
|
||||
coco_json.append({
|
||||
'image_id': int(image_name),
|
||||
'category_id': int(category_id),
|
||||
'bbox': [xmin, ymin, w, h],
|
||||
'score': float(pred[5])})
|
||||
preds = f.readlines()
|
||||
preds = [l.strip() for l in preds]
|
||||
for j,pred in enumerate(preds):
|
||||
pred = pred.split(' ')
|
||||
category_id = int(pred[0])
|
||||
x = float(pred[1]) * width
|
||||
y = float(pred[2]) * height
|
||||
w = float(pred[3]) * width
|
||||
h = float(pred[4]) * height
|
||||
xmin = x - w / 2
|
||||
ymin = y - h / 2
|
||||
|
||||
coco_json.append({
|
||||
'image_id': int(image_name),
|
||||
'category_id': int(category_id),
|
||||
'bbox': [xmin, ymin, w, h],
|
||||
'score': float(pred[5])
|
||||
})
|
||||
|
||||
# save json
|
||||
with open(os.path.join(coco_json_save), 'w') as f:
|
||||
|
|
Loading…
Reference in New Issue