所以我一直在使用这段代码。我正在尝试从COCO数据集中生成图像的原始蒙版。
dataDir='G:'
dataType='train2014'
annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType)
coco=COCO(annFile)
annFile = '{}/annotations/person_keypoints_{}.json'.format(dataDir,dataType)
coco_kps=COCO(annFile)
catIds = coco.getCatIds(catNms=['person'])
imgIds = coco.getImgIds(catIds=catIds );
imgIds = coco.getImgIds(imgIds = imgIds[0])
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]
I = io.imread('G:/train2014/'+img['file_name'])
plt.imshow(I); plt.axis('off')
annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
anns = coco.loadAnns(annIds)
coco.showAnns(anns)
Run Code Online (Sandbox Code Playgroud)
但是我得到的是这样的东西
但是我想要的是这样的
如何获得针对每个图像的原始蒙版?
python image-processing computer-vision image-segmentation tensorflow
我正在执行图像分割任务,并且我使用的数据集只有基本事实但没有边界框或多边形。
我有 2 个类(忽略 0 作为背景)并且输出和地面实况标签在一个数组中
预测---/---标签
0|0|0|1|2 0|0|0|1|2
0|2|1|0|0 0|2|1|0|0
0|0|1|1|1 0|0|1|1|1
0|0|0|0|1 0|0|0|0|1
我如何从这些计算 IoU?
PS:我使用 python3 和 pytorch api
我正在做一个图像分割任务。总共有 7 个类,所以最终输出是一个像 [batch, 7, height, width] 这样的张量,它是一个 softmax 输出。现在直觉上我想使用 CrossEntropy 损失,但 pytorch 实现不适用于通道明智的单热编码向量
所以我打算自己做一个功能。在一些 stackoverflow 的帮助下,我的代码到目前为止看起来像这样
from torch.autograd import Variable
import torch
import torch.nn.functional as F
def cross_entropy2d(input, target, weight=None, size_average=True):
# input: (n, c, w, z), target: (n, w, z)
n, c, w, z = input.size()
# log_p: (n, c, w, z)
log_p = F.log_softmax(input, dim=1)
# log_p: (n*w*z, c)
log_p = log_p.permute(0, 3, 2, 1).contiguous().view(-1, c) # make class dimension last dimension
log_p = log_p[
target.view(n, w, …Run Code Online (Sandbox Code Playgroud) image-segmentation cross-entropy pytorch loss-function semantic-segmentation
以下是我的代码的一小段。使用它,我可以在 cityscapes 数据集上训练我的名为“lolnet”的模型。但是数据集包含 35 个类/标签 [0-34]。
imports ***
trainloader = torch.utils.data.DataLoader(
datasets.Cityscapes('/media/farshid/DataStore/temp/cityscapes/', split='train', mode='fine',
target_type='semantic', target_transform =trans,
transform=input_transform ), batch_size = batch_size, num_workers = 2)
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
net = lolNet()
criterion = CrossEntropyLoss2d()
net.to(device)
num_of_classes = 34
for epoch in range(int(0), 200000):
lr = 0.0001
for batch, data in enumerate(trainloader, 0):
inputs, labels = data
labels = labels.long()
inputs, labels = inputs.to(device), labels.to(device)
labels = labels.view([-1, ])
optimizer = optim.Adam(net.parameters(), lr=lr)
optimizer.zero_grad()
outputs = net(inputs) …Run Code Online (Sandbox Code Playgroud) 我已经通过这个 pytorch api 通过设置 download=True 下载了 ImageNet 数据集。但我无法遍历数据加载器。
错误说“'DataLoader' 对象不支持索引”
trainset = torch.utils.data.DataLoader(
datasets.ImageNet('/media/farshid/DataStore/temp/Imagenet/', split='train',
download=False))
trainloader = torch.utils.data.DataLoader(trainset, batch_size=1, shuffle=False, num_workers=1)
Run Code Online (Sandbox Code Playgroud)
我尝试了一种简单的方法,我只是尝试运行以下命令,
trainloader[0]
Run Code Online (Sandbox Code Playgroud)
在根目录中,模式是
root/
train/
n01440764/
n01443537/
n01443537_2.jpg
Run Code Online (Sandbox Code Playgroud)
官网上的文档没有说别的。https://pytorch.org/docs/stable/torchvision/datasets.html#imagenet
我究竟做错了什么 ?
我想在pytorch中实现以下距离损失功能。我正在关注pytorch论坛上的https://discuss.pytorch.org/t/custom-loss-functions/29387/4主题
np.linalg.norm(output - target)
# where output.shape = [1, 2] and target.shape = [1, 2]
Run Code Online (Sandbox Code Playgroud)
所以我实现了这样的损失功能
def my_loss(output, target):
loss = torch.tensor(np.linalg.norm(output.detach().numpy() - target.detach().numpy()))
return loss
Run Code Online (Sandbox Code Playgroud)
使用此损失函数,向后调用会产生运行时错误
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
Run Code Online (Sandbox Code Playgroud)
我的整个代码看起来像这样
model = nn.Linear(2, 2)
x = torch.randn(1, 2)
target = torch.randn(1, 2)
output = model(x)
loss = my_loss(output, target)
loss.backward() <----- Error here
print(model.weight.grad)
Run Code Online (Sandbox Code Playgroud)
PS:我知道pytorch是成对丢失的,但是由于它的某些限制,我必须自己实现。
按照pytorch源代码,我尝试了以下操作,
class my_function(torch.nn.Module): # forgot to define backward()
def forward(self, …Run Code Online (Sandbox Code Playgroud)