Timelapse: Simultaneous tagging of images by different people.

NOTE: THIS PAGE IS IN PROGRESS. IT IS CURRENTLY A DUMPING GROUND AND OF LITTLE USE UNTIL I EDIT IT. Simultaneous tagging of images by different people. the Timelapse software.
How can you deal with cases where multiple people are accessing a Timelapse database at the same time, as there are possibilities of overwriting each other?

The best solution would use a central server running an industrial database that can both handle concurrent access and detect possible conflict.

Problem. All files, including the database, is stored on the cloud. An analyst copies the files to their local machine, tags some of them, and then uploads the database to the cloud. However, if two (or more) people overlap when doing this, one person's upload will over-write the other person's upload.

Solution. Divide images into a sub-set of folders, where each folder contains only those images that the analyst is responsible for. Each anayst will then download and upload only their database and images. The caveat is that this produces one database per analyst. Even so, these can be merged (with care) using the Timelapse merge facilities.

We have resorted to uploading the photos to our cloud system, along with the database and template, through this we managed to work with a student. However saving the database is a problem if someone else has it open, it will create a second copy when uploading, because the file has to download the database and template from the cloud every time and reupload it. I am wondering if Timelapse could work with a relational database like MySQL or PostgreSQL? Then it could maybe work directly in the cloud, without downloading and reuploading the .ddb file?

Here is one workaround, although I am not sure if it fits within your structure. a. Have a folder structure on your server, starting at some root folder. b. Put a template in the root folder c. Divide up the tasks so each person is expected to work on images in a particular subfolder ie., no two people would be expected to work on that subfolder at the same time d. Copy the template into each subfolder, where a new sub-folder specific database would be created when those images are loaded e. Each person can then work with that subset. f. If you want to later merge the results into a single large database, you can use the TImelapse merge function found in the File menu. However, note that if databases in the sub-folders are changed, you would have to do a new merge put it into the master database. Similarly, if you updated something in the merge database, it would not propagate down to the databases in the subfolders

Using virtual machines

Only 1 person can be on a VM at a time. I parse data into 1 million image “sets” – which is about 1 week of work and a manageable # for timelapse. Each person works through a series of steps, and their timelapse ddb is sent to a staging location on the cloud for that project when they finish on the VM. Because tagging images is sort of… an art.. it makes sense to me that a person works through their own set. <<>>

I just thought of a solution to your issue of having students copy images and the primary Timelapse database, then tagging images, and then copying the database back which results in conflicts when multiple people overwriting the main database. Its fairly straightforward, but does require a few extra steps. Before delving into details, the solution is based on Timelapse’s ability to export and import a subset of all data held in the Timelapse database as CSV files. Importantly, the only those rows in the database whose file and relative path fields (i.e., the file path) match those in the CSV file will be updated. All other data rows are left unchanged.

There are several approaches for how this can be leveraged. Here are two possibilities. 1. Constraint: Each student is given a different folder to process. The student downloads the necessary files/database. Within Timelapse, the student uses the Select menu to choose the folder they are responsible for, which hides all other images. They tag the images. When done (and still maintaining the Select on that folder), the student exports their data as a CSV file, perhaps with the file name changed to include their name. That file is mailed or uploaded back to the cloud. On your side, you use the Timelapse/import facility to update the data fields for the images in that folder. 2. Constraint: Timelapse includes a field (e.g., Analyst, StudentID, etc) that can be filled in by a student, e.g., with their name or ID or other identifying number. The field can be a note (i.e., free text), or a Choice where the items are pre-populated with the student identifier. The choice is less error prone but lightly more work for you to do. The student downloads the files as described above to process whatever images are assigned to them. For images that they review, the field is filled in with their identifier. If they are analyzing a sequence of images, this is easily done by

              -filling in their identifier on the first image.
              -tagging images one after the other
              -on the last image (or whenever they feel like stopping)
              they raise the context menu on the identifier field an choose 
               ‘Propagate from the last non-empty value to here’. This will back fill
              the data fields for those images with their identifier on the first image.

When ready to create a CSV file for uploading back to the cloud, the student first chooses Select | Custom select. On that dialog, they fill in that field with their identifier, which will then choose only those images they have processed. They can then save the CSV file, upload it etc as in the above possibility. Variation. Alternately, they can just export all their data as a CSV file. On you side, you can write a simple macro that just removes all data rows where that identifying data field is empty.

Some things to note, though. • When importing a CSV file, data in the various Date/Time columns and the Folder column are ignored. This should not be an issue, as Timelapse normally puts the correct date/time in from each image’s metadata when the image is first loaded. The folder also should not be an issue, as it is just the name of the root folder, which should be common to all files. • Some checks should be made before importing the CSV file back to the database to ensure that the student has limited the output to the correct Select criteria,which can be done with a quick scan of the CSV file i.e. o for the Folder solution, that the relative path for all the rows is to the assigned folder o For the identifier solution, that all rows are tagged with that student’s identifier.

There is also another (currently hidden) feature in Timelapse that may ease some of the above. Timelapse can be started from a shell script with the following arguments: -templatepath <file path to the template located in the root folder> -relativepath <the relative path to the folder> When doing so, Timelapse will be constrained to only allow the person to view the images in that folder, i.e. as if a Select to that folder were done. If I recall correctly, no operations will allow them to select or view or change data to any images outside that folder. This adds a safety step, and less work for the students. The catch is that it adds complexity in invoking TImelapse with the correct arguments.