Trainable Weka Segmentation bugs

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Trainable Weka Segmentation bugs

Jan Eglinger
Dear Ignacio,

while testing the different features in the Trainable Segmentation
plugin [1], I stumbled upon a few bugs or unintuitive behavior:

1) In the "Settings" dialog, the "Save feature stack" button only takes
into account those features that were saved (i.e. that were active
before displaying the dialog). If the user has changed their selection
of features, the saved feature stack doesn't reflect this unless you
click on 'OK', re-open 'Settings' and click on 'Save feature stack'. Why
not putting the "Save feature stack" button in the main window?

2) Activating the "Gabor" training feature results in the stack trace
below being thrown [2]. I wasn't able to figure out if it's a bug in
ImgLib2's FFTConvolution class or in the Trainable Segmentation plugin.

I tested with the Blobs sample image. Let me know if I can be of further
help debugging this.

Best,
Jan


[1]: http://fiji.sc/Trainable_Weka_Segmentation#Training_features

[2]: Stack trace:

java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError:
net.imglib2.view.Views.extendMirrorSingle(Lnet/imglib2/RandomAccessibleInterval;)Lnet/imglib2/ExtendedRandomAccessibleInterval;
        java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
        java.util.concurrent.FutureTask.get(FutureTask.java:83)
        trainableSegmentation.FeatureStack.updateFeaturesMT(FeatureStack.java:3089)
        trainableSegmentation.FeatureStackArray.updateFeaturesMT(FeatureStackArray.java:245)
        trainableSegmentation.Weka_Segmentation$SaveFeatureStackButtonListener.actionPerformed(Weka_Segmentation.java:2415)
java.awt.Button.processActionEvent(Button.java:392)
java.awt.Button.processEvent(Button.java:360)
java.awt.Component.dispatchEventImpl(Component.java:4630)
java.awt.Component.dispatchEvent(Component.java:4460)
java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
java.awt.Dialog$1.run(Dialog.java:1046)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at
trainableSegmentation.FeatureStack.updateFeaturesMT(FeatureStack.java:3089)
at
trainableSegmentation.FeatureStackArray.updateFeaturesMT(FeatureStackArray.java:245)
at
trainableSegmentation.Weka_Segmentation$SaveFeatureStackButtonListener.actionPerformed(Weka_Segmentation.java:2415)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Caused by: java.lang.NoSuchMethodError:
net.imglib2.view.Views.extendMirrorSingle(Lnet/imglib2/RandomAccessibleInterval;)Lnet/imglib2/ExtendedRandomAccessibleInterval;
        at
net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:101)
        at net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:74)
        at net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:59)
        at trainableSegmentation.FeatureStack$17.call(FeatureStack.java:1769)
        at trainableSegmentation.FeatureStack$17.call(FeatureStack.java:1)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka Segmentation bugs

Ignacio Arganda-Carreras-2
Hello Jan!



> 1) In the "Settings" dialog, the "Save feature stack" button only takes
> into account those features that were saved (i.e. that were active before
> displaying the dialog). If the user has changed their selection of
> features, the saved feature stack doesn't reflect this unless you click on
> 'OK', re-open 'Settings' and click on 'Save feature stack'. Why not putting
> the "Save feature stack" button in the main window?
>
>
That's a known behavior with unfortunately not an easy solution. I thought
on moving the "Save feature stack" button to the main window indeed but I
found it already quite overloaded...


> 2) Activating the "Gabor" training feature results in the stack trace
> below being thrown [2]. I wasn't able to figure out if it's a bug in
> ImgLib2's FFTConvolution class or in the Trainable Segmentation plugin.
>

Aha! It looks like a problem with the ImgLib2 re-factoring. I fixed it once
but it's probably back so I'll dig into it.

Thank you very much for reporting!

ignacio



