Closed jerryniu0624 closed 6 months ago
Thanks for your question. I've been meaning to re-structure the repo as a Python package so that it can be more usable. It should be ready in a couple of days
The project is ready to use. I created a Demo (https://colab.research.google.com/github/NISL-MSU/HSI-BandSelection/blob/master/HSIBandSelection.ipynb) that shows how to use the band selection method.
Thank you so much
Hello, it seems that this demo does not use the IBRA method. Am I correct? Is the only way to use IBRA by using PCA/PLA method in your code?
The demo does use IBRA. It's the first step. You can use IBRA+PCA/PLS or IBRA+GSS which was shown in the example. Either way, you will obtain after a minute or 2 the indices that were preselected by IBRA.
However, the demo was not considering to use just IBRA to perform cross-validation because it's just a preselection algorithm. I think I could add the option of using IBRA alone (in that case, one can't specify the number of desired selected bands)
I made two minor modifications to the SelecBands.py code. Now, you can specify method='IBRA'
as one of the parameters of the SelectBands
class. The image below shows the result of using IBRA with three possible VIF values. Note that when you use IBRA, since it's a pre-selection method, you can't specify the desired number of final bands, it will depend on the data itself.
Also note that using the bands pre-selected by IBRA as the ones that yielded the greatest classification performance and then using Greedy Spectral Selection (or any other selection method), is not the same as using IBRA+GSS (or IBRA+other selection method) in conjunction. In this implementation, when you use method='GSS'
, it is implied that you're using IBRA+GSS. If you implement another selection method, I suggest incorporating it into the SelectBand class and not doing it separately.
Thanks for your elaborate reply. When I use GSS + IBRA to select bands for Salinas, the first candidate combination of bands is [40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]. This suggests that IBRA is not employed, since the result bands of IBRA should be evenly distributed in the whole spectral dimensions in some way. I am a bit confused. The code and result is shown below.
After useing the latest version of your code, this is not an issue. Thanks a lot!!!
Glad it works. However, take into account that IBRA doesn't make any assumption about evenly distributing the candidate bands across the spectrum. For example, in the case of the Kochia dataset we used for our paper, you can see that between bands 80 and 130, only one band was selected (https://www.mdpi.com/2072-4292/13/18/3649)
How to use your method to select useful band for any HSI dataset?