Summary | Face recognition |
Queue | Ansel |
Type | Enhancement |
State | Resolved |
Priority | 1. Low |
Owners | mrubinsk (at) horde (dot) org |
Requester | duck (at) obala (dot) net |
Created | 03/10/2008 (6326 days ago) |
Due | |
Updated | 06/29/2008 (6215 days ago) |
Assigned | 05/13/2008 (6262 days ago) |
Resolved | 06/29/2008 (6215 days ago) |
Milestone | |
Patch | No |
...and with this commit, everything outstanding from this ticket is
complete. Yes, the face code still needs work, and the UI needs works
as well, but I'm closing this ticket as it is getting hard for me to
keep up with all the various patches in one ticket. Please open a
separate ticket for each further enhancement or bug...
Thanks.
feature from Faces::allFaces() (see comment in the Faces.php file -
but the gist of it is that it is incredibly resource intensive, and
not compatible across all RDBMSs)
thousands of gallery_id in the IN(...) clause. I attaching a patch,
maybe a little hacky but is all I can do for now.
that had the "old" parameters.
New Attachment: face.png
http://cvs.horde.org/diff.php/ansel/lib/Faces.php?r1=1.8&r2=1.9
wrongly - out of place.
been run through Horde_Image_im::crop() ? If so, there's not much we
can do about that, it was a bug in Horde_Image that was saving the
wrong canvas size for the cropped images.
wrongly - out of place.
New Attachment: random_faces.php
New Attachment: recent_faces.php
thousands of gallery_id in the IN(...) clause. I attaching a patch,
maybe a little hacky but is all I can do for now.
already have a few other places in Ansel_Storage where we directly
access the ansel_shares table either because it's necessary or for
performance reasons. Of course, we'll also have to remove the code in
the beginning of that method that fills the galleries array if it's
empty...or your new code will never execute ;)
Thanks.
New Attachment: getRecentImages.diff
Ansel will eat more than 128 MB of ram.
galleries the list grows up to thousands of entries wherever we don't
limit the results. This is done in block galleries selection and
getRecentImages() method. We should limit gallery selection in the
blocks parameters. For example if we count more then 50 galleries we
should skip galleries selections or allow to jut enter the gallery id.
For getRecentImages() we must allow the galleries selection in a
direct SQL query. Of course is impossible to run a SQL query with
thousands of gallery_id in the IN(...) clause. I attaching a patch,
maybe a little hacky but is all I can do for now.
http://cvs.horde.org/diff.php/ansel/config/conf.xml?r1=1.42&r2=1.43&ty=u
http://cvs.horde.org/co.php/ansel/faces/claim.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/custom.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/delete.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/face.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/gallery.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/image.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/img.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/name.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/report.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/savecustom.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/all.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/image.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/image_define.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/image_save.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/image_search.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/img.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/name.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/named.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/owner.php?r=1.1
http://cvs.horde.org/co.php/ansel/faces/search/tabs.php?r=1.1
http://cvs.horde.org/co.php/ansel/js/builder.js?r=1.1
http://cvs.horde.org/co.php/ansel/js/cropper.js?r=1.1
http://cvs.horde.org/co.php/ansel/js/src/builder.js?r=1.1
http://cvs.horde.org/co.php/ansel/js/src/cropper.js?r=1.1
http://cvs.horde.org/diff.php/ansel/lib/Ansel.php?r1=1.433&r2=1.434&ty=u
http://cvs.horde.org/co.php/ansel/lib/Face.php?r=1.1
http://cvs.horde.org/co.php/ansel/lib/Face/facedetect.php?r=1.1
http://cvs.horde.org/co.php/ansel/lib/Face/opencv.php?r=1.1
http://cvs.horde.org/diff.php/ansel/lib/Report.php?r1=1.7&r2=1.8&ty=u
http://cvs.horde.org/diff.php/ansel/lib/Report/letter.php?r1=1.3&r2=1.4&ty=u
http://cvs.horde.org/diff.php/ansel/lib/Report/mail.php?r1=1.3&r2=1.4&ty=u
http://cvs.horde.org/diff.php/ansel/lib/Views/Image.php?r1=1.52&r2=1.53&ty=u
http://cvs.horde.org/diff.php/ansel/lib/Widget/Actions.php?r1=1.11&r2=1.12&ty=u
http://cvs.horde.org/co.php/ansel/lib/Widget/ImageFaces.php?r=1.1
http://cvs.horde.org/co.php/ansel/lib/Widget/OwnerFaces.php?r=1.1
http://cvs.horde.org/diff.php/ansel/scripts/sql/ansel.sql?r1=1.15&r2=1.16&ty=u
http://cvs.horde.org/co.php/ansel/templates/faces/custom.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/faces/define.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/faces/face.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/faces/faces.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/faces/gallery.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/faces/image.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/faces/index.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/faces/search.inc?r=1.1
http://cvs.horde.org/co.php/ansel/templates/tile/face.inc?r=1.1
http://cvs.horde.org/diff.php/ansel/templates/tile/image.inc?r1=1.27&r2=1.28&ty=u
http://cvs.horde.org/diff.php/ansel/templates/view/gallery.inc?r1=1.163&r2=1.164&ty=u
http://cvs.horde.org/co.php/ansel/themes/cropper.css?r=1.1
http://cvs.horde.org/diff.php/ansel/themes/screen.css?r1=1.47&r2=1.48&ty=u
report_content config changes.
since I run an older patched version.
apply patches that were generated from code that is _that_ much
different from our current HEAD. Regardless, we do appreciate the
effort :)
Just a note: if I import my large data set in
Ansel will eat more than 128 MB of ram.
New Attachment: report.diff
report_content config changes.
since I run an older patched version. I will try to port al my ideas
to current cvs state in the next days and then provide patches for
every changed part. Just a note: if I import my large data set in
current Ansel code, PHP dies with memory exhausted fatal error as
Ansel will eat more than 128 MB of ram.
guessed as to what they should be, but maybe a diff against your
screen.css would be helpful.
2) The Ansel_Report stuff that your using for the "Claim"
functionality is broken...perhaps there are missing patches against
Ansel_Report? The issues I see are:
- Currently, Ansel_Report *always* sends to the configured
report-to address. It looks to me like the face code attempts to pass
Ansel_Report an identity object, that I assume it's to get an email
address from (assuming it's available). I'm assuming there is also
some missing checks for what to do if there is no valid email address
in the user's identity?
- There is no Ansel_Report#setTitle method, but the image code
attempts to call it. Again, maybe from a missing patch?
New Attachment: faces.sql
as well. Not a big deal, as we can use a proxy to wrap the affected
calls. Just more of an FYI to any one following this ticket, looking
to use this functionality....you will need to be on PHP5 to use
everything in this patch but the manual face cropping.
other tables besides ansel_faces that have been added?
Thanks.
detect faces and lib http://libpuzzle.pureftpd.org/project/libpuzzle
for image similarities. I home I included all files in the tar.
If this patch will be accepted I will slowly post all my Ansel
changes, as I don't like to run a completly separate source.
Assigned to Michael Rubinsky
State ⇒ Assigned
Thanks!
New Attachment: faces.tgz
State ⇒ Accepted
I'll be out of town for the next two weeks, so I'll look at it when I
get back.
Thanks again.
the ticket?
to switch to Ansel next week. If there will not be any critical bugs I
will try to find some time and merge my code with the last Ansel
changes (API/Lightbox etc) and the I will try to provide a patch.
the ticket?
the ticket?
implementation.
EDITING: It not just finds faces. User can edit results or create its
on face by selecting a par of an image with JS. The owner can name the
person of the image as users can notify the owner who is on the
picture or tell him to remove themselves (using Ansel_Report).
BROWSING: You can browse the image collection and see where a name
ocorrus on any image/gallery. Widgets for faces in image/gallery are
also added.
SEARCHING: Additional to the classic name (text value) search, a
bitmap search is added too. You can see which faces are similar to any
face sorted by similartiy percentage. But I did not stop here. User
can upload a custom image, select face range, and search if the person
is in any of the galleries.
New Attachment: face7.jpeg
attachments screen shots. I will add an auto-completer for face names
looking for similar faces form your past galleries that you already
named. Then even a search faces by similarities. For example "to who I
am smilar" search.
New Attachment: ansel-fr[2].tgz
facebook. (thumbnails in widget display and divs over the image to
show face name on mouserover). I still like to have an clime option
using Ansel_Report so users can notify the gallery owner who is on the
image (face has no name etc) etc.
New Attachment: ansel-fr[1].tgz
the configuration.
Added an user driver to allow "user only" mode when you don't have a
PECL extenssion installed.
Intel OpenCV home: http://www.intel.com/technology/computing/opencv/
Public source: http://sourceforge.net/projects/opencvlibrary/
OpenCV PECL extension: http://d.hatena.ne.jp/moriyoshi/20070314/1173838791
Face Detect only PECL extension: http://hirokawa.netflowers.jp/entry/4874/
New Attachment: face4.jpeg
that was found by the opencv libraty. I had still two things to do,
after that I will re-create the patch.
I sued the Image Cropper UI
(http://www.defusion.org.uk/code/javascript-image-cropper-ui-using-prototype-scriptaculous/) I found on
http://scripteka.com/.
State ⇒ New
Priority ⇒ 1. Low
Type ⇒ Enhancement
Summary ⇒ Face recognition
Queue ⇒ Ansel
(user)name of the person on the picture. So someone can browse faces
or find images where he is on. I implemented the two PECL extensions I
found on the net. There are some screen shoots in the zip.
An interface to allow user to select his own face rage will be nice
too. But don't have time right now. But you never know ;)