cv2로 .pb 파일의 레이어를 확인할 수 있다.
import cv2
net = cv2.dnn.readNetFromTensorflow('path_to.pb')
layersNames = net.getLayerNames()
print(layersNames)
다음은 frozen_east_text_detection.pb를 확인한 결과이다.
['resnet_v1_50/conv1/Conv2D',
'resnet_v1_50/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/conv1/Relu',
'resnet_v1_50/pool1/MaxPool',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block1/unit_1/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_1/bottleneck_v1/shortcut/Conv2D',
'resnet_v1_50/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_1/bottleneck_v1/add',
'resnet_v1_50/block1/unit_1/bottleneck_v1/Relu',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block1/unit_2/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_2/bottleneck_v1/add',
'resnet_v1_50/block1/unit_2/bottleneck_v1/Relu',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block1/unit_3/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block1/unit_3/bottleneck_v1/shortcut/MaxPool',
'resnet_v1_50/block1/unit_3/bottleneck_v1/add',
'resnet_v1_50/block1/unit_3/bottleneck_v1/Relu',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block2/unit_1/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_1/bottleneck_v1/shortcut/Conv2D',
'resnet_v1_50/block2/unit_1/bottleneck_v1/shortcut/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_1/bottleneck_v1/add',
'resnet_v1_50/block2/unit_1/bottleneck_v1/Relu',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block2/unit_2/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_2/bottleneck_v1/add',
'resnet_v1_50/block2/unit_2/bottleneck_v1/Relu',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block2/unit_3/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_3/bottleneck_v1/add',
'resnet_v1_50/block2/unit_3/bottleneck_v1/Relu',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block2/unit_4/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block2/unit_4/bottleneck_v1/shortcut/MaxPool',
'resnet_v1_50/block2/unit_4/bottleneck_v1/add',
'resnet_v1_50/block2/unit_4/bottleneck_v1/Relu',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block3/unit_1/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block3/unit_1/bottleneck_v1/shortcut/Conv2D',
'resnet_v1_50/block3/unit_1/bottleneck_v1/shortcut/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block3/unit_1/bottleneck_v1/add',
'resnet_v1_50/block3/unit_1/bottleneck_v1/Relu',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv1/Conv2D',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv2/Conv2D',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv2/Relu',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv3/Conv2D',
'resnet_v1_50/block3/unit_2/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block3/unit_2/bottleneck_v1/add',
'resnet_v1_50/block3/unit_2/bottleneck_v1/Relu',
'resnet_v1_50/block3/unit_3/bottleneck_v1/conv1/Conv2D', 'resnet_v1_50/block3/unit_3/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_3/bottleneck_v1/conv1/Relu', 'resnet_v1_50/block3/unit_3/bottleneck_v1/conv2/Conv2D', 'resnet_v1_50/block3/unit_3/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_3/bottleneck_v1/conv2/Relu', 'resnet_v1_50/block3/unit_3/bottleneck_v1/conv3/Conv2D', 'resnet_v1_50/block3/unit_3/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_3/bottleneck_v1/add', 'resnet_v1_50/block3/unit_3/bottleneck_v1/Relu', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv1/Conv2D', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv1/Relu', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv2/Conv2D', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv2/Relu', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv3/Conv2D', 'resnet_v1_50/block3/unit_4/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_4/bottleneck_v1/add', 'resnet_v1_50/block3/unit_4/bottleneck_v1/Relu', 'resnet_v1_50/block3/unit_5/bottleneck_v1/conv1/Conv2D', 'resnet_v1_50/block3/unit_5/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_5/bottleneck_v1/conv1/Relu',
'resnet_v1_50/block3/unit_5/bottleneck_v1/conv2/Conv2D', 'resnet_v1_50/block3/unit_5/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_5/bottleneck_v1/conv2/Relu', 'resnet_v1_50/block3/unit_5/bottleneck_v1/conv3/Conv2D', 'resnet_v1_50/block3/unit_5/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_5/bottleneck_v1/add', 'resnet_v1_50/block3/unit_5/bottleneck_v1/Relu', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv1/Conv2D', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv1/Relu', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv2/Conv2D', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv2/Relu', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv3/Conv2D', 'resnet_v1_50/block3/unit_6/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block3/unit_6/bottleneck_v1/shortcut/MaxPool', 'resnet_v1_50/block3/unit_6/bottleneck_v1/add', 'resnet_v1_50/block3/unit_6/bottleneck_v1/Relu', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv1/Conv2D', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv1/Relu', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv2/Conv2D', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv2/Relu', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv3/Conv2D', 'resnet_v1_50/block4/unit_1/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_1/bottleneck_v1/shortcut/Conv2D', 'resnet_v1_50/block4/unit_1/bottleneck_v1/shortcut/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_1/bottleneck_v1/add', 'resnet_v1_50/block4/unit_1/bottleneck_v1/Relu', 'resnet_v1_50/block4/unit_2/bottleneck_v1/conv1/Conv2D', 'resnet_v1_50/block4/unit_2/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_2/bottleneck_v1/conv1/Relu', 'resnet_v1_50/block4/unit_2/bottleneck_v1/conv2/Conv2D', 'resnet_v1_50/block4/unit_2/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm',
'resnet_v1_50/block4/unit_2/bottleneck_v1/conv2/Relu', 'resnet_v1_50/block4/unit_2/bottleneck_v1/conv3/Conv2D', 'resnet_v1_50/block4/unit_2/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_2/bottleneck_v1/add', 'resnet_v1_50/block4/unit_2/bottleneck_v1/Relu', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv1/Conv2D', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv1/Relu', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv2/Conv2D', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv2/Relu', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv3/Conv2D', 'resnet_v1_50/block4/unit_3/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm', 'resnet_v1_50/block4/unit_3/bottleneck_v1/add', 'resnet_v1_50/block4/unit_3/bottleneck_v1/Relu', 'feature_fusion/ResizeBilinear', 'feature_fusion/concat', 'feature_fusion/Conv/Conv2D', 'feature_fusion/Conv/BatchNorm/FusedBatchNorm', 'feature_fusion/Conv/Relu', 'feature_fusion/Conv_1/Conv2D', 'feature_fusion/Conv_1/BatchNorm/FusedBatchNorm', 'feature_fusion/Conv_1/Relu', 'feature_fusion/ResizeBilinear_1', 'feature_fusion/concat_1', 'feature_fusion/Conv_2/Conv2D', 'feature_fusion/Conv_2/BatchNorm/FusedBatchNorm', 'feature_fusion/Conv_2/Relu', 'feature_fusion/Conv_3/Conv2D', 'feature_fusion/Conv_3/BatchNorm/FusedBatchNorm', 'feature_fusion/Conv_3/Relu', 'feature_fusion/ResizeBilinear_2', 'feature_fusion/concat_2', 'feature_fusion/Conv_4/Conv2D', 'feature_fusion/Conv_4/BatchNorm/FusedBatchNorm', 'feature_fusion/Conv_4/Relu', 'feature_fusion/Conv_5/Conv2D', 'feature_fusion/Conv_5/BatchNorm/FusedBatchNorm', 'feature_fusion/Conv_5/Relu', 'feature_fusion/Conv_6/Conv2D', 'feature_fusion/Conv_6/BatchNorm/FusedBatchNorm', 'feature_fusion/Conv_6/Relu', 'feature_fusion/Conv_9/Conv2D', 'feature_fusion/Conv_9/Sigmoid', 'feature_fusion/sub', 'feature_fusion/mul_7', 'feature_fusion/Conv_8/Conv2D', 'feature_fusion/Conv_8/Sigmoid', 'feature_fusion/mul_6',
'feature_fusion/concat_3',
'feature_fusion/Conv_7/Conv2D',
'feature_fusion/Conv_7/Sigmoid']
Image Download with urllib.request (0) | 2021.06.29 |
---|---|
Inspecting Pretrained Tensorflow model (0) | 2021.06.10 |
Deep Learning Book (0) | 2021.06.10 |
파이토치 기본예제 손코딩하기 (0) | 2021.06.09 |
1. Tensors (0) | 2021.06.07 |