成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

pytorch+visdomCNN如何處理自建圖片數(shù)據(jù)集-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集”這篇文章吧。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),城固企業(yè)網(wǎng)站建設(shè),城固品牌網(wǎng)站建設(shè),網(wǎng)站定制,城固網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,城固網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

環(huán)境

系統(tǒng):win10

cpu:i7-6700HQ

gpu:gtx965m

python : 3.6

pytorch :0.3

數(shù)據(jù)下載

下載后解壓放到項(xiàng)目根目錄:

pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集 

數(shù)據(jù)集為用來分類 螞蟻和蜜蜂。有大約120個訓(xùn)練圖像,每個類有75個驗(yàn)證圖像。

數(shù)據(jù)導(dǎo)入

可以使用 torchvision.datasets.ImageFolder(root,transforms) 模塊 可以將 圖片轉(zhuǎn)換為 tensor。

先定義transform:

ata_transforms = {
  'train': transforms.Compose([
    # 隨機(jī)切成224x224 大小圖片 統(tǒng)一圖片格式
    transforms.RandomResizedCrop(224),
    # 圖像翻轉(zhuǎn)
    transforms.RandomHorizontalFlip(),
    # totensor 歸一化(0,255) >> (0,1)  normalize  channel=(channel-mean)/std
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
  ]),
  "val" : transforms.Compose([
    # 圖片大小縮放 統(tǒng)一圖片格式
    transforms.Resize(256),
    # 以中心裁剪
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
  ])
}

導(dǎo)入,加載數(shù)據(jù):

data_dir = './hymenoptera_data'
# trans data
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x]) for x in ['train', 'val']}
# load data
data_loaders = {x: DataLoader(image_datasets[x], batch_size=BATCH_SIZE, shuffle=True) for x in ['train', 'val']}

data_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}
class_names = image_datasets['train'].classes
print(data_sizes, class_names)

{'train': 244, 'val': 153} ['ants', 'bees']

訓(xùn)練集 244圖片 , 測試集153圖片 。

可視化部分圖片看看,由于visdom支持tensor輸入 ,不用換成numpy,直接用tensor計算即可 :

inputs, classes = next(iter(data_loaders['val']))

out = torchvision.utils.make_grid(inputs)
inp = torch.transpose(out, 0, 2)
mean = torch.FloatTensor([0.485, 0.456, 0.406])
std = torch.FloatTensor([0.229, 0.224, 0.225])
inp = std * inp + mean
inp = torch.transpose(inp, 0, 2)
viz.images(inp)

pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集

創(chuàng)建CNN

net 根據(jù)上一篇的處理cifar10的改了一下規(guī)格:

class CNN(nn.Module):
  def __init__(self, in_dim, n_class):
    super(CNN, self).__init__()
    self.cnn = nn.Sequential(
      nn.BatchNorm2d(in_dim),
      nn.ReLU(True),
      nn.Conv2d(in_dim, 16, 7), # 224 >> 218
      nn.BatchNorm2d(16),
      nn.ReLU(inplace=True),
      nn.MaxPool2d(2, 2), # 218 >> 109
      nn.ReLU(True),
      nn.Conv2d(16, 32, 5), # 105
      nn.BatchNorm2d(32),
      nn.ReLU(True),
      nn.Conv2d(32, 64, 5), # 101
      nn.BatchNorm2d(64),
      nn.ReLU(True),
      nn.Conv2d(64, 64, 3, 1, 1),
      nn.BatchNorm2d(64),
      nn.ReLU(True),
      nn.MaxPool2d(2, 2), # 101 >> 50
      nn.Conv2d(64, 128, 3, 1, 1), #
      nn.BatchNorm2d(128),
      nn.ReLU(True),
      nn.MaxPool2d(3), # 50 >> 16
    )
    self.fc = nn.Sequential(
      nn.Linear(128*16*16, 120),
      nn.BatchNorm1d(120),
      nn.ReLU(True),
      nn.Linear(120, n_class))
  def forward(self, x):
    out = self.cnn(x)
    out = self.fc(out.view(-1, 128*16*16))
    return out

# 輸入3層rgb ,輸出 分類 2    
model = CNN(3, 2)

loss,優(yōu)化函數(shù):

line = viz.line(Y=np.arange(10))
loss_f = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=LR, momentum=0.9)
scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=7, gamma=0.1)

參數(shù):

BATCH_SIZE = 4
LR = 0.001
EPOCHS = 10

運(yùn)行 10個 epoch 看看:

[9/10] train_loss:0.650|train_acc:0.639|test_loss:0.621|test_acc0.706
[10/10] train_loss:0.645|train_acc:0.627|test_loss:0.654|test_acc0.686
Training complete in 1m 16s
Best val Acc: 0.712418

pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集

運(yùn)行 20個看看:

[19/20] train_loss:0.592|train_acc:0.701|test_loss:0.563|test_acc0.712
[20/20] train_loss:0.564|train_acc:0.721|test_loss:0.571|test_acc0.706
Training complete in 2m 30s
Best val Acc: 0.745098

pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集

準(zhǔn)確率比較低:只有74.5%

我們使用models 里的 resnet18 運(yùn)行 10個epoch:

model = torchvision.models.resnet18(True)
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 2)

[9/10] train_loss:0.621|train_acc:0.652|test_loss:0.588|test_acc0.667
[10/10] train_loss:0.610|train_acc:0.680|test_loss:0.561|test_acc0.667
Training complete in 1m 24s
Best val Acc: 0.686275

效果也很一般,想要短時間內(nèi)就訓(xùn)練出效果很好的models,我們可以下載訓(xùn)練好的state,在此基礎(chǔ)上訓(xùn)練:

model = torchvision.models.resnet18(pretrained=True)
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 2)

[9/10] train_loss:0.308|train_acc:0.877|test_loss:0.160|test_acc0.941
[10/10] train_loss:0.267|train_acc:0.885|test_loss:0.148|test_acc0.954
Training complete in 1m 25s
Best val Acc: 0.954248

10個epoch直接的到95%的準(zhǔn)確率。

pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集

以上是“pytorch + visdom CNN如何處理自建圖片數(shù)據(jù)集”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁標(biāo)題:pytorch+visdomCNN如何處理自建圖片數(shù)據(jù)集-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article30/dcgiso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計公司網(wǎng)站排名、移動網(wǎng)站建設(shè)微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
永寿县| 普格县| 剑河县| 古丈县| 江津市| 浏阳市| 古丈县| 安溪县| 湖州市| 延吉市| 平泉县| 旺苍县| 宜城市| 屏东县| 临澧县| 宁强县| 卓资县| 阳山县| 抚宁县| 汝阳县| 呈贡县| 探索| 绥芬河市| 桐梓县| 会泽县| 佛坪县| 名山县| 江达县| 黑水县| 齐河县| 申扎县| 江口县| 三穗县| 罗江县| 枣阳市| 汝南县| 玉山县| 鄂尔多斯市| 南昌县| 固阳县| 梁平县|