>
> I tested with the Blobs sample image. Let me know if I can be of further
> help debugging this.
>
> Best,
> Jan
>
>
> [1]: http://fiji.sc/Trainable_Weka_Segmentation#Training_features
>
> [2]: Stack trace:
>
> java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError:
> net.imglib2.view.Views.extendMirrorSingle(Lnet/imglib2/RandomAccessibleInterval;)Lnet/imglib2/ExtendedRandomAccessibleInterval;
>         java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         java.util.concurrent.FutureTask.get(FutureTask.java:83)
>
> trainableSegmentation.FeatureStack.updateFeaturesMT(FeatureStack.java:3089)
>
> trainableSegmentation.FeatureStackArray.updateFeaturesMT(FeatureStackArray.java:245)
>
> trainableSegmentation.Weka_Segmentation$SaveFeatureStackButtonListener.actionPerformed(Weka_Segmentation.java:2415)
> java.awt.Button.processActionEvent(Button.java:392)
> java.awt.Button.processEvent(Button.java:360)
> java.awt.Component.dispatchEventImpl(Component.java:4630)
> java.awt.Component.dispatchEvent(Component.java:4460)
> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
> java.awt.Dialog$1.run(Dialog.java:1046)
> java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
> java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
>
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
> java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>
> at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
> at java.util.concurrent.FutureTask.get(FutureTask.java:83)
> at
> trainableSegmentation.FeatureStack.updateFeaturesMT(FeatureStack.java:3089)
> at
> trainableSegmentation.FeatureStackArray.updateFeaturesMT(FeatureStackArray.java:245)
> at
> trainableSegmentation.Weka_Segmentation$SaveFeatureStackButtonListener.actionPerformed(Weka_Segmentation.java:2415)
> at java.awt.Button.processActionEvent(Button.java:392)
> at java.awt.Button.processEvent(Button.java:360)
> at java.awt.Component.dispatchEventImpl(Component.java:4630)
> at java.awt.Component.dispatchEvent(Component.java:4460)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
> at java.awt.Dialog$1.run(Dialog.java:1046)
> at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>
> Caused by: java.lang.NoSuchMethodError:
> net.imglib2.view.Views.extendMirrorSingle(Lnet/imglib2/RandomAccessibleInterval;)Lnet/imglib2/ExtendedRandomAccessibleInterval;
>         at
> net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:101)
>         at
> net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:74)
>         at
> net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:59)
>         at
> trainableSegmentation.FeatureStack$17.call(FeatureStack.java:1769)
>         at trainableSegmentation.FeatureStack$17.call(FeatureStack.java:1)
>         at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:619)
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>



--
Ignacio Arganda-Carreras, Ph.D.
Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
Bâtiment 2
INRA Centre de Versailles-Grignon
Route de St-Cyr (RD10)
78026 Versailles Cedex France

Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
Website: http://sites.google.com/site/iargandacarreras/
<http://biocomp.cnb.csic.es/~iarganda/index_EN.html>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka Segmentation bugs

Ignacio Arganda-Carreras-2
Hello again Jan,

In fact, I cannot reproduce the error with the Gabor filters. Everything
works fine with my up-to-date Fiji.

I tried on two different machines with Ubuntu and OS and on both the plugin
worked well.

ignacio

On Tue, Apr 21, 2015 at 3:14 PM, Ignacio Arganda-Carreras <
[hidden email]> wrote:

