PennLINC / qsiprep

Preprocessing of diffusion MRI
http://qsiprep.readthedocs.io
BSD 3-Clause "New" or "Revised" License
140 stars 58 forks source link

Deep-learner for classifying bad DWI volumes? #10

Closed dPys closed 5 years ago

dPys commented 5 years ago

Since fMRI folks not trained in the nuances of dMRI who plan to apply qsiprep to big datasets might be tempted not to look at their data, would it be worth training a little deep learner (e.g. using https://github.com/satra/nobrainer) to classify volume by volume of the raw dwi inputs and check for obvious anomalies (e.g. gross signal dropout, venetian blind artifact). That way such bad volumes could at least be flagged if not removed entirely, depending on the coverage of the sampling scheme? This would be along the lines of mriqc but a bit more dwi-specific.

@dPys

mattcieslak commented 5 years ago

A deep learner would be more difficult for diffusion than fmri or structural because the appearance of the images depends on where you're sampling q-space. We'd need to train on a ton of different sampling schemes, pulse sequences, voxel sizes, etc. I like the idea, and have found trained deep learners in containers to be very useful for other applications. Do you know of a source for the training data? Or where we could run the training?

Another option would be to train it on the "slice quality" matrices that come out of eddy or shoreline. These are based on an internal model of q space, so no deep learning is necessary. You can also see signal dropout and zipper artifacts (eg https://qsiprep.readthedocs.io/en/latest/_images/sub-abcd_carpetplot.svg). The raw data behind these isn't saved in the derivatives at the moment but that's an easy fix. What do you think?

dPys commented 5 years ago

Hmm, we could just start regularly adding bad 3d dwi volumes identified by visual inspection to an s3 bucket, along with associated metadata (voxel res, sampling scheme, etc.) in accompanying .json files. I like the idea of including slice quality metrics as well in the metadata. We could stack a CNN (based on the entire 3d array) with some other simpler learner (e.g. SVM) that uses the metadata as features.

Also @akeshavan and II briefly discussed something based on examples classified using braindr.

mattcieslak commented 5 years ago

I think this might need to wait until there is a publicly available piece of software that can do this. Closing for now

dPys commented 5 years ago

Or we can build it in a separate repo? Maybe we could call it 'DDWIClassify' for Deep DWI Classification of noisy volumes...