Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Foveated Object Detector

This repository contains the MATLAB source for the Foveated Object Detector (FOD) described in our paper [1] and technical report [2]. The code was tested on (K)ubuntu Linux 14.04 (and 16.04) using MATLAB R2014a and above.

The script main.m contains example calls that show how to train and run the FOD (and also its sliding window (SW) version) on a sample dataset provided under data/.

[1] Emre Akbas, Miguel P. Eckstein (2017). "Object detection through search with a foveated visual system." PLoS Computational Biology, 13(10), e1005743.

[2] Emre Akbas, Miguel P. Eckstein, "Object Detection Through Exploration With A Foveated Visual Field," Technical report, Vision and Image Understanding Lab, University of California Santa-Barbara. Link

Dataset

First, prepare your dataset. To do that, open ./data/monitor_dataset/monitor_train01.txt with a text editor and edit the first line to be the absolute path of the parent directory of the images in the dataset. For example, suppose /home/userX/FOD/ is the directory of this repository, then the first line of monitor_train01.txt should read as /home/userX/FOD/data/monitor_dataset\database. You should do the same for other dataset file monitor_test01.txt.

Paths

Add the following paths to your MATLAB workspace by running

addpathobject_detector/ % object detectoraddpathfoveated_visual_field/ % Freeman-Simoncelli modeladdpathcode_from_DPM/ % for HOG feature extraction and HOG visualization

Training a Sliding Window (SW) Model

The following calls trains a SW model on the monitor_train01 dataset. For help with the input arguments, run help train_model. Typically, on a i7 processor, this process takes about 15 minutes.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', false, 'verbosity', 1, ...
'cache_dir', 'cache');
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Now you have trained a model, you can visualize one of the learned templates for sanity check. If everything went smoothly, you should be seeing the rough shape of your target object in the HOG features.

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

To run the trained model on an image, use the detect_SW function for detection, and use the show_bounding_boxes on the output of detect_SW to visualize the detection results. Try this with your own images or images dowloaded from the web.

img = imread('data/monitor_dataset/database/ZxsobICq.jpg');
[c,bb] = detect_SW(img, model);
figure, show_bounding_boxes(img, bb(:,1), c(1));

Testing the Model

To evaluate the trained model on the test set, use evaluate_model. This will run the trained model on all of the 547 images in the testing set and will return you the precision-recall curve. evaluate_model runs detect_SW on many images in parallel, so don't forget the turn on the matlabpool by calling matlabpool open to speed up the evaluation (it also works without matlabpool).

detect_fun = @detect_SW;
[ap,rec,prec] = evaluate_model('data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

Training a Foveated Model (FOD)

To train a FOD model, we simply set peripheral_training to true and provide the peripheral_filters_filename parameter.

t0=clock;
model = train_model('descriptor', 'monitor01', ...
'trainset_filename', 'data/monitor_dataset/monitor_train01.txt', ...
'num_aspect_ratios', 2, ...
'peripheral_training', true, 'verbosity', 1, ...
'peripheral_filters_filename', 'foveated_visual_field/peripheral_filters_30x4.mat', ...
'cache_dir', 'cache', 'min_pixel_area', 425);
fprintf('Training took %.2f minutes.\n', etime(clock(), t0)/60);

Visualize the first template:

figure, visualizeHOG(foldHOG(reshape( model.templates(1).w, ...
model.templates(1).height, model.templates(1).width, [])));

Run the trained model on an image:

img = imread('../data/monitor_dataset/database/89nXYzxK.jpg');
[c,bb,f] = detect_FOD(img, model,'MAP_IOR',[.8.8],2);
figure, show_fixations_and_detections(img, bb(:,1:2), [], f, true);

Evaluate the trained model on the test set and retrieve the precision-recall curve:

% (don't forget to turn on matlabpool: "matlabpool open")
detect_fun = @(img,model)detect_FOD(img,model,'MAP_IOR',[],5);
[ap,rec,prec] = evaluate_model('../data/monitor_dataset/monitor_test01.txt', ...
model, 'cache', detect_fun, 1);
figure, plot(rec,prec);
xlabel('recall');
ylabel('precision');

About

A foveated object detector that uses the Freeman-Simoncelli model as its visual field, HoG features and a mixture of linear classifiers

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages