我正在使用沿caffe(CNN)库('bvlc_reference_caffenet.caffemodel')提供的预训练imagenet模型.我可以使用此模型为任何图像输出1000暗淡的对象分数向量.
但是我不知道实际的对象类别是什么.有人找到了一个文件,列出了相应的对象类别吗?
machine-learning neural-network deep-learning caffe matcaffe
我正在检查pascal voc 2012 dataset 的真实分割掩码。这些是单通道 8 位 uint png 文件。但是,当我在文件浏览器 (nautilus) 或图像查看器 (eog) 中打开这些图像时,它们会以颜色显示。
不应该以灰度显示吗?
当我使用 Matlab 将图像存储为单通道 8 位 uint png 文件时,它按预期以灰度显示。不同类型的 png 文件有什么区别?
我如何存储它以便我的图像查看器以颜色显示它们?
如何在训练期间在验证数据上测试我的 pytorch 模型?我知道有一个函数myNet.eval()可以明显地切换任何 dropout 层,但它是否也阻止了梯度的累积?
另外,我将如何撤消myNet.eval()命令以继续进行培训?
如果有人有一些代码片段/玩具示例,我将不胜感激!
在我的Caffe中,'train.prototxt'我正在进行一些输入数据转换,如下所示:
transform_param {
mirror: true
crop_size: 321
mean_value: 104 # Red ?
mean_value: 116 # Blue ?
mean_value: 122 # Green ?
}
Run Code Online (Sandbox Code Playgroud)
现在我想存储输入图像的修改版本,以便将某些图像区域设置为这些平均值.理性的是,在平均减法期间将那些区域设置为0.但是我不知道caffe在这样的prototxt文件中期望的通道顺序是什么,我也无法在caffe代码中查找它.
现在有人确定上面给出的3个值是RGB还是BGR顺序?
(我不确定因为caffe在内部使用opencv,它以不寻常的BGR格式存储图像)
machine-learning computer-vision neural-network deep-learning caffe
我需要读取二进制文件,该文件由19个float32数字组成,后跟一个未知数量的uint32数字。我如何在python中读取这样的文件?
在Matlab中,等效项如下所示:
fid = fopen('myFile.bin','r');
params = fread(fid,19,'float');
data = fread(fid,'uint32');
fclose(fid);
Run Code Online (Sandbox Code Playgroud) 有人可以提供一个关于如何在 pytorch 中为语义分割计算 IoU(联合交叉)的玩具示例吗?
我正在尝试重塑caffemodel的卷积层的大小(这是这个问题的后续问题).虽然有一个关于如何进行网络手术的教程,但它只展示了如何将体重参数从一个caffemodel复制到另一个相同大小的caffemodel.
相反,我需要在我的卷积滤镜中添加一个新通道(全0),以便将其大小从当前(64x 3x 3x 3)更改为(64x 4x 3x 3).
假设卷积层被调用'conv1'.这是我到目前为止所尝试的:
# Load the original network and extract the fully connected layers' parameters.
net = caffe.Net('../models/train.prototxt',
'../models/train.caffemodel',
caffe.TRAIN)
Run Code Online (Sandbox Code Playgroud)
现在我可以执行此操作:
net.blobs['conv1'].reshape(64,4,3,3);
net.save('myNewTrainModel.caffemodel');
Run Code Online (Sandbox Code Playgroud)
但保存的模型似乎没有改变.我已经读过卷积的实际权重存储而net.params['conv1'][0].data不是存在,net.blobs但我无法弄清楚如何重塑net.params对象.有没有人有想法?
我想将图像标准化添加到现有的 pytorch 模型中,这样我就不必再标准化输入图像了。
假设我有一个现有模型
model = torch.hub.load('pytorch/vision:v0.6.0', 'mobilenet_v2', pretrained=True)
model.eval()
Run Code Online (Sandbox Code Playgroud)
现在我可以使用 torch.nn.Sequential 添加新层(例如 relu):
new_model = nn.Sequential(
model,
nn.ReLU()
)
Run Code Online (Sandbox Code Playgroud)
然而,我找不到一个层来根据 numpy 中所示的输入标准化所需执行除法或减法:
import cv2
import numpy as np
img = cv2.imread("my_img.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = img.astype(np.float32)
mean = np.array([0.485, 0.456, 0.406], dtype=np.float32)
std = np.array([0.229, 0.224, 0.225], dtype=np.float32)
img = img / 255.0
img = img - mean
img = img / std
img = np.transpose(img, (2, 0, 1))
img = np.expand_dims(img, axis=0)
Run Code Online (Sandbox Code Playgroud)
目标是归一化最终在 GPU 上完成,以节省推理过程中的时间。另外,我无法使用 torchvision …
我正在绘制一列数据,表示 gnuplot 中的时间序列。每个值代表 500 次迭代/时间单位后的时间值。我可以告诉 gnuplot 将它显示的 x 值乘以 500 吗?
我认为这将是一个标准问题,因为每次必须绘制时间序列时,都需要告诉绘图程序每次迭代具有的时间单位。
我不想手动创建带有 x 值的额外列,因为我有很多不同长度的不同数据。我不想为每个人创建 ax 列。
我正在使用ascii文件读取文件名
with open('FilenamesAsciiFile.txt') as f:
content = f.readlines()
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试打开文件或检查它是否存在时,我收到一个错误:
filename = content[0]
print filename
print type(filename)
--> myFile.h5
--> <type 'str'>
import os.path
os.path.isfile(filename)
--> False
Run Code Online (Sandbox Code Playgroud)
当我对字符串进行硬编码时,一切正常
os.path.isfile('myFile.h5')
--> True
Run Code Online (Sandbox Code Playgroud)
字符串是该函数的错误输入类型吗?
我想从python中的numpy数组中写入一个单通道png图像?在Matlab中
A = randi(100,100,255)
imwrite(uint8(A),'myFilename.png','png');
Run Code Online (Sandbox Code Playgroud)
我看到了使用的pelpels from PIL import Image ,Image.fromarray()但是它们仅用于jpeg和3通道png。
我已经使用opencv找到了解决方案,我将在这里发布。希望它将缩短其他人的搜索...