# Basic_CNNs_TensorFlow2 **Repository Path**: futureflsl/Basic_CNNs_TensorFlow2 ## Basic Information - **Project Name**: Basic_CNNs_TensorFlow2 - **Description**: A tensorflow2 implementation of some basic CNNs(MobileNetV1/V2/V3, EfficientNet, ResNeXt, InceptionV4, InceptionResNetV1/V2, SENet, SqueezeNet, DenseNet, ShuffleNetV2, ResNet). - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-09 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Basic_CNNs_TensorFlow2 A tensorflow2 implementation of some basic CNNs. ## Networks included: + MobileNet_V1 + MobileNet_V2 + [MobileNet_V3](https://github.com/calmisential/MobileNetV3_TensorFlow2) + [EfficientNet](https://github.com/calmisential/EfficientNet_TensorFlow2) + [ResNeXt](https://github.com/calmisential/ResNeXt_TensorFlow2) + [InceptionV4, InceptionResNetV1, InceptionResNetV2](https://github.com/calmisential/InceptionV4_TensorFlow2) + SE_ResNet_50, SE_ResNet_101, SE_ResNet_152, SE_ResNeXt_50, SE_ResNeXt_101 + SqueezeNet + [DenseNet](https://github.com/calmisential/DenseNet_TensorFlow2) + ShuffleNetV2 + [ResNet](https://github.com/calmisential/TensorFlow2.0_ResNet) ## Other networks For AlexNet and VGG, see : https://github.com/calmisential/TensorFlow2.0_Image_Classification
For InceptionV3, see : https://github.com/calmisential/TensorFlow2.0_InceptionV3
For ResNet, see : https://github.com/calmisential/TensorFlow2.0_ResNet ## Train 1. Requirements: + Python >= 3.6 + Tensorflow >= 2.2.0rc3 2. To train the network on your own dataset, you can put the dataset under the folder **original dataset**, and the directory should look like this: ``` |——original dataset |——class_name_0 |——class_name_1 |——class_name_2 |——class_name_3 ``` 3. Run the script **split_dataset.py** to split the raw dataset into train set, valid set and test set. The dataset directory will be like this: ``` |——dataset |——train |——class_name_1 |——class_name_2 ...... |——class_name_n |——valid |——class_name_1 |——class_name_2 ...... |——class_name_n |—-test |——class_name_1 |——class_name_2 ...... |——class_name_n ``` 4. Run **to_tfrecord.py** to generate tfrecord files. 5. Change the corresponding parameters in **config.py**. 6. Run **train.py** to start training.
If you want to train the *EfficientNet*, you should change the IMAGE_HEIGHT and IMAGE_WIDTH to *resolution* in the params, and then run **train.py** to start training. ## Evaluate Run **evaluate.py** to evaluate the model's performance on the test dataset. ## Different input image sizes for different neural networks
Type Neural Network Input Image Size (height * width)
MobileNet MobileNet_V1 (224 * 224)
MobileNet_V2 (224 * 224)
MobileNet_V3 (224 * 224)
EfficientNet EfficientNet(B0~B7) /
ResNeXt ResNeXt50 (224 * 224)
ResNeXt101 (224 * 224)
SEResNeXt SEResNeXt50 (224 * 224)
SEResNeXt101 (224 * 224)
Inception InceptionV4 (299 * 299)
Inception_ResNet_V1 (299 * 299)
Inception_ResNet_V2 (299 * 299)
SE_ResNet SE_ResNet_50 (224 * 224)
SE_ResNet_101 (224 * 224)
SE_ResNet_152 (224 * 224)
SqueezeNet SqueezeNet (224 * 224)
DenseNet DenseNet_121 (224 * 224)
DenseNet_169 (224 * 224)
DenseNet_201 (224 * 224)
DenseNet_269 (224 * 224)
ShuffleNetV2 ShuffleNetV2 (224 * 224)
ResNet ResNet_18 (224 * 224)
ResNet_34 (224 * 224)
ResNet_50 (224 * 224)
ResNet_101 (224 * 224)
ResNet_152 (224 * 224)
## References 1. MobileNet_V1: [Efficient Convolutional Neural Networks for Mobile Vision Applications](https://arxiv.org/abs/1704.04861) 2. MobileNet_V2: [Inverted Residuals and Linear Bottlenecks](https://arxiv.org/abs/1801.04381) 3. MobileNet_V3: [Searching for MobileNetV3](https://arxiv.org/abs/1905.02244) 4. EfficientNet: [EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks](https://arxiv.org/abs/1905.11946) 5. The official code of EfficientNet: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet 6. ResNeXt: [Aggregated Residual Transformations for Deep Neural Networks](https://arxiv.org/abs/1611.05431) 7. Inception_V4/Inception_ResNet_V1/Inception_ResNet_V2: [Inception-v4, Inception-ResNet and the Impact of Residual Connectionson Learning](https://arxiv.org/abs/1602.07261) 8. The official implementation of Inception_V4: https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_v4.py 9. The official implementation of Inception_ResNet_V2: https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_resnet_v2.py 10. SENet: [Squeeze-and-Excitation Networks](https://arxiv.org/abs/1709.01507) 11. SqueezeNet: [SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size](https://arxiv.org/abs/1602.07360) 12. DenseNet: [Densely Connected Convolutional Networks](https://arxiv.org/abs/1608.06993) 13. https://zhuanlan.zhihu.com/p/37189203 14. ShuffleNetV2: [ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design ](https://arxiv.org/abs/1807.11164) 15. https://zhuanlan.zhihu.com/p/48261931 16. ResNet: [Deep Residual Learning for Image Recognition](https://arxiv.org/abs/1512.03385)