激活
类:dlhdl。工作流
包:dlhdl
检索已部署深度学习网络的中间层结果
描述
返回图像数据的中间层激活数据结果行为
=激活(workflowObject
,图像
,layername
)图像
中指定的层的名称layername
.结果大小取决于层的输出大小。层的输出大小可以通过analyzeNetwork
.
返回图像数据的中间层激活数据结果行为
=激活(workflowObject
,图像
,layername
,名称,值
)图像
中指定的层的名称layername
,使用由一个或多个指定的其他选项名称,值
对参数。结果大小取决于层的输出大小。层的输出大小可以通过analyzeNetwork
.
输入参数
workflowObject
- - - - - -工作流
dlhdl。工作流
对象
工作流,指定为dlhdl。工作流
对象。
图像
- - - - - -输入图像
米——- - - - - -n——- - - - - -k数字数组
输入图像,指定为米——- - - - - -n——- - - - - -k数字数组。米,n,k必须匹配深度学习网络输入图像层的维度。例如,对于LogoNet网络,将输入图像调整为227 × 227 × 3数组。
数据类型:单
layername
- - - - - -层来提取激活
”(默认)|特征向量
层来提取激活,指定为字符向量。
计算a的活化度SeriesNetwork
对象时,将该层指定为与层名对应的字符向量。
计算a的活化度DAGNetwork
对象时,将该层指定为与层名对应的字符向量。如果图层有多个输出,指定图层和输出为图层名称,后面跟着字符“/”
,后面跟着输出层的名称。也就是说,layername
形式的“layerName / outputName”
.
这些限制适用于从层中提取激活:
一个
maxPooling2DLayer
它有HasUnpoolingIndices
参数设置为真正的
有三个输出出
,指数
,大小
.仅支持对输出进行激活出
.
例子:“conv1”
例子:“mpool /出”
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
分析器
- - - - - -返回分析结果的标志
“关闭”(默认)|“上”
标志以返回部署到目标板的深度学习网络的分析结果。
例子:“分析工具”,“上”
输出参数
行为
-中间层激活数据
单阵列
中间层激活数据,作为单个数组返回。数组的大小取决于层的输出大小。例如ResNet-18网络pool1
层,返回的结果数组的大小是56 × 56 × 64。
例子
通过使用LogoNet可视化深度学习网络的激活
这个例子展示了如何将图像输入卷积神经网络,并显示网络不同层的激活情况。检查激活,并通过将激活区域与原始图像进行比较来发现网络学习的特征。较早层中的通道学习颜色和边缘等简单特征,而较深层中的通道学习复杂特征。以这种方式识别特征可以帮助您了解网络学习到的内容。
标志识别网络
标志有助于品牌识别和识别。许多公司在广告、文件材料和促销活动中使用他们的标识。logo识别网络(LogoNet)是用MATLAB开发的,可以在各种光照条件和摄像机运动下识别32个logo。因为这个网络只关注识别,所以您可以在不需要本地化的应用程序中使用它。
先决条件
Intel®Arria10 SoC开发工具包
用于Intel FPGA和SoC的深度学习HDL工具箱™支持包
深度学习工具箱™
深度学习HDL工具箱™
计算机视觉工具箱
负载预训练系列网络
要加载预训练的系列网络LogoNet,输入:
snet = getLogoNetwork;
创建目标对象
创建一个目标对象,该对象具有目标设备的自定义名称和用于将目标设备连接到主机的接口。接口选项为JTAG和Ethernet。要使用JTAG,请安装Intel™Quartus™Prime标准版20.1。如果尚未设置,请设置已安装的Intel Quartus Prime可执行文件的路径。例如,要设置工具路径,输入:
% hdlsetuptoolpath('ToolName', 'Altera Quartus II','ToolPath', 'C:\ Altera \20.1\ Quartus \bin64');
要创建目标对象,输入:
hTarget = dlhdl。目标(“英特尔”,“界面”,“JTAG”);
创建工作流对象
属性的对象dlhdl。工作流
类。创建对象时,指定网络和位流名称。指定保存的预训练的LogoNet神经网络,snet
,作为网络。请确保位流名称与数据类型和目标FPGA板匹配。本例中目标FPGA板为Intel Arria10 SOC板。位流使用单一数据类型。
hW = dlhdl。工作流(“网络”snet,“比特流”,“arria10soc_single”,“目标”, hTarget);
阅读并显示图像。保存大小以备将来使用。
Im = imread(“ferrari.jpg”);imshow (im)
imgSize = size(im);imgSize = imgSize(1:2);
查看网络架构
分析网络,看看可以查看哪些层。卷积层通过使用可学习参数来执行卷积。网络学会识别有用的特征,通常每个通道包含一个特征。第一卷积层有64个通道。
analyzeNetwork (snet)
图像输入层指定输入大小。在通过网络传递映像之前,您可以调整它的大小。该网络还可以处理更大的图像。如果你给网络提供更大的图像,激活也会变得更大。由于该网络是在227 * 227大小的图像上训练的,所以它没有被训练来识别更大的物体或特征。
显示第一个Maxpool层的激活
通过观察maxpool层中哪些区域在图像上激活,并将该图像与原始图像中的相应区域进行比较,来调查特征。卷积神经网络的每一层都由许多称为渠道.通过网络传递图像并检查输出激活maxpool_1
层。
act1 = hW.activations(single(im),“maxpool_1”,“分析工具”,“上”);
offset_name offset_address allocated_space _______________________ ______________ _________________ "InputDataOffset" "0x00000000" "24.0 MB" "OutputResultOffset" "0x01800000" "136.0 MB" "SystemBufferOffset" "0x0a000000" "64.0 MB" "InstructionDataOffset" "0x0e000000" "8.0 MB" "ConvWeightDataOffset" "0x0e800000" "4.0 MB" "EndOffset" "0x0ec00000" "Total: 236.0 MB" ###使用JTAG编程FPGA位流…已成功完成FPGA位流编程。
###已完成输入激活。###运行单输入激活。Deep Learning Processor Profiler性能结果LastLayerLatency(cycles) LastLayerLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 10182024 0.06788 1 10182034 14.7 conv_module 10182024 0.06788 conv_1 7088885 0.04726 maxpool_1 3093166 0.02062 * DL处理器的时钟频率为:150MHz
激活作为一个3-D数组返回,其中第三维为通道索引maxpool_1
层。来显示这些激活imtile
函数,将数组重塑为4-D。第三个维度的输入imtile
表示图像颜色。将第三个维度的大小设置为1,因为激活没有颜色。第四个维度对通道进行索引。
Sz =大小(act1);Act1 =重塑(Act1,[sz(1) sz(2) 1 sz(3)]);
显示激活。每个激活可以取任意值,因此使用mat2gray
.所有激活都是按比例缩放的,因此最小激活为0,最大激活为1。在12 × 8的网格上显示96张图像,每个通道对应一个图层。
I = imtile(mat2gray(act1),“GridSize”8 [12]);imshow(我)
研究特定通道的激活
激活网格中的每个磁贴都是通道中的输出maxpool_1
层。白色像素代表强烈的正面激活,黑色像素代表强烈的负面激活。大部分是灰色的通道在输入图像上不会被强烈激活。一个像素在通道激活中的位置对应于原始图像中的相同位置。通道中某个位置的白色像素表示该通道在该位置被强烈激活。
将通道33中的激活大小调整为与原始图像相同的大小,并显示激活。
Act1ch33 = act1(:,:,:,22);Act1ch33 = mat2gray(Act1ch33);act1ch33 = imresize(act1ch33,imgSize);I = imtile({im,act1ch33});imshow(我)
寻找最强激活通道
通过编程方式调查具有大量激活的通道来寻找感兴趣的通道。方法找到激活最大的通道马克斯
函数,调整通道输出的大小,并显示激活。
[maxValue,maxValueIndex] = max(max(max(act1)));act1chMax = act1(:,:,:,maxValueIndex);act1chMax = mat2gray(act1chMax);act1chMax = imresize(act1chMax,imgSize);I = imtile({im,act1chMax});imshow(我)
将最强激活通道图像与原始图像进行比较。这个通道在边缘激活。它在亮左/暗右边缘上激活正,在暗左/暗右边缘上激活负。
版本历史
R2020b中介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。