Warning: session_start(): open(/var/lib/php/sessions/sess_l7vcq472ftcvvgiqhuu4jjprh8, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
scope trainVAD.
sclass TrainVAD {
replace Recognizer with F1.
new Best best;
LPair trainingList;
int clipLength;
Recognizer go() {
final BWImage img1 = frequencyImage(voiceMegaMix());
final BWImage img2 = frequencyImage(nonVoiceMegaMix());
clipLength = iround(2.0*spectro_pixelsPerSecond());
int stepSize = clipLength/4;
print(+clipLength);
L images1 = map(func(IntRange r) -> BWImage { bwHorizontalClip(img1, r) }, stepIntRange(clipLength, intRange(0, img1.getWidth()), stepSize));
L images2 = map(func(IntRange r) -> BWImage { bwHorizontalClip(img2, r) }, stepIntRange(clipLength, intRange(0, img2.getWidth()), stepSize));
print(allImageSizes(concatLists(images1, images2)));
print(l(images1) + " + " + l(images2) + " images");
trainingList = trueFalseBPairs(images1, images2);
// dummy recognizers first
test(func(BWImage img) -> bool { false });
test(func(BWImage img) -> bool { true });
new AIStrategy_RandomWithVariation strategy;
strategy.best = best;
strategy.submit = f1_scorePreciseRecognizer(trainingList);
strategy.random = func -> Rec1 {
nu(Rec1,
streakLength := random(1, clipLength/2),
threshold := randomFloat())
};
runStrategyWhileImprovement(best, strategy);
/*for (int streakLength = 1; streakLength <= clipLength/2; streakLength++)
test(nu(Rec1, +streakLength));*/
ret best!;
}
void test(Recognizer r) {
scorePreciseRecognizer(best, r, trainingList);
}
void showErrors(Recognizer r) {
if (r == null) ret;
new L errorImages;
for (Pair p : trainingList)
if (r.get(p.a) != p.b)
errorImages.add(bwAutoContrast(p.a));
if (nempty(errorImages))
showImage("Errors", mergeBWImagesVertically(errorImages));
}
}
sclass #Rec1 extends F1 {
int streakLength;
float threshold;
public Bool get(BWImage img) {
ret hasIntRangesLongerThan(streakLength, audio_streaksUsingBand_v1(img,
audio_bestBandForEntryPoints(), +threshold));
}
toString { ret struct(this); }
}
static F1 trainVAD() {
new TrainVAD t;
F1 best = t.go();
t.showErrors(best);
ret best;
}
end scope