全国服务热线:

15861139266

卷积神经网络中间层的可视化-苏州机器视觉培训,苏州PLC培训,苏州上位机培训
发布时间:2023-04-04 11:08:43 点击次数:315

卷积神经网络中间层的可视化

1.处理单张图作为网络的输入。


2.根据给定的layer层,获取该层输出结果features。


3.考虑到features的形状为[batch_size, filter_nums, H, W],提取其中第一个过滤器得到的结果的feature。


4.以一张图作为输入的情况下,我们得到的feature即为[H,W]大小的tensor


5.将tensor转为numpy,然后归一化[0,1],最后乘以255,使得范围为[0,255]。


6.得到灰度图像保存。


代码

import cv2

import numpy as np

import torch

from torch.autograd import Variable

from torchvision import models



def preprocess_image(cv2im, resize_im=True):

    """

    Processes image for CNNs

    Args:

    PIL_img(PIL_img):Image to process

    resize_im(bool):Resize to 224 or not

    :return:

    im_as_var(Pytorch variable):Variable that contains processed float tensor

    """

    # mean and std list for channels (ImageNet)

    mean = [0.485, 0.456, 0.406]

    std = [0.229, 0.224, 0.225]

    # Resize image

    if resize_im:

        cv2im = cv2.resize(cv2im, (224, 224))

    im_as_arr = np.float32(cv2im)

    im_as_arr = np.ascontiguousarray(im_as_arr[..., ::-1])

    im_as_arr = im_as_arr.transpose(2, 0, 1)  # Convert array to D,W,H

    # Normalize the channels

    for channel, _ in enumerate(im_as_arr):

        im_as_arr[channel] /= 255

        im_as_arr[channel] -= mean[channel]

        im_as_arr[channel] /= std[channel]

    # Convert to float tensor

    im_as_ten = torch.from_numpy(im_as_arr).float()

    # Add one more channel to the beginning. Tensor shape =1,3,224,224

    im_as_ten.unsqueeze(0)

    # Convert to Pytorch variable

    im_as_var = Variable(im_as_ten, requires_grad=True)

    return im_as_var


大林上位机机器视觉_苏州电工培训_苏州PLC培训_苏州上位机培训_苏州机器视觉培训_苏州工业机器人培训_最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)

class FeatureVisualization():

    def __init__(self, img_path, selected_layer):

        self.img_path = img_path

        self.selected_layer = selected_layer

        self.pretrained_model = models.vgg16(pretrained=True).features


    def process_image(self):

        img = cv2.imread(self.img_path)

        img = preprocess_image(img)

        return img


    def get_feature(self):

        # input = Variable(torch.randn(1, 3, 224, 224))

        input = self.process_image()

        x = input

        x = x.unsqueeze(0)

        for index, layer in enumerate(self.pretrained_model):

            x = layer(x)

            if (index == self.selected_layer):

                return x


    def get_single_feature(self):

        features = self.get_feature()

        # print("get_single_features: ", features.shape)

        feature = features[:, 0, :, :]

        # print("get_single_feature: ", feature.shape)

        feature = feature.view(feature.shape[1], feature.shape[2])

        return feature


    def save_feature_to_img(self, i):

        # to numpy

        feature = self.get_single_feature()

        feature = feature.data.numpy()

        # use sigmod to [0,1]

        feature = 1.0 / (1 + np.exp(-1 * feature))

        # to [0,255]

        feature = np.round(feature * 255)

        print("ok feature.shape: ", feature.shape)

        cv2.imwrite(str(i) + ".jpg", feature)



if __name__ == "__main__":

    for i in range(30):

        myClass = FeatureVisualization("31.jpg", i)

        # print(myClass.pretrained_model)

        myClass.save_feature_to_img(i)




一、课程目标

本公司本着为工控事业培育和输出从电工基础到机器视觉的人才理念,着力于让小白成为工控业专家为目标。

大林上位机视觉软件培训专家特开设从电工基础、PLC、运动控制、上位机、工业机器人、机器视觉培训课程,为实现工业4.0事业而不懈努力。

机构课程全程真实教学、实干为主,不装逼,不扯淡,只唠干货,能做项目!!

二、老师介绍

大林老师

是专业从事上位机视觉软件的开发与培训,多年从事上位机机器视觉相关项目开发,对电气人员学习C#开发视觉软件有独到的见解,即使您是零基础或只要从事过电气自动化相关工作的学员都能够轻松快速学会。

三、校区介绍

大林上位机机器视觉培训机构,分为两个校区,苏州校区(苏州木渎),常州校区(常州新北)

四、硬件设施

校区提供2000多平方的实训基地,完美的设备硬件配套,可以做到边学习边操作,鉴于本机构隶属于某自动化公司,学员可以配合边学习边配合公司开发人员完成项目,这样学习起来事半功倍

五、毕业服务

学业完成后本公司可以择优录取,在我们自动化公司的实习,解决您的后顾之忧

六、课程对象

1.零基础无任何相关知识

2.有电气及PLC编程基础的更容易入手

3.需要系统性提升整体能力

4.跨行业转型

5.想拥有一份体面高收入

6.对自己前途迷茫

7.学历低英语不好

七、课程特色

为您量身提供零基础快速成为上位机及机器视觉软件开发专家的学习方案

承接企事业单位定制个性化学员集体培训。

八、课程内容

小白亦可通过学习成为工业软件开发专家,从电气图,到梯形图,到高级语言SCL,再到C#,突破高级语言难的瓶颈,轻松掌握。

从零开始,从电气基本元件入手,跟随课程递进学习,PLC,工业机器人,数据库,运动控制器,上位机,机器视觉,统统一网打尽。

欢迎亲临现场咨询,老师私人定制课程 ,学习更清晰!

九、授课方式

1、线下现场授课更直观,知识点更易吸收,现场互动更易理解和运用。

      1,赠送老师录制课程随时随地轻松学习

      2,赠送配套书籍不限环境随意学习

      3,课间和课后答疑知识掌握更牢固

      4,现场设备随意使用,人机结合熟练运用,加深知识理解。

      5,老师指导完善简历,轻松上岗。

2、线上视频录播课程-整套

      1,赠送配套书籍不限环境随意学习

      2,售后答疑轻松解答

      3,福利:线下报名课程原价抵扣

3、 线上视频课程+现场设备实操

      1,赠送配套书籍不限环境随意学习

      2,售后答疑轻松解答

      3,现场和课后答疑知识掌握更牢固

      4,现场设备随意使用,人机结合熟练运用,加深知识理解

      5,福利:线下报名课程原价抵扣



苏州C#工业上位机软件开发学习_苏州上位机监控系统开发学习_苏州C#与运动控制卡学习_苏州PLC编程学习_苏州上位机与西门子PLC学习_苏州上位机与西门子PLC全科编程学习_苏州上位机与西门子200SMART编程学习_苏州上位机与西门子PLC编程学习机构_苏州上位机与西门子PLC学习学校_苏州上位机与西门子博图编程学习

苏州上位机与西门子200SMARTPLC编程学习_苏州上位机与西门子S7_1200PLC编程学习_苏州上位机与西门子S7_1500PLC编程学习_苏州上位机与西门子SCL编程学习_苏州上位机与三菱PLC全科学习_苏州上位机与三菱PLC编程学习_苏州上位机与三菱FX系列编程学习_苏州上位机与三菱PLC编程学习机构_苏州上位机与三菱PLC学习学校_苏州上位机与三菱FX3UPLC编程学习


立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络