From be92b7db53c09b06ec8571aba37916e80af2c949 Mon Sep 17 00:00:00 2001 From: James Ketrenos Date: Thu, 12 Jan 2023 16:33:58 -0800 Subject: [PATCH] use distanceCosine Signed-off-by: James Ketrenos --- server/routes/faces.js | 16 ++++++++-------- server/routes/photos.js | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/server/routes/faces.js b/server/routes/faces.js index 6c1d4f2..e0149c4 100755 --- a/server/routes/faces.js +++ b/server/routes/faces.js @@ -52,13 +52,13 @@ function getFacesForPhoto(id) { }).then((faces) => { /* For each face in the photo, get the related faces */ return photoDB.sequelize.query( - "SELECT relatedFaces.photoId AS photoId,fd.descriptor1Id,fd.descriptor2Id,fd.distance,relatedFaces.faceConfidence " + + "SELECT relatedFaces.photoId AS photoId,fd.descriptor1Id,fd.descriptor2Id,fd.distanceCosine,relatedFaces.faceConfidence " + "FROM (SELECT id,photoId,faceConfidence FROM faces WHERE faces.faceConfidence>=0.9 AND faces.id IN (:ids)) AS faces " + "INNER JOIN faces AS relatedFaces ON relatedFaces.faceConfidence>=0.9 AND relatedFaces.id IN (fd.descriptor1Id,fd.descriptor2Id) " + - "INNER JOIN facedistances AS fd ON fd.distance<=0.5 " + + "INNER JOIN facedistances AS fd ON fd.distanceCosine<=0.5 " + " AND (fd.descriptor1Id=faces.id OR fd.descriptor2Id=faces.id) " + "WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " + - "ORDER BY fd.distance ASC", { + "ORDER BY fd.distanceCosine ASC", { replacements: { ids: faces.map(face => face.id), }, @@ -70,7 +70,7 @@ function getFacesForPhoto(id) { return (related.photoId != id && (related.descriptor1Id == face.id || related.descriptor2Id == face.id)); }).map((related) => { return { - distance: related.distance, + distanceCosine: related.distanceCosine, faceConfidence: related.faceConfidence, photoId: related.photoId, faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id @@ -128,13 +128,13 @@ router.get("/:id?", (req, res) => { } console.log("Looking up " + faces.map(face => face.id).join(",")); return photoDB.sequelize.query( - "SELECT relatedFaces.photoId AS photoId,fd.descriptor1Id,fd.descriptor2Id,fd.distance,relatedFaces.faceConfidence " + + "SELECT relatedFaces.photoId AS photoId,fd.descriptor1Id,fd.descriptor2Id,fd.distanceCosine,relatedFaces.faceConfidence " + "FROM (SELECT id,photoId,faceConfidence FROM faces WHERE faces.id IN (:ids)) AS faces " + "INNER JOIN faces AS relatedFaces ON relatedFaces.identityId IS NULL AND relatedFaces.faceConfidence>=0.9 AND relatedFaces.id IN (fd.descriptor1Id,fd.descriptor2Id) " + - "INNER JOIN facedistances AS fd ON fd.distance<=0.5 " + + "INNER JOIN facedistances AS fd ON fd.distanceCosine<=0.5 " + " AND (fd.descriptor1Id=faces.id OR fd.descriptor2Id=faces.id) " + "WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " + - "ORDER BY fd.distance ASC",{ + "ORDER BY fd.distanceCosine ASC",{ replacements: { ids: faces.map(face => face.id) }, @@ -146,7 +146,7 @@ router.get("/:id?", (req, res) => { return (related.photoId != faces[0].photoId && (related.descriptor1Id == face.id || related.descriptor2Id == face.id)); }).map((related) => { return { - distance: related.distance, + distanceCosine: related.distanceCosine, faceConfidence: related.faceConfidence, photoId: related.photoId, faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id diff --git a/server/routes/photos.js b/server/routes/photos.js index 4dd0428..e58bcdc 100755 --- a/server/routes/photos.js +++ b/server/routes/photos.js @@ -368,7 +368,7 @@ router.get("/status/:token", function(req, res) { * 2. Update all other duplicates to be duplicates of the first image that * remains * 3. If no duplicates, DELETE the entry from referencing tables: - * photohashes, faces, and any face{descriptor,distance} using that face + * photohashes, faces, and any face{descriptor,distanceCosine} using that face * 4. If there are duplicates, update the HASH (and any FACE) entry to point * to the first image that remains * 5. Delete the entry from photos @@ -413,7 +413,7 @@ const deletePhoto = function(photo) { if (!first) { console.log("Deleting " + photo.id + " from photohash."); // 3. If no duplicates, DELETE the entry from photohashes and faces - // and any face{descriptor,distance} using that face + // and any face{descriptor,distanceCosine} using that face return photoDB.sequelize.query( "DELETE FROM photohashes WHERE photoId=:id", { replacements: photo, @@ -911,13 +911,13 @@ function getFacesForPhoto(id) { }).then((faces) => { /* For each face in the photo, get the related faces */ return photoDB.sequelize.query( - "SELECT relatedFaces.photoId AS photoId,fd.descriptor1Id,fd.descriptor2Id,fd.distance,relatedFaces.faceConfidence " + + "SELECT relatedFaces.photoId AS photoId,fd.descriptor1Id,fd.descriptor2Id,fd.distanceCosine,relatedFaces.faceConfidence " + "FROM (SELECT id,photoId,faceConfidence FROM faces WHERE faces.faceConfidence>=0.9 AND faces.id IN (:ids)) AS faces " + "INNER JOIN faces AS relatedFaces ON relatedFaces.faceConfidence>=0.9 AND relatedFaces.id IN (fd.descriptor1Id,fd.descriptor2Id) " + - "INNER JOIN facedistances AS fd ON fd.distance<=0.5 " + + "INNER JOIN facedistances AS fd ON fd.distanceCosine<=0.5 " + " AND (fd.descriptor1Id=faces.id OR fd.descriptor2Id=faces.id) " + "WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " + - "ORDER BY fd.distance ASC", { + "ORDER BY fd.distanceCosine ASC", { replacements: { ids: faces.map(face => face.id), }, @@ -929,7 +929,7 @@ function getFacesForPhoto(id) { return (related.photoId != id && (related.descriptor1Id == face.id || related.descriptor2Id == face.id)); }).map((related) => { return { - distance: related.distance, + distanceCosine: related.distanceCosine, faceConfidence: related.faceConfidence, photoId: related.photoId, faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id