Skip to content
This repository has been archived by the owner on Mar 17, 2021. It is now read-only.

Google Summer of Code (GSoC) 2019 Ideas List

Tom Vercauteren edited this page Feb 25, 2019 · 14 revisions

WARNING -- NiftyNet is not accepting any GSoC applications

Unfortunately, we are not able to open any project. This page is only kept live to keep track of ideas in the coming year.

Introduction

This was the list of ideas for students wishing to apply for Google Summer of Code 2019. For more information on how to apply, see the GSoC Student Guide. This list is here for inspiration and to give students an idea of what directions may be good for NiftyNet. We are also welcome to student-led proposals!

Project Ideas

Random thoughts are being collected in issue #307 and consolidated here.

Project #1: Integration of TensorFlow Hub for modular inference and transfer learning

Project description:

TensorFlow Hub (https://www.tensorflow.org/hub/) provides interfaces for handling 'checkpoints' of a trained network which includes a TensorFlow graph and the corresponding trained weights/assets. The checkpoint is itself a self-contained module, and the TF Hub APIs will make it relatively easy to publish, discover, and reuse the module.

The goal of this project is to make NiftyNet compatible with these interfaces, so that we can:

  • load a TF Hub module using NiftyNet's engine, and make inference;
  • finetune TF Hub module with training samples generated using NiftyNet's IO;
  • enhance NiftyNet's model zoo design using TF Hub.

Minimal programming language requirement: Python

Difficulty level: Easy/Medium

Potential Mentor(s): Wenqi Li - wyli3873 at gmail.com

Project #2: Streaming Interventional Data for Network Inference

Project description:

This project aims to link NiftyNet to one of the open source data acquisition libraries used in medical image guided interventions and surgeries, such as OpenIGTLink, such that machine learning models built in NiftyNet can be used, without substantially extra coding effort, with real-time acquired images, or other types of data such as spatial tracking. This enables applications such as medical procedure simulations and surgical guidance to utilise many readily available NiftyNet models.

Minimal programming language requirement: Python

Difficulty level: Medium

Potential Mentor(s): Yipeng Hu - yipeng.hu at ucl.ac.uk

Project #3: Niftynet And The Model Zoo - Rework For The Next Generation of Deep Learning Applications

Project description:

Niftynet is a powerful deep learning suite for the medical imaging field; we want to build on its success so far making it even easier to develop cutting-edge models and deploy them to the Model Zoo. Niftynet provides you with a suite of tools that help you develop networks based on TensorFlow and give you pre- and post-processing functionality to help you integrate your network with medical imaging data sources and databases. We intend to undergo a series of big improvements to the model building capability of Niftynet based on what we have learned from the model zoo thus far; our goal is to give model writers the means to create new applications with much less coding than before and to enable application writers to embed Niftynet networks into complex, interactive workflows.

Minimal programming language requirement: Python

Difficulty level: Medium

Potential Mentor(s): Ben Murray - benjamin.murray at kcl.ac.uk

Project #4: NiftyNet and 3D Slicer - Integrate NiftyNet Into Slicer for Great Good

Project description:

3D Slicer is a powerful open source tool for medical imaging informatics, image processing and 3D visualisation. It has a plugin architecture that allows integration of applications into Slicer and Slicer into applications, and our goal is to integrate Niftynet into Slicer so that Slicer can be used as the front end of a deep learning platform. Where possible, we'll leverage existing tools (such as deepinfer) to do some of the heavy lifting, so that we can focus on bringing Slicer users the capability to seamlessly train and validate models and visualise results without having to leave Slicer.

Minimal programming language requirement: Python

Difficulty level: Medium

Potential Mentor(s): Ben Murray - benjamin.murray at kcl.ac.uk

Proposing Your Own Idea

You can apply with something completely different if you like. The best project for you is one you are interested in, and are knowledgeable about. That way, you will be the most successful in your project and have the most fun doing it, while we will be the most confident in your commitment and your ability to complete it.

If you do want to suggest your own idea, please discuss it with us first, so we can determine if it is already been implemented, if it is enough work to constitute a summer's worth of coding, if it is not too much work, and if it is within the scope of our project.

How to submit

The application process has several steps. Before contacting anybody verify that you are eligible, that is that you are enrolled as student, can work full-time on the project, etc. The next step is to contact the mentor of the project you are interested in. You have to convince her/him that you are the right person to get the job done. The next step is to work out more details and to contact us by providing the following information by email to: niftynet-team@googlegroups.com

Your application should include the following information:

  • Contact information
    • Your name
    • A phone number
    • An email address where we can reach you for daily communication
  • Experience
    • Please list any experience you’ve had in software development, including relevant class projects, internships, undergraduate or graduate research, and/or contributions to open source projects. For each example, please include a brief description of the overall project along with the specific contributions you made and when you made them.
  • In addition to the above information, we are interested in concrete examples of your work, which may include:
    • Sample code: please send an example of code you have written that you are proud of; be prepared to answer questions about it.
    • Publications: if you have participated in undergraduate or graduate research, please include a copy of any relevant publications.
    • Specialized skills: if you have experience/skills in particular areas that you believe would be useful to one of our projects, please let us know.
    • Personal website: if you have a website that discusses your research or other projects, please include a link.
    • References: names and contact information for people you have worked with who can recommend you.
  • Statement of intent
    • In a paragraph or two, describe your interests and background. Please tell us which of the project ideas you are interested in and why you’d like to work on it. If you have a proposal for a project not included on our list, please describe the idea clearly and provide a motivation for the work and a timeline for how you plan to accomplish it.
Clone this wiki locally