X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=pysvrt.git;a=blobdiff_plain;f=README.md;h=a4ea4fd956284572b20fdc650a9023021687a13b;hp=735bee39a9514619a4f4e158ad4fa0927149d17c;hb=HEAD;hpb=05414734a8c423314aaa9447db04ed348066c2f9 diff --git a/README.md b/README.md index 735bee3..a4ea4fd 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,50 @@ # Introduction # -This is the port of the Synthetic Visual Reasoning Test to the pytorch -framework. +This is a wrapper for [`PyTorch`](http://pytorch.org) for the +[`Synthetic Visual Reasoning Test,`](https://fleuret.org/git/svrt) +with an implementation of two convolutional networks to solve them. -The main function is +# Installation and test # + +Executing + +``` +make -j -k +./test-svrt.py +``` + +should generate an image +[`example.png`](https://fleuret.org/git-extract/pysvrt/example.png) in +the current directory. + +Note that the image generation does not take advantage of GPUs or +multi-core, and can be as fast as 10,000 vignettes per second and as +slow as 40 on a 4GHz i7-6700K. + +# Vignette generation and compression # + +## Vignette sets ## + +The file [`svrtset.py`](https://fleuret.org/git-extract/pysvrt/svrtset.py) implements the classes `VignetteSet` and +`CompressedVignetteSet` both with a constructor + +``` +__init__(problem_number, nb_samples, batch_size, cuda = False, logger = None) +``` + +and a method + +``` +(torch.FloatTensor, torch.LongTensor) get_batch(b) +``` + +which returns a pair composed of a 4d 'input' Tensor (i.e. single +channel 128x128 images), and a 1d 'target' Tensor (i.e. Boolean +labels). + +## Low-level functions ## + +The main function for generating vignettes is ``` torch.ByteTensor svrt.generate_vignettes(int problem_number, torch.LongTensor labels) @@ -36,23 +77,17 @@ provide a lossless compression scheme adapted to the ByteStorage of the vignette ByteTensor (i.e. expecting a lot of 255s, a few 0s, and no other value). -They allow to reduce the memory footprint by a factor ~50, and may be -usefull to deal with very large data-sets and avoid re-generating -images at every batch. +This compression reduces the memory footprint by a factor ~50, and may +be usefull to deal with very large data-sets and avoid re-generating +images at every batch. It induces a little overhead for decompression, +and moving from CPU to GPU memory. See vignette_set.py for a class CompressedVignetteSet using it. -# Installation and test # - -Executing +# Testing convolution networks # -``` -make -j -k -./test-svrt.py -``` - -should generate an image example.png in the current directory. - -Note that the image generation does not take advantage of GPUs or -multi-core, and can be as fast as 10,000 vignettes per second and as -slow as 40 on a 4GHz i7-6700K. +The file +[`cnn-svrt.py`](https://fleuret.org/git-extract/pysvrt/cnn-svrt.py) +provides the implementation of two deep networks designed by Afroze +Baqapuri during an internship at Idiap, and allows to train them with +several millions vignettes on a PC with 16Gb and a GPU with 8Gb.