> Hello Jan!
>
>
>
>> 1) In the "Settings" dialog, the "Save feature stack" button only takes
>> into account those features that were saved (i.e. that were active before
>> displaying the dialog). If the user has changed their selection of
>> features, the saved feature stack doesn't reflect this unless you click on
>> 'OK', re-open 'Settings' and click on 'Save feature stack'. Why not putting
>> the "Save feature stack" button in the main window?
>>
>>
> That's a known behavior with unfortunately not an easy solution. I thought
> on moving the "Save feature stack" button to the main window indeed but I
> found it already quite overloaded...
>
>
>> 2) Activating the "Gabor" training feature results in the stack trace
>> below being thrown [2]. I wasn't able to figure out if it's a bug in
>> ImgLib2's FFTConvolution class or in the Trainable Segmentation plugin.
>>
>
> Aha! It looks like a problem with the ImgLib2 re-factoring. I fixed it
> once but it's probably back so I'll dig into it.
>
> Thank you very much for reporting!
>
> ignacio
>
>
>
>>
>> I tested with the Blobs sample image. Let me know if I can be of further
>> help debugging this.
>>
>> Best,
>> Jan
>>
>>
>> [1]: http://fiji.sc/Trainable_Weka_Segmentation#Training_features
>>
>> [2]: Stack trace:
>>
>> java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError:
>> net.imglib2.view.Views.extendMirrorSingle(Lnet/imglib2/RandomAccessibleInterval;)Lnet/imglib2/ExtendedRandomAccessibleInterval;
>>         java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>>         java.util.concurrent.FutureTask.get(FutureTask.java:83)
>>
>> trainableSegmentation.FeatureStack.updateFeaturesMT(FeatureStack.java:3089)
>>
>> trainableSegmentation.FeatureStackArray.updateFeaturesMT(FeatureStackArray.java:245)
>>
>> trainableSegmentation.Weka_Segmentation$SaveFeatureStackButtonListener.actionPerformed(Weka_Segmentation.java:2415)
>> java.awt.Button.processActionEvent(Button.java:392)
>> java.awt.Button.processEvent(Button.java:360)
>> java.awt.Component.dispatchEventImpl(Component.java:4630)
>> java.awt.Component.dispatchEvent(Component.java:4460)
>> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>
>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>>
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>>
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
>> java.awt.Dialog$1.run(Dialog.java:1046)
>> java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
>> java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
>>
>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>>
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>>
>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
>> java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>>
>> at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>> at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>> at
>> trainableSegmentation.FeatureStack.updateFeaturesMT(FeatureStack.java:3089)
>> at
>> trainableSegmentation.FeatureStackArray.updateFeaturesMT(FeatureStackArray.java:245)
>> at
>> trainableSegmentation.Weka_Segmentation$SaveFeatureStackButtonListener.actionPerformed(Weka_Segmentation.java:2415)
>> at java.awt.Button.processActionEvent(Button.java:392)
>> at java.awt.Button.processEvent(Button.java:360)
>> at java.awt.Component.dispatchEventImpl(Component.java:4630)
>> at java.awt.Component.dispatchEvent(Component.java:4460)
>> at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>> at
>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>> at
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>> at
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
>> at java.awt.Dialog$1.run(Dialog.java:1046)
>> at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
>> at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
>> at
>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>> at
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>> at
>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
>> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
>> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
>> at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>>
>> Caused by: java.lang.NoSuchMethodError:
>> net.imglib2.view.Views.extendMirrorSingle(Lnet/imglib2/RandomAccessibleInterval;)Lnet/imglib2/ExtendedRandomAccessibleInterval;
>>         at
>> net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:101)
>>         at
>> net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:74)
>>         at
>> net.imglib2.algorithm.fft2.FFTConvolution.<init>(FFTConvolution.java:59)
>>         at
>> trainableSegmentation.FeatureStack$17.call(FeatureStack.java:1769)
>>         at trainableSegmentation.FeatureStack$17.call(FeatureStack.java:1)
>>         at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>         at java.lang.Thread.run(Thread.java:619)
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>
>
>
> --
> Ignacio Arganda-Carreras, Ph.D.
> Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
> Bâtiment 2
> INRA Centre de Versailles-Grignon
> Route de St-Cyr (RD10)
> 78026 Versailles Cedex France
>
> Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
> Website: http://sites.google.com/site/iargandacarreras/
> <http://biocomp.cnb.csic.es/~iarganda/index_EN.html>
>



--
Ignacio Arganda-Carreras, Ph.D.
Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
Bâtiment 2
INRA Centre de Versailles-Grignon
Route de St-Cyr (RD10)
78026 Versailles Cedex France

Tel : +33 (0)1 30 83 30 00 - fax : +33 (0)1 30 83 33 19
Website: http://sites.google.com/site/iargandacarreras/
<http://biocomp.cnb.csic.es/~iarganda/index_EN.html>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Trainable Weka Segmentation bugs

Jan Eglinger
In reply to this post by Ignacio Arganda-Carreras-2
Hi Ignacio,

On 21.04.2015 15:14, Ignacio Arganda-Carreras wrote:

>> 1) In the "Settings" dialog, the "Save feature stack" button only takes
>> into account those features that were saved (i.e. that were active before
>> displaying the dialog). If the user has changed their selection of
>> features, the saved feature stack doesn't reflect this unless you click on
>> 'OK', re-open 'Settings' and click on 'Save feature stack'. Why not putting
>> the "Save feature stack" button in the main window?
>>
>>
> That's a known behavior with unfortunately not an easy solution. I thought
> on moving the "Save feature stack" button to the main window indeed but I
> found it already quite overloaded...
>

Alright, I can live with the current behavior. I agree that it might be
good not to overload the main window.

>
>> 2) Activating the "Gabor" training feature results in the stack trace
>> below being thrown [2]. I wasn't able to figure out if it's a bug in
>> ImgLib2's FFTConvolution class or in the Trainable Segmentation plugin.
>>
> In fact, I cannot reproduce the error with the Gabor filters. Everything
> works fine with my up-to-date Fiji.

Sorry for the false alarm: I stepped into the class shading trap,
because the MOSAIC update site was active in that Fiji installation, and
unfortunately Mosaic_Toolsuite.jar shades some imglib2 classes...

So for now, do not use Mosaic_Toolsuite if you plan to use Gabor filters
in Trainable Weka Segmentation.

Cheers
Jan

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html