显著性检测(saliency detection)评价指标之sAUC(shuffled AUC)的Matlab代码实现
AUC_shuffled.m
function [score,tp,fp] = AUC_shuffled(saliencyMap, fixationMap, otherMap, Nsplits, stepSize, toPlot)
% saliencyMap is the saliency map
% fixationMap is the human fixation map (binary matrix)
% otherMap is a binary fixation map (like fixationMap) by taking the union of
% fixations from M other random images (Borji uses M=10)
% Nsplits is number of random splits
% stepSize is for sweeping through saliency map
% if toPlot=1, displays ROC curve if nargin < 6, toPlot = 0; end
if nargin < 5, stepSize = .1; end
if nargin < 4, Nsplits = 100; end score=nan; % If there are no fixations to predict, return NaN
if ~any(fixationMap)
disp('no fixationMap');
return
end % make the saliencyMap the size of fixationMap
if size(saliencyMap, 1)~=size(fixationMap, 1) || size(saliencyMap, 2)~=size(fixationMap, 2)
saliencyMap = imresize(saliencyMap, size(fixationMap));
end % normalize saliency map
saliencyMap = (saliencyMap-min(saliencyMap(:)))/(max(saliencyMap(:))-min(saliencyMap(:))); if sum(isnan(saliencyMap(:)))==length(saliencyMap(:))
disp('NaN saliencyMap');
return
end S = saliencyMap(:);
F = fixationMap(:);
Oth = otherMap(:); Sth = S(F>0); % sal map values at fixation locations
Nfixations = length(Sth); % for each fixation, sample Nsplits values from the sal map at locations
% specified by otherMap ind = find(Oth>0); % find fixation locations on other images Nfixations_oth = min(Nfixations,length(ind));
randfix = nan(Nfixations_oth,Nsplits); for i=1:Nsplits
randind = ind(randperm(length(ind))); % randomize choice of fixation locations
randfix(:,i) = S(randind(1:Nfixations_oth)); % sal map values at random fixation locations of other random images
end % calculate AUC per random split (set of random locations)
auc = nan(1,Nsplits);
for s = 1:Nsplits curfix = randfix(:,s); allthreshes = fliplr([0:stepSize:double(max([Sth;curfix]))]);
tp = zeros(length(allthreshes)+2,1);
fp = zeros(length(allthreshes)+2,1);
tp(1)=0; tp(end) = 1;
fp(1)=0; fp(end) = 1; for i = 1:length(allthreshes)
thresh = allthreshes(i);
tp(i+1) = sum((Sth >= thresh))/Nfixations;
fp(i+1) = sum((curfix >= thresh))/Nfixations_oth;
end auc(s) = trapz(fp,tp);
end score = mean(auc); % mean across random splits if toPlot
subplot(121); imshow(saliencyMap, []); title('SaliencyMap with fixations to be predicted');
hold on;
[y, x] = find(fixationMap);
plot(x, y, '.r');
subplot(122); plot(fp, tp, '.b-'); title(['Area under ROC curve: ', num2str(score)])
end
main.m
clear;
clc;
smap_path='E:\Dataset180303\final_data\smap_Result1\';
gmap_path='E:\Dataset180303\final_data\image_resize_gt\'; smap_file=dir(smap_path); for j=3:length(smap_file)
disp(j-2);
gmap_name=strcat(gmap_path,num2str(j-2), '.jpg');
% gmap_name=strcat(gmap_path,smap_file(j).name);
smap_name=strcat(smap_path,num2str(j-2 + 0 ), '.jpg');
% smap_name=strcat(smap_path,num2str(j-2+ 0 ), '_SaliencyMap', '.jpg');
gmap=imresize(imread(gmap_name), [224, 224], 'bicubic');
smap=imresize(imread(smap_name), [224, 224], 'bicubic');
sal_map=mat2gray(smap);
if gmap==0
continue;
end if size(gmap,3)==3
gt_final_map=rgb2gray(gmap);
else
gt_final_map = gmap;
end
sal_map=imresize(sal_map,0.5);
gt_final_map=imresize(gt_final_map,0.5); threshold_value = graythresh(gt_final_map);
gt_final_map_bin = im2bw(gt_final_map, threshold_value); % c=calcAUCscore(sal_map,gt_final_map);
% [score,tp,fp] = AUC_shuffled(saliencyMap, fixationMap, otherMap, Nsplits, stepSize, toPlot)
[c,tp,fp]=AUC_shuffled(sal_map,gt_final_map_bin,gt_final_map);
idx=find(isnan(c));
c(idx)=0.5;
c = abs(c);
a(j-2,1)=mean(c);
end
% b(i-2,1)=mean(a);
% clear a;
% end
sAUC = mean(a);
显著性检测(saliency detection)评价指标之sAUC(shuffled AUC)的Matlab代码实现的更多相关文章
- 显著性检测(saliency detection)评价指标之NSS的Matlab代码实现
calcNSSscore.m function [ score ] = calcNSSscore( salMap, eyeMap ) %calcNSSscore Calculate NSS score ...
- 显著性检测(saliency detection)评价指标之KL散度距离Matlab代码实现
步骤1:先定义KLdiv函数: function score = KLdiv(saliencyMap, fixationMap) % saliencyMap is the saliency map % ...
- 视觉显著性简介 Saliency Detection
内容转移到博客文章系列:显著性检测 1.简介 视觉显著性包括从下而上和从上往下两种机制.从下而上也可以认为是数据驱动,即图像本身对人的吸引,从上而下则是在人意识控制下对图像进行注意.科研主要做的是从下 ...
- paper 27 :图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)
1. 早期C. Koch与S. Ullman的研究工作. 他们提出了非常有影响力的生物启发模型. C. Koch and S. Ullman . Shifts in selective visual ...
- 视觉显著性检测(Visual saliency detection)相关概念
视觉显著性检测(Visual saliency detection)指通过智能算法模拟人的视觉特点,提取图像中的显著区域(即人类感兴趣的区域). 视觉注意机制(Visual Attention Mec ...
- (不断更新)关于显著性检测的调研-Salient Object Detection: A Survey
<Salient Object Detection: A Survey>作者:Ali Borji.Ming-Ming Cheng.Huaizu Jiang and Jia Li 基本按照文 ...
- 视频显著性检测-----Predicting Video Saliency using Object-to-Motion CNN and Two-layer Convolutional LSTM
帧内显著性检测: 将卷积网络的多层特征进行组合通过unsampling 得到粗显著性预测: 帧间显著性检测: (粗检测结果+新卷积网络的特征图,最后+之前卷积网络的卷积特征输入到LSTM中)进行预测. ...
- {Links}{Matting}{Saliency Detection}{Superpixel}Source links
自然图像抠图/视频抠像技术发展情况梳理(image matting, alpha matting, video matting)--计算机视觉专题1 http://blog.csdn.net/ansh ...
- [精读]Spationtemporal Saliency Detection Using Textural Contrast and Its Applications
Spationtemporal Saliency Detection Using Textural Contrast and Its Applications Last Edit 2013/12/3 ...
随机推荐
- JAVA堆栈的区别
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度 ...
- java多线程的理解
java多线程的理解 线程的5种状态:新建,就绪,运行,阻塞,死亡. Thread.sleep:线程 运行状态 转为 阻塞状态,(其它线程启动运行) Thread.yield: 线程 运行 ...
- aliyun ubuntu读取第三方源被forbidden的问题
使用下面指令添加了一个源: sudo add-apt-repository ppa:webupd8team/java 然后update的时候提示: W: Failed to fetch http:// ...
- postgresql 异步流复制hot standby搭建
先说说环境,主从库版本都是9.5,主库在CentOS物理机上,从库在Ubuntu虚拟机上 一.主库上的操作: 1.添加同步访问规则: host replication dbuser ...
- Mac下面解决PYTHONPATH配置的方法
问题起因:MacPort安装的Python包在/opt目录里面,和系统安装的python包不在一起,由于Mac下面编译安装无止境的找不到问题,虽然MacPort解决了这个问题,但是它安装的东西,得自己 ...
- SQL基本语句的优化10个原则
原则一:尽量避免在列上进行运算,这样会导致索引失效. 例如: ; 优化: SELECT * FROM table WHERE d >= '2011-01-01'; 原则二:使用JOIN时,应该用 ...
- RocketMQ源码 — 九、 RocketMQ延时消息
上一节消息重试里面提到了重试的消息可以被延时消费,其实除此之外,用户发送的消息也可以指定延时时间(更准确的说是延时等级),然后在指定延时时间之后投递消息,然后被consumer消费.阿里云的ons还支 ...
- NSURLSession 所有的都在这里(二)
前面一篇我们说了什么? 这是这个关于NSURLSession的第二篇文章,第一篇再加上这篇文章,就大概的把NSURLSession的API以及一些简单使用我们也就说的差不多了,这篇文章总结哪些点呢?相 ...
- 分析DuxCms之AdminController
/** * 后台模板显示 调用内置的模板引擎显示方法, * @access protected * @param string $templateFile 指定要调用的模板文件 * @return v ...
- 获取linux帮助命令
命令的分类 linux的命令分为内部命令和外部命令. 内部命令指的是shell程序自带的命令,是shell程序的一部分,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系 ...