2-5工控数据转化

我们使用大模型训练的数据,最终需要转化成工业生产,本内容涉及机器人控制及工业软件显示

 使用以太网通讯,注意将IP地址设置成本机地址:

import os import json import socket, threading, random import torch from PIL import Image from torchvision import transforms import matplotlib.pyplot as plt import time from vggtask import vgg import socket import tkinter as tk from tkinter import filedialog from PIL import Image, ImageTk def recv_data(new_socket): global teststr while True: new_socket.send(teststr.encode("utf-8")) time.sleep(0.5) # new_socket.close() def main(): global teststr socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) socket_server.bind(('192.168.132.2', 2000)) socket_server.listen(128) while True: try: new_socket, ip_port = socket_server.accept() except: pass else: a, b = ip_port print(f"连线成功,客户端IP:{a} 端口:{b}") t = threading.Thread(target=recv_data, args=(new_socket,)) t.start() print(" main is running !") time.sleep(1) device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") data_transform = transforms.Compose( [transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) # load image #自动打开路径 file_path = filedialog.askopenfilename(filetypes=[("Image files", "*.jpg;*.png")]) img_path = file_path #绝对路径 # img_path = "D:\\OpenAI\\vggandAlexnet\\flower_data\\val\\roses\\160954292_6c2b4fda65_n.jpg" assert os.path.exists(img_path), "file: '{}' dose not exist.".format(img_path) img = Image.open(img_path) plt.imshow(img) # [N, C, H, W] img = data_transform(img) # expand batch dimension #扩充一个维度,因为读入的图片只有高度,宽度和深度三个维度 img = torch.unsqueeze(img, dim=0) # read class_indict json_path = './class_indices.json' assert os.path.exists(json_path), "file: '{}' dose not exist.".format(json_path) json_file = open(json_path, "r") # 读取索引对应的类别名称,并解码,解成需要使用的字典 class_indict = json.load(json_file) # create model model = vgg(num_classes=5).to(device)#初始化网络 # load model weights weights_path = r'D:\111\yolov5\AlexNet.pth' assert os.path.exists(weights_path), "file: '{}' dose not exist.".format(weights_path) #载入网络模型 model.load_state_dict(torch.load(weights_path)) model.eval()#关闭dropout模式 with torch.no_grad():#pytorch不去跟踪变量的损失梯度 # predict class #数据经过正向传播得到输出,然后将输出进行压缩,将batch维度压缩掉 output = torch.squeeze(model(img.to(device))).cpu() #经softmax处理后变成一个概率分布 predict = torch.softmax(output, dim=0) #通过torch.argmax方法,获取概率最大处所对应的索引值 predict_cla = torch.argmax(predict).numpy() teststr = str(predict_cla) #但因类别名称,以及他所对应的类别概率 print_res = "class: {} prob: {:.3}".format(class_indict[str(predict_cla)], predict[predict_cla].numpy()) plt.title(print_res) for i in range(len(predict)): print("class: {:10} prob: {:.3}".format(class_indict[str(i)], predict[i].numpy())) plt.show() flower_dict = { "daisy": 0, "dandelion": 1, "roses": 2, "sunflowers": 3, "tulips": 4 } if __name__ == '__main__': teststr = "" main()

import os
import json
import socket, threading, random
import torch
from PIL import Image
from torchvision import transforms
import matplotlib.pyplot as plt
import time
from vggtask import vgg
import socket
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
def recv_data(new_socket):
    global teststr
    while True:
        new_socket.send(teststr.encode("utf-8"))
        time.sleep(0.5)
        # new_socket.close()
def main():
    global teststr
    socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    socket_server.bind(('192.168.132.2', 2000))
    socket_server.listen(128)

    while True:
        try:
            new_socket, ip_port = socket_server.accept()
        except:
            pass
        else:
            a, b = ip_port
            print(f"连线成功,客户端IP:{a} 端口:{b}")
            t = threading.Thread(target=recv_data, args=(new_socket,))
            t.start()
        print(" main is running !")
        time.sleep(1)
        device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

        data_transform = transforms.Compose(
            [transforms.Resize((224, 224)),
             transforms.ToTensor(),
             transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
        # load image
        #自动打开路径
        file_path = filedialog.askopenfilename(filetypes=[("Image files", "*.jpg;*.png")])
        img_path = file_path
        #绝对路径
        # img_path = "D:\\OpenAI\\vggandAlexnet\\flower_data\\val\\roses\\160954292_6c2b4fda65_n.jpg"
        assert os.path.exists(img_path), "file: '{}' dose not exist.".format(img_path)
        img = Image.open(img_path)
        plt.imshow(img)
        # [N, C, H, W]
        img = data_transform(img)
        # expand batch dimension
        #扩充一个维度,因为读入的图片只有高度,宽度和深度三个维度
        img = torch.unsqueeze(img, dim=0)

        # read class_indict

        json_path = './class_indices.json'
        assert os.path.exists(json_path), "file: '{}' dose not exist.".format(json_path)

        json_file = open(json_path, "r")
        # 读取索引对应的类别名称,并解码,解成需要使用的字典
        class_indict = json.load(json_file)

        # create model
        model = vgg(num_classes=5).to(device)#初始化网络

        # load model weights
        weights_path = r'D:\111\yolov5\AlexNet.pth'
        assert os.path.exists(weights_path), "file: '{}' dose not exist.".format(weights_path)
        #载入网络模型
        model.load_state_dict(torch.load(weights_path))

        model.eval()#关闭dropout模式
        with torch.no_grad():#pytorch不去跟踪变量的损失梯度
            # predict class
            #数据经过正向传播得到输出,然后将输出进行压缩,将batch维度压缩掉
            output = torch.squeeze(model(img.to(device))).cpu()
            #经softmax处理后变成一个概率分布
            predict = torch.softmax(output, dim=0)
            #通过torch.argmax方法,获取概率最大处所对应的索引值
            predict_cla = torch.argmax(predict).numpy()
            teststr = str(predict_cla)
        #但因类别名称,以及他所对应的类别概率
        print_res = "class: {}   prob: {:.3}".format(class_indict[str(predict_cla)],
                                                     predict[predict_cla].numpy())
        plt.title(print_res)
        for i in range(len(predict)):
            print("class: {:10}   prob: {:.3}".format(class_indict[str(i)],
                                                      predict[i].numpy()))
        plt.show()
        flower_dict = {
            "daisy": 0,
            "dandelion": 1,
            "roses": 2,
            "sunflowers": 3,
            "tulips": 4
        }


if __name__ == '__main__':
    teststr = ""
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值