function [one_feat_sps, weight_pool_info]=do_sp_pooling(one_feat_img, one_sp_info) img_size=size(one_feat_img); num_units=img_size(1)*img_size(2); dim=img_size(3); one_feat_img=reshape(one_feat_img, [num_units dim]); img_size_org=one_sp_info.img_size; pixel_ind_map=reshape([1: num_units], [img_size(1) img_size(2)]); pixel_ind_map_org=imresize(pixel_ind_map, img_size_org, 'nearest'); pixel_ind_sps=one_sp_info.pixel_ind_sps; num_sp=numel(pixel_ind_sps); weight_pool_info=zeros([num_sp, num_units], 'like', one_feat_img); for idx_sp=1:num_sp pixel_ind_sp_one=pixel_ind_sps{idx_sp}; ind_pixels_in_map=pixel_ind_map_org(pixel_ind_sp_one); [ind_units,~,uniqueIndex] = unique(ind_pixels_in_map); frequency = accumarray(uniqueIndex(:),1)./numel(ind_pixels_in_map); frequency=single(frequency); freq_one_sp=zeros(1, num_units, 'single'); freq_one_sp(ind_units)=frequency; weight_pool_info(idx_sp, :)=freq_one_sp; end one_feat_sps=weight_pool_info*one_feat_img; end, 根据上述代码归纳出所有公式
时间: 2023-09-11 19:08:53 浏览: 72
DAB.zip_DAB SPS_DAB-DPS_DPS DAB_sps_tobaccojai
5星 · 资源好评率100%
根据上述代码,可以得到超像素池化的公式如下:
1. 将输入的特征图$\mathbf{X}\in\mathbb{R}^{H\times W\times D}$重塑为$\mathbf{X}'\in\mathbb{R}^{HW\times D}$。
2. 对于每个超像素$\mathbf{S}_i$,找到其包含的像素坐标集合$\mathcal{P}_i$,计算每个像素在超像素中的权重:
$$w_{ij}=\begin{cases} \frac{1}{|\mathcal{P}_i|}, & i\in\mathcal{P}_i \\ 0, & \text{otherwise} \end{cases}$$
其中,$j$表示输入特征图中的像素索引。
3. 将每个超像素的权重向量$\mathbf{w}_i\in\mathbb{R}^{HW}$与输入特征图$\mathbf{X}'$相乘,得到超像素池化后的特征向量$\mathbf{s}_i\in\mathbb{R}^D$:
$$\mathbf{s}_i=\mathbf{w}_i\mathbf{X}'$$
4. 将所有的超像素池化后的特征向量$\mathbf{s}_i$按行堆叠,得到输出的特征图$\mathbf{Y}\in\mathbb{R}^{N\times D}$,其中$N$为超像素的数量。
阅读全文