# 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) |