From 8f99c05dca1bc4c9e1d2c0e9ca8e4645b8a6da9d Mon Sep 17 00:00:00 2001 From: James Ketrenos Date: Thu, 9 Jan 2020 17:39:43 -0800 Subject: [PATCH] Misc changes Signed-off-by: James Ketrenos --- clusters-pre | 8 ++++++++ scanner/scanner.c | 42 ++++++++++++++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/clusters-pre b/clusters-pre index b323bd4..941e5c0 100644 --- a/clusters-pre +++ b/clusters-pre @@ -16,6 +16,9 @@ document.addEventListener("DOMContentLoaded", (event) => { var div = document.createElement("div"); div.classList.add("face"); div.style.backgroundImage = "url(face-data/" + (id % 100) + "/" + id + "-original.png)"; + div.addEventListener("click", (event) => { + window.open("face-explorer.html?" + id, "photo-" + id); + }); document.body.appendChild(div); }); }); @@ -36,5 +39,10 @@ body { display: inline-block; border: 1px solid black; margin: 0.5em; + cursor: pointer; +} + +.face:hover { + box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5); } diff --git a/scanner/scanner.c b/scanner/scanner.c index fd077f6..6567bf1 100644 --- a/scanner/scanner.c +++ b/scanner/scanner.c @@ -6,6 +6,14 @@ #include #include +#ifndef MIN_PTS +#define MIN_PTS 20 +#endif + +#ifndef MAX_DISTANCE +#define MAX_DISTANCE 0.354667L +#endif + typedef enum { UNDEFINED = 0, CORE = 1, @@ -270,7 +278,8 @@ int main(int argc, char *argv[]) { memset(ppFaces[i]->distances, 0, sizeof(*ppFaces[i]->distances) * entries); } - long int count = 0; + long int processed = 0; + int last = 0; for (i = 0; i < 100; i++) { sprintf(pathBuf, "%s/face-data/%ld", argv[1], i); DIR *faceDir = opendir(pathBuf); @@ -281,7 +290,7 @@ int main(int argc, char *argv[]) { } struct dirent *ent; - while (count < entries && (ent = readdir(faceDir)) != NULL) { + while (processed < entries && (ent = readdir(faceDir)) != NULL) { if (strstr(ent->d_name, ".json") == NULL) { continue; } @@ -295,13 +304,17 @@ int main(int argc, char *argv[]) { char path[1028*2]; sprintf(path, "%s/%s", pathBuf, ent->d_name); maxId = maxId > id ? maxId : id; - if (!readFaceDescriptor(ppFaces[count], id, path)) { + if (!readFaceDescriptor(ppFaces[processed], id, path)) { fprintf(stderr, "Unable to read %s.\n", path); continue; } - count++; - if (count % 1000 == 0) { - fprintf(stderr, "Read %ld%% of descriptors.\n", (100 * count / entries)); + processed++; + if (processed % 1000 == 0) { + int perc = 100 * processed / (entries * entries); + if (perc != last) { + fprintf(stderr, "Read %d%% of descriptors.\n", perc); + last = perc; + } } } closedir(faceDir); @@ -309,15 +322,19 @@ int main(int argc, char *argv[]) { fprintf(stderr, "Read %ld face descriptors...\n", entries); + processed = 0; long double total = 0.0; - long int processed = 0; for (long i = 0; i < entries; i++) { Face *pLink = ppFaces[i]; for (long j = 0; j < entries; j++) { Face *pTarget = ppFaces[j]; processed++; if (processed % 1000 == 0) { - fprintf(stderr, "Computed %ld%% complete.\n", (100 * processed / (entries * entries))); + int perc = 100 * processed / (entries * entries); + if (perc != last) { + fprintf(stderr, "Computed %d%% complete.\n", perc); + last = perc; + } } if (i == j) { pLink->distances[i] = 0.0; @@ -338,7 +355,7 @@ int main(int argc, char *argv[]) { fprintf(stderr, "Average distance: %Lf\n", 1. * total / (entries * entries)); - long int clusters = DBSCAN(ppFaces, entries, 0.44L, 2); + long int clusters = DBSCAN(ppFaces, entries, MAX_DISTANCE, MIN_PTS); long int undefined = 0, outlier = 0, core = 0, reachable = 0; for (i = 0; i < entries; i++) { switch (ppFaces[i]->clusterType) { @@ -418,6 +435,7 @@ int main(int argc, char *argv[]) { char sqlBuf[1024]; processed = 0; + last = 0; for (long i = 0; i < entries; i++) { Face *pLink = ppFaces[i]; for (long j = 0; j < entries; j++) { @@ -425,7 +443,11 @@ int main(int argc, char *argv[]) { processed++; if (processed % 1000 == 0) { - fprintf(stderr, "Computed %ld%% complete.\n", (100 * processed / (entries * entries))); + int perc = 100 * processed / (entries * entries); + if (perc != last) { + fprintf(stderr, "Computed %d%% complete.\n", perc); + last = perc; + } } if (i == j) {