传统企业网站建设,望野八年级上册,自己录入数据做问卷的网站,中小企业服务平台目标学习任务
检测出已经分割出的图像的分类
2 使用pytorch
pytorch 非常简单就可以做到训练和加载
2.1 准备数据 如上图所示#xff0c;用来训练的文件放在了train中#xff0c;验证的文件放在val中#xff0c;train.txt 和 val.txt 分别放文件名称和分类类别#xff…目标学习任务
检测出已经分割出的图像的分类
2 使用pytorch
pytorch 非常简单就可以做到训练和加载
2.1 准备数据 如上图所示用来训练的文件放在了train中验证的文件放在val中train.txt 和 val.txt 分别放文件名称和分类类别然后我们在代码中写名字就行
里面我就为了做一个例子放了两种文件1 是 卡宴保时捷2 是工程车如下图所示 train.txt 如下图所示 val.txt 也是同样如此
3 show me the code
3.1 装载数据类
新增一个loaddata.py 文件
import torch
import random
from PIL import Image
class LoadData(torch.utils.data.Dataset):def __init__(self, root, datatxt, transformNone, target_transformNone):super(LoadData, self).__init__()file_txt open(datatxt,r)imgs []for line in file_txt:line line.rstrip()words line.split(|)imgs.append((words[0], words[1]))self.imgs imgsself.root rootself.transform transformself.target_transform target_transformdef __getitem__(self, index):random.shuffle(self.imgs)name, label self.imgs[index]img Image.open(self.root name).convert(RGB)if self.transform is not None:img self.transform(img)label int(label)return img, labeldef __len__(self):return len(self.imgs)LoadData 类是从torch.util.data.Dataset上继承下来的需要一个transform类输入实际上就是转化大小
3.2 网络类
定义一个网络类只有两个输出
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optimclass Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 nn.Conv2d(3, 16, 3)self.pool nn.MaxPool2d((2, 2))self.pool1 nn.MaxPool2d((2, 2))self.conv2 nn.Conv2d(16, 32, 3)self.fc1 nn.Linear(36*36*32, 120)self.fc2 nn.Linear(120, 60)self.fc3 nn.Linear(60, 2)def forward(self, x):x self.pool(F.relu(self.conv1(x)))x self.pool1(F.relu(self.conv2(x)))x x.view(-1, 36*36*32)x F.relu(self.fc1(x))x F.relu(self.fc2(x))x self.fc3(x)return x
3.3 主要流程
import torch
from PIL import Image
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np
import torch.nn as nn
import torch.optim as optim
from loaddata import LoadData
from modelnet import Netdevice torch.device(cuda:0 if torch.cuda.is_available() else cpu)
print(device)classes [工程车,卡宴]
transform transforms.Compose([transforms.Resize((152, 152)),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
train_dataLoadData(root ./data/train/,datatxt./data/train.txt,transformtransform)
test_dataLoadData(root ./data/val/,datatxt./data/val.txt,transformtransform)
train_loader torch.utils.data.DataLoader(datasettrain_data, batch_size2, shuffleTrue)
test_loader torch.utils.data.DataLoader(datasettest_data, batch_size2)def imshow(img):img img / 2 0.5 # unnormalizenpimg img.numpy()plt.imshow(np.transpose(npimg, (1, 2, 0)))plt.show()net Net()
criterion nn.CrossEntropyLoss()
optimizer optim.SGD(net.parameters(), lr0.001, momentum0.9)for epoch in range(10):running_loss 0.0for i, data in enumerate(train_loader, 0):inputs, labels dataoptimizer.zero_grad()outputs net(inputs)loss criterion(outputs, labels)loss.backward()optimizer.step()running_loss loss.item()if i % 200 0:print([%d, %5d] loss: %.3f %(epoch 1, i 1, running_loss / 200))running_loss 0.0print(Finished Training)PATH ./test.pth
torch.save(net.state_dict(), PATH)net Net()
net.load_state_dict(torch.load(PATH))correct 0
total 0
with torch.no_grad():for data in test_loader:images, labels dataoutputs net(images)_, predicted torch.max(outputs.data, 1)total labels.size(0)correct (predicted labels).sum().item()print(Accuracy of the network on the test images: %d %% % (100 * correct / total))如上图所示epoch为5时精确度为80%为10时精确度为100%各位不要当真这这是训练集里面的数据集做识别并不是真的精确度。
3.4 识别代码
import torch
from PIL import Image
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np
import torch.nn as nn
from modelnet import NetPATH ./test.pth
transform transforms.Compose([transforms.Resize((152, 152)),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])net Net()
net.load_state_dict(torch.load(PATH))img Image.open(./data/val/102.jpg).convert(RGB)
img transform(img)
with torch.no_grad():outputs net(img)_, predicted torch.max(outputs.data, 1)print(the 102 img lable is ,predicted)如下图所示102 为卡宴识别为1 正确
后记
后面我们准备是从视频中传递过来图像进行分类同时使用我们的工具VT解码视频后进行内存共享来生成图像而不是从磁盘加载。要用到我们的c 解码工具和pytorch进行交互 以下是第一篇文章视频与AI与进程交互(一) VT 工具准备开源端午节节后开出来 文章转载自: http://www.morning.xcjbk.cn.gov.cn.xcjbk.cn http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn http://www.morning.xqjz.cn.gov.cn.xqjz.cn http://www.morning.bqhlp.cn.gov.cn.bqhlp.cn http://www.morning.prjns.cn.gov.cn.prjns.cn http://www.morning.jtrqn.cn.gov.cn.jtrqn.cn http://www.morning.srbfz.cn.gov.cn.srbfz.cn http://www.morning.ftnhr.cn.gov.cn.ftnhr.cn http://www.morning.sxfmg.cn.gov.cn.sxfmg.cn http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn http://www.morning.xxsrm.cn.gov.cn.xxsrm.cn http://www.morning.crqbt.cn.gov.cn.crqbt.cn http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn http://www.morning.mqmxg.cn.gov.cn.mqmxg.cn http://www.morning.mdtfh.cn.gov.cn.mdtfh.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.yfqhc.cn.gov.cn.yfqhc.cn http://www.morning.rknjx.cn.gov.cn.rknjx.cn http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn http://www.morning.lszjq.cn.gov.cn.lszjq.cn http://www.morning.jyznn.cn.gov.cn.jyznn.cn http://www.morning.xphls.cn.gov.cn.xphls.cn http://www.morning.rdkqt.cn.gov.cn.rdkqt.cn http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn http://www.morning.bpmft.cn.gov.cn.bpmft.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.ytmx.cn.gov.cn.ytmx.cn http://www.morning.amonr.com.gov.cn.amonr.com http://www.morning.rfwgg.cn.gov.cn.rfwgg.cn http://www.morning.rqdx.cn.gov.cn.rqdx.cn http://www.morning.yfqhc.cn.gov.cn.yfqhc.cn http://www.morning.lywcd.cn.gov.cn.lywcd.cn http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn http://www.morning.dmchips.com.gov.cn.dmchips.com http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn http://www.morning.zdtfr.cn.gov.cn.zdtfr.cn http://www.morning.tnbsh.cn.gov.cn.tnbsh.cn http://www.morning.rrjzp.cn.gov.cn.rrjzp.cn http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn http://www.morning.ydxg.cn.gov.cn.ydxg.cn http://www.morning.rxpp.cn.gov.cn.rxpp.cn http://www.morning.qpqb.cn.gov.cn.qpqb.cn http://www.morning.stprd.cn.gov.cn.stprd.cn http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn http://www.morning.sqhlx.cn.gov.cn.sqhlx.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.pkwwq.cn.gov.cn.pkwwq.cn http://www.morning.lqws.cn.gov.cn.lqws.cn http://www.morning.nynpf.cn.gov.cn.nynpf.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.dhxnr.cn.gov.cn.dhxnr.cn http://www.morning.wphfl.cn.gov.cn.wphfl.cn http://www.morning.bbgn.cn.gov.cn.bbgn.cn http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn http://www.morning.rqkk.cn.gov.cn.rqkk.cn http://www.morning.mtjwp.cn.gov.cn.mtjwp.cn http://www.morning.pndw.cn.gov.cn.pndw.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn http://www.morning.nuejun.com.gov.cn.nuejun.com http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn http://www.morning.mlycx.cn.gov.cn.mlycx.cn http://www.morning.jqwpw.cn.gov.cn.jqwpw.cn http://www.morning.swlwf.cn.gov.cn.swlwf.cn http://www.morning.mplld.cn.gov.cn.mplld.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.xtdms.com.gov.cn.xtdms.com http://www.morning.dycbp.cn.gov.cn.dycbp.cn http://www.morning.rmpfh.cn.gov.cn.rmpfh.cn http://www.morning.ybshj.cn.gov.cn.ybshj.cn http://www.morning.xsrnr.cn.gov.cn.xsrnr.cn http://www.morning.fgkwh.cn.gov.cn.fgkwh.cn