it's about time
Code repository for "It's About Time: Analog clock Reading in the Wild"
Packages required: pytorch
(used 1.9, any reasonable version should work), kornia
(for homography), einops
, scikit-learn
(for RANSAC), tensorboardX
(for logging)
Using pretrained model:
- prediction
python predict.py
will predict on your data (or by default, whatever is indata/demo
). This does assume the images being already cropped, we use CBNetv2. (you could instead add something like a yolov5 to the code if you prefer not installing anything extra). - evaluation
python eval.py
(requires dataset) should return the numbers reported in the paper
Training:
sh full_cycle.sh
should do the job- if you want to do it individually, then do use
train.py
train on SynClockgenerate_pseudo_labels.py
use the model to generate pseudo labels for timelapsetrain_refine.py
train on SynClock+timelapse.- The latter two can be repeated iteratively.
Dataset (Train):
- SynClock is generated on the fly (via
SynClock.py
) - Timelapse will be uploaded later.
Dataset (Eval):
- COCO and OpenImages: The
.csv
files indata/
contains the image ids, predicted bbox's (by CBNetV2), gt bbox's, and the manual time label. We will upload this subset later for convenience, but if you already have the respective datasets it should already work. - Clock Movies do not contain bbox's. We may not be able to release the data directly due to copyright, but the csv files do contain the image file names, and they are scraped from https://theclock.fandom.com/wiki/Special:NewFiles
Note: src/cyclic_ransac.py is adapted from the source code of scikit-learn (authored by Johannes Schönberger under BSD 3 clause license), to fit a sawtooth wave for cyclic linear data.
Coming soon (early December):
- video
- dataset
- detection