From 65e430588d76adbcf435db6b2e3aec791de651d0 Mon Sep 17 00:00:00 2001
From: Alexey <AlexeyAB@users.noreply.github.com>
Date: Sat, 26 May 2018 13:36:30 +0000
Subject: [PATCH] Merge pull request #909 from jing-vision/master
---
src/classifier.c | 88 ++++++++++++++++++++++++++------------------
1 files changed, 52 insertions(+), 36 deletions(-)
diff --git a/src/classifier.c b/src/classifier.c
index 5e718c5..98dd4c6 100644
--- a/src/classifier.c
+++ b/src/classifier.c
@@ -21,6 +21,8 @@
#include "opencv2/videoio/videoio_c.h"
#endif
image get_image_from_stream(CvCapture *cap);
+image get_image_from_stream_cpp(CvCapture *cap);
+#include "http_stream.h"
#endif
float *get_regression_values(char **labels, int n)
@@ -87,6 +89,7 @@
args.min = net.min_crop;
args.max = net.max_crop;
+ args.flip = net.flip;
args.angle = net.angle;
args.aspect = net.aspect;
args.exposure = net.exposure;
@@ -193,6 +196,7 @@
args.min = net.min_crop;
args.max = net.max_crop;
+ args.flip = net.flip;
args.angle = net.angle;
args.aspect = net.aspect;
args.exposure = net.exposure;
@@ -362,11 +366,11 @@
int *indexes = calloc(topk, sizeof(int));
for(i = 0; i < m; ++i){
- int class = -1;
+ int class_id = -1;
char *path = paths[i];
for(j = 0; j < classes; ++j){
if(strstr(path, labels[j])){
- class = j;
+ class_id = j;
break;
}
}
@@ -396,9 +400,9 @@
free_image(im);
top_k(pred, classes, topk, indexes);
free(pred);
- if(indexes[0] == class) avg_acc += 1;
+ if(indexes[0] == class_id) avg_acc += 1;
for(j = 0; j < topk; ++j){
- if(indexes[j] == class) avg_topk += 1;
+ if(indexes[j] == class_id) avg_topk += 1;
}
printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1));
@@ -435,11 +439,11 @@
int size = net.w;
for(i = 0; i < m; ++i){
- int class = -1;
+ int class_id = -1;
char *path = paths[i];
for(j = 0; j < classes; ++j){
if(strstr(path, labels[j])){
- class = j;
+ class_id = j;
break;
}
}
@@ -456,9 +460,9 @@
free_image(resized);
top_k(pred, classes, topk, indexes);
- if(indexes[0] == class) avg_acc += 1;
+ if(indexes[0] == class_id) avg_acc += 1;
for(j = 0; j < topk; ++j){
- if(indexes[j] == class) avg_topk += 1;
+ if(indexes[j] == class_id) avg_topk += 1;
}
printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1));
@@ -497,11 +501,11 @@
int *indexes = calloc(topk, sizeof(int));
for(i = 0; i < m; ++i){
- int class = -1;
+ int class_id = -1;
char *path = paths[i];
for(j = 0; j < classes; ++j){
if(strstr(path, labels[j])){
- class = j;
+ class_id = j;
break;
}
}
@@ -519,9 +523,9 @@
free_image(crop);
top_k(pred, classes, topk, indexes);
- if(indexes[0] == class) avg_acc += 1;
+ if(indexes[0] == class_id) avg_acc += 1;
for(j = 0; j < topk; ++j){
- if(indexes[j] == class) avg_topk += 1;
+ if(indexes[j] == class_id) avg_topk += 1;
}
printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1));
@@ -559,11 +563,11 @@
int *indexes = calloc(topk, sizeof(int));
for(i = 0; i < m; ++i){
- int class = -1;
+ int class_id = -1;
char *path = paths[i];
for(j = 0; j < classes; ++j){
if(strstr(path, labels[j])){
- class = j;
+ class_id = j;
break;
}
}
@@ -583,9 +587,9 @@
free_image(im);
top_k(pred, classes, topk, indexes);
free(pred);
- if(indexes[0] == class) avg_acc += 1;
+ if(indexes[0] == class_id) avg_acc += 1;
for(j = 0; j < topk; ++j){
- if(indexes[j] == class) avg_topk += 1;
+ if(indexes[j] == class_id) avg_topk += 1;
}
printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1));
@@ -594,7 +598,7 @@
void try_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int layer_num)
{
- network net = parse_network_cfg(cfgfile);
+ network net = parse_network_cfg_custom(cfgfile, 1);
if(weightfile){
load_weights(&net, weightfile);
}
@@ -675,7 +679,7 @@
void predict_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int top)
{
- network net = parse_network_cfg(cfgfile);
+ network net = parse_network_cfg_custom(cfgfile, 1);
if(weightfile){
load_weights(&net, weightfile);
}
@@ -706,8 +710,9 @@
strtok(input, "\n");
}
image im = load_image_color(input, 0, 0);
- image r = resize_min(im, size);
- resize_network(&net, r.w, r.h);
+ image r = letterbox_image(im, net.w, net.h);
+ //image r = resize_min(im, size);
+ //resize_network(&net, r.w, r.h);
printf("%d %d\n", r.w, r.h);
float *X = r.data;
@@ -857,11 +862,14 @@
srand(2222222);
CvCapture * cap;
- if(filename){
- cap = cvCaptureFromFile(filename);
- }else{
- cap = cvCaptureFromCAM(cam_index);
- }
+ if (filename) {
+ //cap = cvCaptureFromFile(filename);
+ cap = get_capture_video_stream(filename);
+ }
+ else {
+ //cap = cvCaptureFromCAM(cam_index);
+ cap = get_capture_webcam(cam_index);
+ }
int top = option_find_int(options, "top", 1);
@@ -883,7 +891,8 @@
struct timeval tval_before, tval_after, tval_result;
gettimeofday(&tval_before, NULL);
- image in = get_image_from_stream(cap);
+ //image in = get_image_from_stream(cap);
+ image in = get_image_from_stream_cpp(cap);
if(!in.data) break;
image in_s = resize_image(in, net.w, net.h);
@@ -989,11 +998,14 @@
srand(2222222);
CvCapture * cap;
- if(filename){
- cap = cvCaptureFromFile(filename);
- }else{
- cap = cvCaptureFromCAM(cam_index);
- }
+ if (filename) {
+ //cap = cvCaptureFromFile(filename);
+ cap = get_capture_video_stream(filename);
+ }
+ else {
+ //cap = cvCaptureFromCAM(cam_index);
+ cap = get_capture_webcam(cam_index);
+ }
int top = option_find_int(options, "top", 1);
@@ -1012,7 +1024,8 @@
struct timeval tval_before, tval_after, tval_result;
gettimeofday(&tval_before, NULL);
- image in = get_image_from_stream(cap);
+ //image in = get_image_from_stream(cap);
+ image in = get_image_from_stream_cpp(cap);
image in_s = resize_image(in, net.w, net.h);
show_image(in, "Threat Detection");
@@ -1056,7 +1069,7 @@
{
#ifdef OPENCV
printf("Classifier Demo\n");
- network net = parse_network_cfg(cfgfile);
+ network net = parse_network_cfg_custom(cfgfile, 1);
if(weightfile){
load_weights(&net, weightfile);
}
@@ -1067,9 +1080,11 @@
CvCapture * cap;
if(filename){
- cap = cvCaptureFromFile(filename);
+ //cap = cvCaptureFromFile(filename);
+ cap = get_capture_video_stream(filename);
}else{
- cap = cvCaptureFromCAM(cam_index);
+ //cap = cvCaptureFromCAM(cam_index);
+ cap = get_capture_webcam(cam_index);
}
int top = option_find_int(options, "top", 1);
@@ -1089,7 +1104,8 @@
struct timeval tval_before, tval_after, tval_result;
gettimeofday(&tval_before, NULL);
- image in = get_image_from_stream(cap);
+ //image in = get_image_from_stream(cap);
+ image in = get_image_from_stream_cpp(cap);
image in_s = resize_image(in, net.w, net.h);
show_image(in, "Classifier");
--
Gitblit v1.10.0