use distanceCosine
Signed-off-by: James Ketrenos <james_git@ketrenos.com>
This commit is contained in:
parent
92dacb74c1
commit
be92b7db53
@ -52,13 +52,13 @@ function getFacesForPhoto(id) {
|
|||||||
}).then((faces) => {
|
}).then((faces) => {
|
||||||
/* For each face in the photo, get the related faces */
|
/* For each face in the photo, get the related faces */
|
||||||
return photoDB.sequelize.query(
|
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 " +
|
"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 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) " +
|
" AND (fd.descriptor1Id=faces.id OR fd.descriptor2Id=faces.id) " +
|
||||||
"WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " +
|
"WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " +
|
||||||
"ORDER BY fd.distance ASC", {
|
"ORDER BY fd.distanceCosine ASC", {
|
||||||
replacements: {
|
replacements: {
|
||||||
ids: faces.map(face => face.id),
|
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));
|
return (related.photoId != id && (related.descriptor1Id == face.id || related.descriptor2Id == face.id));
|
||||||
}).map((related) => {
|
}).map((related) => {
|
||||||
return {
|
return {
|
||||||
distance: related.distance,
|
distanceCosine: related.distanceCosine,
|
||||||
faceConfidence: related.faceConfidence,
|
faceConfidence: related.faceConfidence,
|
||||||
photoId: related.photoId,
|
photoId: related.photoId,
|
||||||
faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id
|
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(","));
|
console.log("Looking up " + faces.map(face => face.id).join(","));
|
||||||
return photoDB.sequelize.query(
|
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 " +
|
"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 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) " +
|
" AND (fd.descriptor1Id=faces.id OR fd.descriptor2Id=faces.id) " +
|
||||||
"WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " +
|
"WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " +
|
||||||
"ORDER BY fd.distance ASC",{
|
"ORDER BY fd.distanceCosine ASC",{
|
||||||
replacements: {
|
replacements: {
|
||||||
ids: faces.map(face => face.id)
|
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));
|
return (related.photoId != faces[0].photoId && (related.descriptor1Id == face.id || related.descriptor2Id == face.id));
|
||||||
}).map((related) => {
|
}).map((related) => {
|
||||||
return {
|
return {
|
||||||
distance: related.distance,
|
distanceCosine: related.distanceCosine,
|
||||||
faceConfidence: related.faceConfidence,
|
faceConfidence: related.faceConfidence,
|
||||||
photoId: related.photoId,
|
photoId: related.photoId,
|
||||||
faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id
|
faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id
|
||||||
|
@ -368,7 +368,7 @@ router.get("/status/:token", function(req, res) {
|
|||||||
* 2. Update all other duplicates to be duplicates of the first image that
|
* 2. Update all other duplicates to be duplicates of the first image that
|
||||||
* remains
|
* remains
|
||||||
* 3. If no duplicates, DELETE the entry from referencing tables:
|
* 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
|
* 4. If there are duplicates, update the HASH (and any FACE) entry to point
|
||||||
* to the first image that remains
|
* to the first image that remains
|
||||||
* 5. Delete the entry from photos
|
* 5. Delete the entry from photos
|
||||||
@ -413,7 +413,7 @@ const deletePhoto = function(photo) {
|
|||||||
if (!first) {
|
if (!first) {
|
||||||
console.log("Deleting " + photo.id + " from photohash.");
|
console.log("Deleting " + photo.id + " from photohash.");
|
||||||
// 3. If no duplicates, DELETE the entry from photohashes and faces
|
// 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(
|
return photoDB.sequelize.query(
|
||||||
"DELETE FROM photohashes WHERE photoId=:id", {
|
"DELETE FROM photohashes WHERE photoId=:id", {
|
||||||
replacements: photo,
|
replacements: photo,
|
||||||
@ -911,13 +911,13 @@ function getFacesForPhoto(id) {
|
|||||||
}).then((faces) => {
|
}).then((faces) => {
|
||||||
/* For each face in the photo, get the related faces */
|
/* For each face in the photo, get the related faces */
|
||||||
return photoDB.sequelize.query(
|
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 " +
|
"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 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) " +
|
" AND (fd.descriptor1Id=faces.id OR fd.descriptor2Id=faces.id) " +
|
||||||
"WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " +
|
"WHERE (faces.id=fd.descriptor1Id OR faces.id=fd.descriptor2Id) " +
|
||||||
"ORDER BY fd.distance ASC", {
|
"ORDER BY fd.distanceCosine ASC", {
|
||||||
replacements: {
|
replacements: {
|
||||||
ids: faces.map(face => face.id),
|
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));
|
return (related.photoId != id && (related.descriptor1Id == face.id || related.descriptor2Id == face.id));
|
||||||
}).map((related) => {
|
}).map((related) => {
|
||||||
return {
|
return {
|
||||||
distance: related.distance,
|
distanceCosine: related.distanceCosine,
|
||||||
faceConfidence: related.faceConfidence,
|
faceConfidence: related.faceConfidence,
|
||||||
photoId: related.photoId,
|
photoId: related.photoId,
|
||||||
faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id
|
faceId: related.descriptor1Id != face.id ? related.descriptor1Id : related.descriptor2Id
|
||||||
|
Loading…
x
Reference in New Issue
Block a user