标签: conv-neural-network

1
推荐指数
1
解决办法
2924
查看次数

YOLO 和调整自定义数据集的锚框数量

我正在致力于实现 YOLO v2 和 3,以在自定义数据集上进行对象检测。虽然 YOLO v2 和 3 使用 5 个左右的锚框,但我通常每个图像可能有 50-100 次检测。我的感觉是,如果只有 5 个锚框,那么每个图像最多有 5 个检测,对吧?所以我试图了解是否需要调整我的数据集的锚框数量。

我的问题是,锚框的数量是否需要大于任何训练图像中边界框的最大数量?这样,我就永远不会遇到没有相应锚框的检测。这是改编 YOLO 的正确思考方式吗?

如果我的直觉是正确的,那么我需要使用 k 均值来对地面实况图像中的边界框进行聚类并设置锚框坐标。然后我将使用本博客文章中指定的常用回归方法。

感谢任何人都可以提供的帮助。

object-detection conv-neural-network keras tensorflow yolo

1
推荐指数
1
解决办法
6732
查看次数

Pytorch:修改 VGG16 架构

我目前正在尝试修改 VGG16 网络架构,以便它能够接受 400x400 像素的图像。

\n\n

根据我读过的文献,方法是将全连接(FC)层转换为卷积(CONV)层。这本质上“允许网络在更大的输入图像上有效地 \xe2\x80\x9cslide\xe2\x80\x9d 并对图像的不同部分进行多次评估,合并所有可用的上下文信息。” 然后,使用平均池层“将多个特征向量平均为总结输入图像的单个特征向量”。

\n\n

我已经使用此函数完成了此操作,并提出了以下网络架构:

