• Stars
    star
    515
  • Rank 85,879 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created about 5 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tensorflow2 implementation of some basic CNNs(MobileNetV1/V2/V3, EfficientNet, ResNeXt, InceptionV4, InceptionResNetV1/V2, SENet, SqueezeNet, DenseNet, ShuffleNetV2, ResNet).

Basic_CNNs_TensorFlow2

A tensorflow2 implementation of some basic CNNs.

Networks included:

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.9
  • Tensorflow >= 2.7.0
  • tensorflow-addons >= 0.15.0
  1. 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
  1. 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
  1. Run to_tfrecord.py to generate tfrecord files.
  2. Change the corresponding parameters in config.py.
  3. Run show_model_list.py to get the index of model.
  4. Run python train.py --idx [index] to start training.
    If you want to train the EfficientNet, you should change the IMAGE_HEIGHT and IMAGE_WIDTH before training.
  • b0 = (224, 224)
  • b1 = (240, 240)
  • b2 = (260, 260)
  • b3 = (300, 300)
  • b4 = (380, 380)
  • b5 = (456, 456)
  • b6 = (528, 528)
  • b7 = (600, 600)

Evaluate

Run python evaluate.py --idx [index] 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
  2. MobileNet_V2: Inverted Residuals and Linear Bottlenecks
  3. MobileNet_V3: Searching for MobileNetV3
  4. EfficientNet: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
  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
  7. Inception_V4/Inception_ResNet_V1/Inception_ResNet_V2: Inception-v4, Inception-ResNet and the Impact of Residual Connectionson Learning
  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
  11. SqueezeNet: SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size
  12. DenseNet: Densely Connected Convolutional Networks
  13. https://zhuanlan.zhihu.com/p/37189203
  14. ShuffleNetV2: ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
  15. https://zhuanlan.zhihu.com/p/48261931
  16. ResNet: Deep Residual Learning for Image Recognition
  17. RegNet: Designing Network Design Spaces

More Repositories

1

TensorFlow2.0_ResNet

A ResNet(ResNet18, ResNet34, ResNet50, ResNet101, ResNet152) implementation using TensorFlow-2.0.
Python
291
star
2

YOLOv3_TensorFlow2

基于TensorFlow2.x实现的YOLOv3,支持在自定义数据集上训练,支持保存为TFLite模型。A tensorflow2 implementation of YOLO_V3(Supports training on custom dataset and saving as tflite models.).
Python
103
star
3

TensorFlow2.0_SSD

A tensorflow_2.0 implementation of SSD (Single Shot MultiBox Detector) .
Python
82
star
4

TensorFlow2.0_Image_Classification

A TensorFlow_2.0 implementation of AlexNet and VGGNet.
Python
39
star
5

MobileNetV3_TensorFlow2

A tensorflow2 implementation of MobileNet-V3.
Python
37
star
6

EfficientNet_TensorFlow2

A tensorflow2 implementation of EfficientNet.
Python
30
star
7

TensorFlow2.0_InceptionV3

A TensorFlow_2.0 implementation of InceptionV3.
Python
30
star
8

CenterNet_TensorFlow2

A tensorflow2.x implementation of CenterNet.
Python
21
star
9

ResNeXt_TensorFlow2

A tensorflow2 implementation of ResNeXt(ResNeXt50, ResNeXt101).
Python
17
star
10

InceptionV4_TensorFlow2

A tensorflow2 implementation of Inception_V4, Inception_ResNet_V1 and Inception_ResNet_V2.
Python
17
star
11

HRNet_Pose_Estimation_TensorFlow2

A tensorflow2 implementation of HRNet for human pose estimation.
Python
13
star
12

EfficientDet_TensorFlow2

A tensorflow2.x implementation of EfficientDet: Scalable and Efficient Object Detection.
Python
11
star
13

ComputerVision.pytorch

计算机视觉
Python
8
star
14

YOLOv4_PyTorch

A PyTorch implementation of YOLOv4.
Python
7
star
15

CRNN_TensorFlow2

A tensorflow2 implementation of CRNN(Convolutional Recurrent Neural Network).
Python
6
star
16

DenseNet_TensorFlow2

A tensorflow2 implementation of DenseNet (including DenseNet121, DenseNet169, DenseNet201, DenseNet269).
Python
6
star
17

DeepLearning.pytorch

深度学习算法
Python
6
star
18

PyTorch_Object_Detection

SkeNetch is a deep learning tool based on PyTorch.
Python
5
star
19

My_Leetcode_Solutions

LeetCode solutions in Python, JavaScript and so on.
Java
1
star
20

Segmentation.pytorch

Python
1
star