Going out for the weekend but can't make up your mind between two great places? Wolfram Alpha to the rescue! I found out you can compare weather forecasts with it too. Just use their weather forecast with the "versus" operator, like in this recent query of mine
and up pop the results:
For less well-known cities you might give Wolfram Alpha a hand by adding some parentheses etc.:
Happy walphing!
Tuesday, November 15, 2011
Tuesday, October 04, 2011
An exquisit blank HTML page
Fancy hacking together a quick single-page web site? No? Well I do. Just in case you change your mind, here's a high-quality blank HTML page you can use as a starting point. It's transitional XHTML and has utf-8 encoding, so that should allow for doing quite a few crazy things.
Thursday, September 29, 2011
Spanish DNI and NIE letter calculator
As I couldn't find this really well done anywhere online, I made a small tool to calculate the letter of the Spanish DNI. For expats living in Spain, you can use it to calculate the letter of a NIE too.
Here it is: Calculadora de letra de DNI y de NIE.
Here it is: Calculadora de letra de DNI y de NIE.
Friday, June 17, 2011
Google reverse image search on desktop
Google finally adjusted their Goggles service for the desktop, so we can now also add their service to list of reverse image search tools, which already included the algorithms of TinEye, Cydral and GazoPa among others. First results show it's a winner, returning more identical results, more visually similar images, and interesting context information. Go to images.google.com to see if it's available in your region.
To commemorate the occasion, I released a new version of RevEye, the Chrome plugin to perform reverse image searches. It now includes searches by Google, TinEye, Cydral, and I've added Yandex and Baidu to the list since they also do pretty well.
RevEye v1.3 is a free download available from the chrome web store.
To commemorate the occasion, I released a new version of RevEye, the Chrome plugin to perform reverse image searches. It now includes searches by Google, TinEye, Cydral, and I've added Yandex and Baidu to the list since they also do pretty well.
RevEye v1.3 is a free download available from the chrome web store.
Wednesday, June 01, 2011
RevEye: Even more reverse image search
Google asked me to change the name of my Chrome plugin "ChromeEye" into something that did not violate their terms. Fair enough. I changed it to "RevEye", and took the opportunity to make some changes to the user interface as well.
First, I added the Cydral engine to the list of reverse image search services included, since it has been producing some very nice results lately.
Second, I added an option to change the context menu: You can now choose either to use one default search engine, or to have a cascaded menu with all options on every search. My favorite option is the one that opens all services in different tabs.
These changes basically make RevEye a "meta reverse image search tool", since it now includes the complete functionalities by the TinEye, GaZoPa or Cydral plugins. So off you go then! Install it and have fun tracking images.
RevEye v1.2 is a free download available from the chrome web store.
First, I added the Cydral engine to the list of reverse image search services included, since it has been producing some very nice results lately.
Second, I added an option to change the context menu: You can now choose either to use one default search engine, or to have a cascaded menu with all options on every search. My favorite option is the one that opens all services in different tabs.
These changes basically make RevEye a "meta reverse image search tool", since it now includes the complete functionalities by the TinEye, GaZoPa or Cydral plugins. So off you go then! Install it and have fun tracking images.
RevEye v1.2 is a free download available from the chrome web store.
Wednesday, March 02, 2011
More reverse image search: ChromeEye v1.0
Yesterday I released a new version of my reverse image search extension "ChromeEye" for Google Chrome. While the first version was simply a bridge to the reverse image search engine TinEye, the new version 1.0 includes the option to use different search engines. At the moment that means images can be sent either to TinEye or to GazoPa. TinEye, which seems to be most popular reverse image search engine these days, looks mainly for exact matches. GazoPa uses a very different algorithm, based on visual features, with sometimes surprising results. Both are still improving their algorithms, obviously, so we´ll keep an eye on them.
That said, ChromeEye is now a plugin for reverse image search in general, and I will be including more search engines in the future. Note also that it is using the right click context menu for image searches. This was a much asked for option in the previous version, but technically not possible (due to Chrome restrictions) when I released it.
ChromeEye v1.0 is a free download available from the chrome extensions directory and from the chrome web store.
That said, ChromeEye is now a plugin for reverse image search in general, and I will be including more search engines in the future. Note also that it is using the right click context menu for image searches. This was a much asked for option in the previous version, but technically not possible (due to Chrome restrictions) when I released it.
ChromeEye v1.0 is a free download available from the chrome extensions directory and from the chrome web store.
Wednesday, March 17, 2010
Fixed-Budget Kernel RLS at ICASSP 2010
My paper titled "Fixed-Budget Kernel Recursive Least-Squares" will be presented this afternoon at the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP 2010). It was written in collaboration with Weifeng Liu and Jose C. Principe of the Computational NeuroEngineering Laboratory (CNEL) at the University of Florida. I couldn't be there to present the paper myself, but luckily my former supervisor Ignacio Santamaría is attending and will be giving the talk. If you are interested in learning methods or online kernel methods, be sure to attend. It's the first paper of the "Learning Theory and Models I" session (MLSP-L2.1), which is held on Wednesday, March 17, 13:30 - 15:30.
The basic idea behind this learning algorithm is pretty simple. First of all, it is an RLS method in kernel feature space, which means it is capable of learning a nonlinear regression in an online manner. Kernel RLS methods usually face memory and computational problems, since their solutions require to invert a large kernel matrix that incorporates information about all processed data. As new data patterns (x,y) arrive (remember this is set in an online environment), this matrix grows and the computation of the regression output becomes more costly in each step. The typical approach to avoid these memory and computational problems is to restrict the data patterns to a minimum number that allows to approximate the solution sufficiently well. Each time a newly arrived pattern is found to be sufficiently interesting, it is added to a "dictionary".
In contrast to these techniques, which make the dictionary expand (albeit slowly), the technique of this paper fixes the size of the dictionary. As a consequence, apart from adding patterns to the dictionary, we also have to prune patterns. While the pruning itself involves only simple algebra, the criterion to determine what data to prune is more interesting. We chose to use a relevance-based criterion in this paper, motivated by the good results it yielded. More specifically, in each time step we calculate how relevant each stored pattern is with respect to the regression, and subsequently prune the least relevant pattern. (Details and references are in the paper itself.) As a result, after running a number of iterations of this algorithm, it obtains a compact set of patterns that summarizes the observed patterns pretty well.
I particularly like the interpretation of this algorithm as a simple learning method that deals with memory restrictions. Every time this method receives a new data pattern, it must determine actively what pattern to "forget" in order to maintain its memory size. So it's a way of "optimal forgetting". And as the results in the paper point out, it is also pretty efficient in doing so.
Figures: The previous figure is one of the slides. The below figure is an illustration of the "label update" procedure that can be introduced to equip the algorithm with tracking capability. I.e., in a time-varying environment the regression surface can be changing, as indicated by the new data pattern (xn,yn). The proposed procedure updates the labels in the vicinity of this point to reflect those changes.
But enough talking about this paper. My friends and colleagues are also presenting theirs, so if you are at the ICASSP be sure to check them out:
PS: The paperwill be available in short on my academic web page [update:] can be downloaded from my publications page, and I also plan to release the Matlab code either there or here in the near future. Be sure to ask me about it if you can't find it.
The basic idea behind this learning algorithm is pretty simple. First of all, it is an RLS method in kernel feature space, which means it is capable of learning a nonlinear regression in an online manner. Kernel RLS methods usually face memory and computational problems, since their solutions require to invert a large kernel matrix that incorporates information about all processed data. As new data patterns (x,y) arrive (remember this is set in an online environment), this matrix grows and the computation of the regression output becomes more costly in each step. The typical approach to avoid these memory and computational problems is to restrict the data patterns to a minimum number that allows to approximate the solution sufficiently well. Each time a newly arrived pattern is found to be sufficiently interesting, it is added to a "dictionary".
In contrast to these techniques, which make the dictionary expand (albeit slowly), the technique of this paper fixes the size of the dictionary. As a consequence, apart from adding patterns to the dictionary, we also have to prune patterns. While the pruning itself involves only simple algebra, the criterion to determine what data to prune is more interesting. We chose to use a relevance-based criterion in this paper, motivated by the good results it yielded. More specifically, in each time step we calculate how relevant each stored pattern is with respect to the regression, and subsequently prune the least relevant pattern. (Details and references are in the paper itself.) As a result, after running a number of iterations of this algorithm, it obtains a compact set of patterns that summarizes the observed patterns pretty well.
I particularly like the interpretation of this algorithm as a simple learning method that deals with memory restrictions. Every time this method receives a new data pattern, it must determine actively what pattern to "forget" in order to maintain its memory size. So it's a way of "optimal forgetting". And as the results in the paper point out, it is also pretty efficient in doing so.
Figures: The previous figure is one of the slides. The below figure is an illustration of the "label update" procedure that can be introduced to equip the algorithm with tracking capability. I.e., in a time-varying environment the regression surface can be changing, as indicated by the new data pattern (xn,yn). The proposed procedure updates the labels in the vicinity of this point to reflect those changes.
But enough talking about this paper. My friends and colleagues are also presenting theirs, so if you are at the ICASSP be sure to check them out:
- Il Park and Jose Principe, "Quantification of Inter-trial Non-stationarity in Spike Trains from Periodically Stimulated Neural Cultures" (Multivariate and Multimodal Analysis of Brain Signals, Tuesday, March 16, 13:50 - 14:10).
- Sohan Seth, Jose C. Principe. A conditional distribution function based approach to design nonparametric tests of independence and conditional independence (Learning Theory and Models III, Wednesday, March 17, 16:00 – 18:00).
- David Ramirez, Javier Via, Ignacio Santamaria, Roberto Lopez-Valcarce, Louis L. Scharf, "Multiantenna Spectrum Sensing: Detection Of Spatial Correlation Among Time-Series With Unknown Spectra" (SPCOM-L1: Spectrum Sensing for Cognitive Radio I, Tuesday, March 16, 14:10 - 14:30).
- Javier Vía, David Ramírez, Ignacio Santamaría, Luis Vielva, "Widely And Semi-Widely Linear Processing Of Quaternion Vectors" (Detection and Estimation Techniques - II, Thursday, March 18, 13:30 - 15:30).
- Luis Vielva, Javier Vía, Jesús Gutiérrez, Óscar González, Jesús Ibáñez, Ignacio Santamaría, "Building A Web Platform For Learning Advanced Digital Communications Using A Mimo Testbed" (Signal Processing Education: Signal Processing Education, Tuesday, March 16, 14:30 - 14:50)
- Abhishek Singh, Jose Principe. Kernel width adaptation in information theoretic cost functions (Learning Theory and Models III, Wednesday, March 17, 16:00 – 18:00).
- Abhishek Singh, Jose Principe. A closed form recursive solution for maximum correntropy training (Learning Theory and Models III, Time: Wednesday, March 17, 16:00 – 18:00).
- Abhishek Singh, Tejaswi Tamminedi, Guy Yosiphon, Anurag Ganguli, Jacob Yadegar. Hidden markov models for modeling blood pressure data to predict acute hypotension (Bioinformatics and Biomedical Signal Processing, Tuesday, March 16, 16:00 – 18:00).
PS: The paper
Subscribe to:
Posts (Atom)








