public void TestTrainSimple() { // create lenet LenetClassifier classifier = new LenetClassifier(); classifier.Set("junk", 0); // disable junk classifier.SetExtractor("scaledfe"); classifier.Initialize(classesNums); StringBuilder sbout; classifier.GetStdout(out sbout); Console.Write(sbout); // load RowDataset8 from file RowDataset8 ds = new RowDataset8(); ds.Load(trainDatasetFileName); // do train classifier.Set("epochs", 3); classifier.XTrain(ds); // save classifier to file classifier.Save(trainNetworkFileName); // test recognize DoTestRecognize(classifier); }
public LenetClassifier TestLoadNetwork() { // load network from new format LenetClassifier classifier = new LenetClassifier(); classifier.Load(networkFileName); return(classifier); }
private void DoTestRecognize(LenetClassifier classifier) { OutputVector ov = new OutputVector(); Floatarray v = new Floatarray(); Bytearray ba = new Bytearray(1, 1); ImgIo.read_image_gray(ba, testPngFileName); NarrayUtil.Sub(255, ba); v.Copy(ba); v /= 255.0; classifier.XOutputs(ov, v); Console.WriteLine("Featured output class '{0}', score '{1}'", (char)ov.Key(ov.BestIndex), ov.Value(ov.BestIndex)); }
public void TestRecognize() { LenetClassifier classifier = new LenetClassifier(); classifier.Load(networkFileName); StringBuilder sbout; classifier.GetStdout(out sbout); Console.Write(sbout); DoTestRecognize(classifier); }
public void TestSaveNetwork() { // create lenet LenetClassifier classifier = new LenetClassifier(); classifier.CharClass.TanhSigmoid = false; classifier.CharClass.NetNorm = false; classifier.CharClass.AsciiTarget = true; classifier.JunkClass.TanhSigmoid = false; classifier.Set("junk", 0); // disable junk classifier.SetExtractor("scaledfe"); classifier.Initialize(classesNums); // load char lenet from old file format LenetWrapper.LoadNetwork(classifier.CharClass.HrLenet, oldformatFileName); // save network to new format classifier.Save(networkFileName); }
public void TestTrainLenetCseg() { string bookPath = "data\\0000\\"; string netFileName = "latin-lenet.model"; Linerec.GDef("linerec", "use_reject", 1); Linerec.GDef("lenet", "junk", 1); Linerec.GDef("lenet", "epochs", 4); // create Linerec Linerec linerec; if (File.Exists(netFileName)) { linerec = Linerec.LoadLinerec(netFileName); } else { linerec = new Linerec("lenet"); LenetClassifier classifier = linerec.GetClassifier() as LenetClassifier; if (classifier != null) { classifier.InitNumSymbLatinAlphabet(); } } // temporary disable junk //linerec.DisableJunk = true; linerec.StartTraining(); int nepochs = 10; LineSource lines = new LineSource(); lines.Init(new string[] { "data2" }); //linerec.GetClassifier().Set("epochs", 1); for (int epoch = 1; epoch <= nepochs; epoch++) { linerec.Epoch(epoch); // load cseg samples while (!lines.Done()) { lines.MoveNext(); Intarray cseg = new Intarray(); //Bytearray image = new Bytearray(); string transcript = lines.GetTranscript(); //lines.GetImage(image); if (!lines.GetCharSegmentation(cseg) && cseg.Length() == 0) { Global.Debugf("warn", "skipping book {0} page {1} line {2} (no or bad cseg)", lines.CurrentBook, lines.CurrentPage, lines.Current); continue; } SegmRoutine.make_line_segmentation_black(cseg); linerec.AddTrainingLine(cseg, transcript); } lines.Reset(); lines.Shuffle(); // do Train and clear Dataset linerec.FinishTraining(); // do save if (epoch % 1 == 0) { linerec.Save(netFileName); } // recognize test line bool bakDisJunk = linerec.DisableJunk; linerec.DisableJunk = false; DoTestLinerecRecognize(linerec, "data2\\", "test1.png"); linerec.DisableJunk = bakDisJunk; } // finnaly save linerec.Save(netFileName); }