\n\n
----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1         [-1, 64, 400, 400]           1,792\n              ReLU-2         [-1, 64, 400, 400]               0\n            Conv2d-3         [-1, 64, 400, 400]          36,928\n              ReLU-4         [-1, 64, 400, 400]               0\n         MaxPool2d-5         [-1, 64, 200, 200]               0\n            Conv2d-6        [-1, 128, 200, 200]          73,856\n              ReLU-7        [-1, 128, 200, 200]               0\n            Conv2d-8        [-1, 128, 200, 200]         147,584\n              ReLU-9        [-1, 128, 200, 200]               0\n        MaxPool2d-10        [-1, 128, 100, …
Run Code Online (Sandbox Code Playgroud)

computer-vision conv-neural-network pytorch vgg-net

1
推荐指数
1
解决办法
3595
查看次数

TimeDistributed Layers 与 ConvLSTM-2D

谁能帮我解释一下时间分布式层(来自Keras Wrapper)和 ConvLSTM-2D (卷积 LSTM)之间的差异,目的、用法等?

deep-learning conv-neural-network lstm keras

1
推荐指数
1
解决办法
788
查看次数

如何在 pytorch 中更改输入图片的尺寸?

我制作了一个卷积神经网络,我希望它获取输入图片和输出图片,但是当我将图片转换为张量时,它们的尺寸错误:

RuntimeError: Expected 4-dimensional input for 4-dimensional weight [20, 3, 5, 5], but got 3-dimensional input of size [900, 1440, 3] instead 
Run Code Online (Sandbox Code Playgroud)

如何更改图片的尺寸?为什么需要改变?以及如何将输出变成图片?我尝试使用

transform = transforms.Compose(
[transforms.ToTensor(),
 transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
Run Code Online (Sandbox Code Playgroud)

使 img 标准化,但没有改变尺寸。这是我的神经网络

    def __init__(self):
    super(Net, self).__init__()
    torch.nn.Module.dump_patches = True
    self.conv1 = nn.Conv2d(3, 20, 5)
    self.pool = nn.MaxPool2d(2, 2)
    self.conv2 = nn.Conv2d(20, 16, 5)
    self.fc1 = nn.Linear(16*5*5, 120)
    self.fc2 = nn.Linear(120, 84)
    self.fc3 = nn.Linear(84, 16*5*5)


def forward(self, x):
    x = self.pool(F.relu(self.conv1(x)))
    x = self.pool(F.relu(self.conv2(x)))
    x = …
Run Code Online (Sandbox Code Playgroud)

multidimensional-array python-imaging-library python-3.x conv-neural-network pytorch

1
推荐指数
1
解决办法
9910
查看次数

如何在自定义 Keras 模型中使用 BatchNormalization 层

我目前正在学习在我的项目中使用 Tensorflow-2.0。我想使用卷积神经网络(CNN)来完成一个语义分割任务,并在编码时发现一个奇怪的错误。

首先,构建了一个简单的模型并且运行良好。

X_train,y_train = load_data()

input = tf.keras.layers.Input((512,512,7))
c1 = tf.keras.layers.Conv2D(64,3,padding='same',activation='relu')(input)
c1 = tf.keras.layers.BatchNormalization()(c1)
c1 = tf.keras.layers.Conv2D(64,3,padding='same',activation='relu')(c1)
c1 = tf.keras.layers.BatchNormalization()(c1)
c1 = tf.keras.layers.Conv2D(3,3,padding='same',activation='softmax')(c1)
model = tf.keras.models.Model(inputs=[input],outputs=[c1])

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001),
              loss=tf.keras.losses.sparse_categorical_crossentropy,
              metrics=['accuracy'])
results = model.fit(X_train,y_train,batch_size=8,epochs=1000)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用自定义 Keras 模型时,出现了一些错误:

class SequenceEECNN(tf.keras.Model):
    def __init__(self,n_class=3,width=32):
        super(SequenceEECNN,self).__init__(name='SequenceEECNN')
        self.n_class = n_class
        self.width = width
        self.c1 = tf.keras.layers.Conv2D(self.width, 3,activation='relu',padding='same')
        self.c2 = tf.keras.layers.Conv2D(self.width, 3, activation='relu',padding='same')
        self.out = tf.keras.layers.Conv2D(self.n_class,3,activation='softmax',padding='same')

    def call(self, inputs):
        x = self.c1(inputs)
        x = tf.keras.layers.BatchNormalization()(x)
        x = self.c2(x)
        x = tf.keras.layers.BatchNormalization()(x)
        return self.out(x)

X_train,y_train = load_data()

model …
Run Code Online (Sandbox Code Playgroud)

python conv-neural-network keras tensorflow2.0

1
推荐指数
1
解决办法
3541
查看次数

PyTorch:使用 torch.nn.Conv2d 对单通道图像进行卷积

我正在尝试使用卷积层对灰度(单层)图像(存储为 numpy 数组)进行卷积。这是代码:

conv1 = torch.nn.Conv2d(in_channels = 1, out_channels = 1, kernel_size = 33)
tensor1 = torch.from_numpy(img_gray)
out_2d_np = conv1(tensor1)

out_2d_np = np.asarray(out_2d_np)
Run Code Online (Sandbox Code Playgroud)

我希望我的内核为 33x33,并且输出层的数量应等于输入层的数量,当图像的 RGB 通道相加时,输入层的数量为 1。运行时out_2d_np = conv1(tensor1)会产生以下运行时错误:

RuntimeError: 预期 4 维输入为 4 维权重 1 1 33 33,但得到了大小为 [246, 248] 的 2 维输入

我知道如何解决这个问题吗?我特别想使用torch.nn.Conv2d()类/函数。

预先感谢您的任何帮助!

convolution conv-neural-network pytorch tensor

1
推荐指数
1
解决办法
4774
查看次数

错误:keras.backend 没有属性“set_image_dim_ordering”

当尝试做的时候set_image_dim_ordering('th')

from keras import backend as K

K.set_image_dim_ordering('th')
Run Code Online (Sandbox Code Playgroud)

我遇到属性错误:

AttributeError: module 'keras.backend' has no attribute 'set_image_dim_ordering'
Run Code Online (Sandbox Code Playgroud)

python backend conv-neural-network keras

1
推荐指数
1
解决办法
9530
查看次数

Pytorch:CrossEntropyLoss 的多目标错误

所以我正在培训一名Conv。神经网络。以下是基本细节:

  • 原始标签 dim = torch.Size([64, 1])
  • 网络输出 dim = torch.Size([64, 2])
  • 损失类型 = nn.CrossEntropyLoss()
  • 错误= RuntimeError:/pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu:15 不支持多目标

我哪里错了..?

训练:

EPOCHS        = 5
LEARNING_RATE = 0.0001
BATCH_SIZE    = 64

net = Net().to(device)
optimizer = optim.Adam(net.parameters(), lr=LEARNING_RATE)

loss_log = []
loss_log = train(net, trainSet, loss_log, EPOCHS, LEARNING_RATE, BATCH_SIZE)
Run Code Online (Sandbox Code Playgroud)

火车功能:

def train(net, train_set, loss_log=[], EPOCHS=5, LEARNING_RATE=0.001, BATCH_SIZE=32):
  print('Initiating Training..')  
  loss_func = nn.CrossEntropyLoss()

  # Iteration Begins
  for epoch in tqdm(range(EPOCHS)):
    # Iterate over every sample in the batch
    for data in tqdm(trainSet, desc=f'Iteration > …
Run Code Online (Sandbox Code Playgroud)

python conv-neural-network cross-entropy pytorch google-colaboratory

1
推荐指数
1
解决办法
4969
查看次数

卷积层有多少个权值?

我有一个简单的卷积网络:

import torch.nn as nn 

class model(nn.Module):
def __init__(self, ks=1):
    super(model, self).__init__()
    self.conv1 = nn.Conv2d(in_channels=4, out_channels=32, kernel_size=ks, stride=1)

    self.fc1 = nn.Linear(8*8*32*ks, 64)
    self.fc2 = nn.Linear(64, 64)

def forward(self, x):
    x = F.relu(self.conv1(x))
    x = x.view(x.size(0), -1)
    x = F.relu(self.fc1(x))
    x = self.fc2(x)
    return x

cnn = model(1)
Run Code Online (Sandbox Code Playgroud)

由于内核大小为1且输出通道为32,我假设32*1*1该层中应该有权重。但是,当我询问pytorch权重矩阵的形状时cnn.conv1.weight.shape,它返回torch.Size([32, 4, 1, 1])。为什么输入通道的数量会对conv2d层的权重产生影响?

我错过了什么吗?

python conv-neural-network pytorch

1
推荐指数
1
解决办法
1042
查看次数