From d1d56a2a72247ef080eb124ce6605f3218ce4295 Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Fri, 10 Jul 2015 23:38:07 +0000
Subject: [PATCH] Added alexnet cfg
---
src/darknet.c | 82 +++++++++++++++++++++++++++++++++-------
1 files changed, 67 insertions(+), 15 deletions(-)
diff --git a/src/darknet.c b/src/darknet.c
index 3794f79..0a705da 100644
--- a/src/darknet.c
+++ b/src/darknet.c
@@ -11,17 +11,9 @@
extern void run_imagenet(int argc, char **argv);
extern void run_detection(int argc, char **argv);
+extern void run_writing(int argc, char **argv);
extern void run_captcha(int argc, char **argv);
-void convert(char *cfgfile, char *outfile, char *weightfile)
-{
- network net = parse_network_cfg(cfgfile);
- if(weightfile){
- load_weights(&net, weightfile);
- }
- save_network(net, outfile);
-}
-
void del_arg(int argc, char **argv, int index)
{
int i;
@@ -57,22 +49,66 @@
return def;
}
-void scale_rate(char *filename, float scale)
+void change_rate(char *filename, float scale, float add)
{
// Ready for some weird shit??
FILE *fp = fopen(filename, "r+b");
if(!fp) file_error(filename);
float rate = 0;
fread(&rate, sizeof(float), 1, fp);
- printf("Scaling learning rate from %f to %f\n", rate, rate*scale);
- rate = rate*scale;
+ printf("Scaling learning rate from %f to %f\n", rate, rate*scale+add);
+ rate = rate*scale + add;
fseek(fp, 0, SEEK_SET);
fwrite(&rate, sizeof(float), 1, fp);
fclose(fp);
}
+void partial(char *cfgfile, char *weightfile, char *outfile, int max)
+{
+ network net = parse_network_cfg(cfgfile);
+ if(weightfile){
+ load_weights_upto(&net, weightfile, max);
+ }
+ net.seen = 0;
+ save_weights(net, outfile);
+}
+
+#include "convolutional_layer.h"
+void rgbgr_filters(convolutional_layer l);
+void rgbgr_net(char *cfgfile, char *weightfile, char *outfile)
+{
+ gpu_index = -1;
+ network net = parse_network_cfg(cfgfile);
+ if(weightfile){
+ load_weights(&net, weightfile);
+ }
+ int i;
+ for(i = 0; i < net.n; ++i){
+ layer l = net.layers[i];
+ if(l.type == CONVOLUTIONAL){
+ rgbgr_filters(l);
+ break;
+ }
+ }
+ save_weights(net, outfile);
+}
+
+void visualize(char *cfgfile, char *weightfile)
+{
+ network net = parse_network_cfg(cfgfile);
+ if(weightfile){
+ load_weights(&net, weightfile);
+ }
+ visualize_network(net);
+ #ifdef OPENCV
+ cvWaitKey(0);
+ #endif
+}
+
int main(int argc, char **argv)
{
+ //test_resize("data/bad.jpg");
+ //test_box();
//test_convolutional_layer();
if(argc < 2){
fprintf(stderr, "usage: %s <function>\n", argv[0]);
@@ -90,11 +126,27 @@
#endif
if(0==strcmp(argv[1], "imagenet")){
- run_imagenet(argc, argv);
+ run_imagenet(argc, argv);
} else if (0 == strcmp(argv[1], "detection")){
- run_detection(argc, argv);
+ run_detection(argc, argv);
+ } else if (0 == strcmp(argv[1], "writing")){
+ run_writing(argc, argv);
+ } else if (0 == strcmp(argv[1], "test")){
+ test_resize(argv[2]);
} else if (0 == strcmp(argv[1], "captcha")){
- run_captcha(argc, argv);
+ run_captcha(argc, argv);
+ } else if (0 == strcmp(argv[1], "change")){
+ change_rate(argv[2], atof(argv[3]), (argc > 4) ? atof(argv[4]) : 0);
+ } else if (0 == strcmp(argv[1], "rgbgr")){
+ rgbgr_net(argv[2], argv[3], argv[4]);
+ } else if (0 == strcmp(argv[1], "partial")){
+ partial(argv[2], argv[3], argv[4], atoi(argv[5]));
+ } else if (0 == strcmp(argv[1], "visualize")){
+ visualize(argv[2], (argc > 3) ? argv[3] : 0);
+ } else if (0 == strcmp(argv[1], "imtest")){
+ test_resize(argv[2]);
+ } else {
+ fprintf(stderr, "Not an option: %s\n", argv[1]);
}
return 0;
}
--
Gitblit v1.10.0