将CNN中的完全连接层弄平后制作图像

时间:2019-07-19 10:44:31

标签: tensorflow machine-learning keras deep-learning

我正在使用此参考项目/论文https://feedforward.github.io/blog/depthmap-prediction-from-a-single/从2D图像预测深度估计。我无法理解在完全连接的层之后如何形成粗略深度图像(Coarse7)。

我正在使用大小为(576,172)的彩色输入图像

import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
from keras.models import Sequential, Model
from keras.applications import vgg16
from keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D, InputLayer,UpSampling2D
from keras.layers.normalization import BatchNormalization
import cv2

model=Sequential()

model.add(Conv2D(96,(11,11),strides=(4,4),input_shape=new_arr.shape,padding='same'))
# model.add(BatchNormalization())
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(256,(5,5),padding='same'))
# model.add(BatchNormalization())
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(384,(3,3),padding='same'))
# model.add(BatchNormalization())
model.add(Activation("relu"))
# model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(384,(3,3),padding='same'))
# model.add(BatchNormalization())
model.add(Activation("relu"))
# model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Dense(256))
# model.add(BatchNormalization())
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Flatten())
model.add(Dense(4096))
# model.add(BatchNormalization())
model.add(Activation("relu"))
model.add(Dropout(0.4))

# model.add(UpSampling2D(size=(2, 2)))
# model.add(Conv2D(128, 5, padding='same',activation='relu', kernel_initializer='glorot_normal'))

model.summary()
This the model summary
```Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_94 (Conv2D)           (None, 43, 144, 96)       34944     
_________________________________________________________________
activation_137 (Activation)  (None, 43, 144, 96)       0         
_________________________________________________________________
max_pooling2d_79 (MaxPooling (None, 21, 72, 96)        0         
_________________________________________________________________
conv2d_95 (Conv2D)           (None, 21, 72, 256)       614656    
_________________________________________________________________
activation_138 (Activation)  (None, 21, 72, 256)       0         
_________________________________________________________________
max_pooling2d_80 (MaxPooling (None, 10, 36, 256)       0         
_________________________________________________________________
conv2d_96 (Conv2D)           (None, 10, 36, 384)       885120    
_________________________________________________________________
activation_139 (Activation)  (None, 10, 36, 384)       0         
_________________________________________________________________
conv2d_97 (Conv2D)           (None, 10, 36, 384)       1327488   
_________________________________________________________________
activation_140 (Activation)  (None, 10, 36, 384)       0         
_________________________________________________________________
dense_44 (Dense)             (None, 10, 36, 256)       98560     
_________________________________________________________________
activation_141 (Activation)  (None, 10, 36, 256)       0         
_________________________________________________________________
max_pooling2d_81 (MaxPooling (None, 5, 18, 256)        0         
_________________________________________________________________
dropout_44 (Dropout)         (None, 5, 18, 256)        0         
_________________________________________________________________
flatten_14 (Flatten)         (None, 23040)             0         
_________________________________________________________________
dense_45 (Dense)             (None, 4096)              94375936  
_________________________________________________________________
activation_142 (Activation)  (None, 4096)              0         
_________________________________________________________________
dropout_45 (Dropout)         (None, 4096)              0         
=================================================================
Total params: 97,336,704
Trainable params: 97,336,704
Non-trainable params: 0

1 个答案:

答案 0 :(得分:0)

在使图像变平或密集后,可以使用keras.layers.Reshape将其重塑为图像大小。 不仅仅是将其上采样到您的输出大小。 https://www.tensorflow.org/api_docs/python/tf/keras/layers/Reshape

希望对您有帮助