Skip to content

tensorflow implementation of Densely Connected Convolutional Networks

Notifications You must be signed in to change notification settings

plemeri/DenseNet_tensorflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DenseNet_tensorflow

tensorflow implementation of Densely Connected Convolutional Networks

Requirements

  • Tensorflow 1.x - GPU version recommended
  • Python 3.x

Dataset

Please download dataset from this link Both Cifar10 and MNIST dataset are converted into tfrecords format for conveinence. Put train.tfrecords, test.tfrecords files into dataset/cifar10, dataset/mnist

You can create tfrecord file with your own dataset with dataset/dataset_generator.py.

python dataset_generator.py --image_dir ./cifar10/test/images --label_dir ./cifar10/test/labels --output_dir ./cifar10 --output_filename test.tfrecord

Options:

  • --image_dir (str) - directory of your image files. it is recommended to set the name of images to integers like 0.png
  • --label_dir (str) - directory of your label files. it is recommended to set the name of images to integers like 0.txt. label text file must contain class label in integer like 8.
  • --output_dir (str) - directory for output tfrecord file.
  • --outpuf_filename (str) - filename of output tfrecord file.

Training

Cifar 10

python train.py --class_num 10 --image_shape 32 32 3 --blocks 3 --layers 12 12 12 growth_rate 12 --dropout_rate 0.2 --compression_factor 1.0 --init_subsample False --learning_rate 0.1 --label_smoothing 0.1 --momentum 0.9 --weight_decay 0.0001 --train_set_size 50000 --val_set_size 10000 --batch_size 100 --epochs 60 --checkpoint_dir ./checkpoint --checkpoint_name densenet_cifar10 --train_record_dir ./dataset/cifar10/train.tfrecord --val_record_dir ./dataset/cifar10/test.tfrecord

Options:

  • --class_num (int) - output number of class. Cifar10 has 10 classes.
  • --image_shape (int nargs) - shape of input image. Cifar10 has 32 32 3 shape.
  • --blocks (int) - the number of dense blocks
  • --layers (int nargs) - the number of layers for each block. you need to provide them for each block
  • --growth_rate (int) - growth rate of densenet
  • --dropout_rate (float) - dropout rate
  • --compression_factor (float) - compression factor for transition layer. 1.0 for no compressing.
  • --init_subsample (bool) - do subsampling (striding) if true
  • --learning_rate (float) - initial learning rate
  • --label_smoothing (float) - label smoothing factor
  • --momentum (float) - momentum from momentum optimizer
  • --weight_decay (float) - weight decay factor
  • --train_set_size (int) - number of training data. Cifar10 has 50000 data.
  • --val_set_size (int) - number of validating data. I used test data for validation, so there are 10000 data.
  • --batch_size (int) - size of mini batch
  • --epochs (int) - number of epoch
  • --checkpoint_dir (str) - directory to save checkpoint
  • --checkpoint_name (str) - file name of checkpoint
  • --train_record_dir (str) - file location of training set tfrecord
  • --test_record_dir (str) - file location of test set tfrecord (for validation)

MNIST

python train.py --class_num 10 --image_shape 28 28 1 --blocks 3 --layers 12 12 12 growth_rate 12 --dropout_rate 0.0 --compression_factor 1.0 --init_subsample False --learning_rate 0.1 --label_smoothing 0.1 --momentum 0.9 --weight_decay 0.0001 --train_set_size 50000 --val_set_size 10000 --batch_size 100 --epochs 60 --checkpoint_dir ./checkpoint --checkpoint_name densenet_mnist --train_record_dir ./dataset/mnist/train.tfrecord --val_record_dir ./dataset/mnist/test.tfrecord

Options:

  • options are same as Cifar10

Cifar100

python train.py --class_num 100 --image_shape 32 32 3 --blocks 3 --layers 12 12 12 growth_rate 12 --dropout_rate 0.0 --compression_factor 1.0 --init_subsample False --learning_rate 0.1 --label_smoothing 0.1 --momentum 0.9 --weight_decay 0.0001 --train_set_size 50000 --val_set_size 10000 --batch_size 100 --epochs 60 --checkpoint_dir ./checkpoint --checkpoint_name densenet_cifar100 --train_record_dir ./dataset/cifar100/train.tfrecord --val_record_dir ./dataset/cifar100/test.tfrecord

Options:

  • options are same as Cifar10

Testing

python test.py --class_num 10 --checkpoint_dir ./checkpoint/best --test_record_dir ./dataset/cifar10/test.tfrecord --batch_size 256

Options:

  • --class_num (int) - the number of classes
  • --checkpoint_dir (str) - directory for the checkpoint you want to load and test
  • --test_record_dir (str) - directory for the test dataset
  • --batch_size (int) - batch size for testing

test.py loads network graph and tensors from meta data and evalutes.

About

tensorflow implementation of Densely Connected Convolutional Networks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages