Warning: session_start(): open(/var/lib/php/sessions/sess_247pqjfi9jhc37fr2bfk1u0b9n, 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
!7
replace Finder with F1.
sbool withNoFace = true;
p-exp {
int w = 32;
int limit = 95; // search for smallest finder with at least 95% accuracy
File dir = ai_faceFinderDir();
if (withNoFace) dir = newFile(dir, "with-no-face");
L marked = markedFaces_scaledToWidth(w, +withNoFace);
FaceFinderByPictures1 finder = new(w, nonNulls(rgbImageAndRects_getClip(marked)));
new Best best;
//double tolerance = first(images).image.getWidth()/2.0;
best.put(racerOptimize(
new RandomAndVary_Record(
finder,
similarity := new RandomAndVary_Float),
func(FaceFinderByPictures1 finder) -> double {
video_scoreRect_step(new Best, marked, finder).score()
}, plateauLength := 100));
finder = best!;
saveTextFileWithBackupVerbose(newFile(dir, "full-finder.struct"), struct(finder));
//showImage(mergeRGBImagesAndRects(callFaceFinder(finder, rgbImageAndRects_images(marked))));
new Best best3;
while (nempty(finder.pictures) && best.score() >= limit) {
// Make finder smaller by removing pictures
new Best best2;
for (int i = 0; i < l(finder.pictures); i++) {
FaceFinderByPictures1 newFinder = shallowClone(finder);
newFinder.pictures = listWithoutIndex(newFinder.pictures, i);
//print("Took out image " + (i+1) + "/" + l(finder.pictures));
video_scoreRect_step(best2, marked, newFinder, print := false);
copyBestIfAtLeast(best2, best3, limit);
}
finder = (FaceFinderByPictures1) best2!;
print("Got new finder with score " + best2.score() + ": " + finder);
}
saveTextFileWithBackupVerbose(newFile(dir, "smallest-finder-over-" + limit + ".struct"), struct(best3!));
}