• Stars
    star
    441
  • Rank 98,861 (Top 2 %)
  • Language
    C++
  • License
    BSD 2-Clause "Sim...
  • Created over 10 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A framework for high-performance medical image processing, neural network inference and visualization

GitHub Discussions Join the chat on Gitter GitHub Downloads Pip Downloads

FAST is an open-source framework with the main goal of making it easier to do high-performance processing, neural network inference, and visualization of medical images utilizing multi-core CPUs and GPUs. To achieve this, FAST use modern C++, OpenCL and OpenGL, and neural network inference libraries such as TensorRT, OpenVINO, TensorFlow and ONNX Runtime.

Get started

See installation instructions for Windows, Ubuntu Linux and macOS.

To start using the framework, check out the C++ tutorials or the Python tutorials.

Learn best by example? Check out all the examples for C++ and Python.

For more examples and documentation, go to fast.eriksmistad.no.

Need help? Post your questions on the Discussions page or use the Gitter Chat.

Main features

  • Data streaming – Processing pipelines in FAST can handle both static and dynamic/temporal data without any change to the code. FAST can stream data from movie files, your webcamera, an Intel RealSense camera, a sequence of images and even directly from ultrasound scanners such as Clarius.
  • Deep learning – FAST provides a common interface for neural networks supporting different model formats (ONNX, protobuf, SavedModel, OpenVINO, UFF) and backends (Google TensorFlow, NVIDIA TensorRT, Intel OpenVINO, Microsoft ONNX Runtime), making it possible to create real-time neural network pipelines.
  • High-level data management – Data objects in FAST represent data, such as an image, on all processors. FAST keeps data coherent across the different storage areas thereby removing the burden of explicit memory handling from the developer.
  • Wide data format support - FAST supports several data formats (DICOM, metaimage (MHD), NIFTI, regular jpg/png/bmp images, videos, HDF5, VTK polydata, whole slide images, ultrasound file format) and data types (images 2D and 3D, grayscale and color, image pyramids, surface mesh, vertices, lines, text ++).
  • High performance algorithms – FAST has several high performance parallel OpenCL implementations of common algorithms, such as marching cubes surface extraction, Gaussian smoothing, non-local means, block matching tracking and seeded region growing.
  • Fast concurrent visualization – Rendering and computation are done in separate threads to ensure smooth responsive visualizations. Several types of visualizations are supported both 3D (mesh, point, line, image slice and volume rendering) and 2D (2D image, image slice and segmentation/label rendering, whole slide image (WSI) pyramids).
  • Interoperability – FAST can be used with Python and can also be easily integrated into existing Qt applications.

Research

FAST has been described in the following research articles. If you use this framework for research please cite them:

FAST: framework for heterogeneous medical image computing and visualization Erik Smistad, Mohammadmehdi Bozorgi, Frank Lindseth International Journal of Computer Assisted Radiology and Surgery 2015

High Performance Neural Network Inference, Streaming, and Visualization of Medical Images Using FAST Erik Smistad, Andreas Østvik, André Pedersen IEEE Access 2019

Build

To setup and build the framework, see the instructions for your operating system:

License

FAST itself is licenced under the permissive BSD 2-clause license, however the binary releases of FAST include several third-party libraries which use a number of different open source licences (MIT, Apache 2.0, LGPL ++), see the licences folder in the release for more details.

Surface mesh extracted from a large abdominal CT scan. Alpha blending ray casting rendering of a thorax CT image.

Ultrasound image segmentation using neural netwoks. Whole slide microscopy image.

More Repositories

1

GPU-Marching-Cubes

A GPU implementation of the Marching Cubes algorithm for extracting surfaces from volumes using OpenCL and OpenGL
C
192
star
2

OpenCL-Getting-Started

A small "getting started" tutorial for OpenCL. See http://www.eriksmistad.no/getting-started-with-opencl-and-gpu-computing/ for more info
C
95
star
3

Tube-Segmentation-Framework

A software for fast segmentation and centerline extraction of tubular structures (e.g. blood vessels and airways) from different modalities and organs using GPUs and OpenCL
C++
92
star
4

OpenCLUtilities

A small set of function based on the OpenCL C++ bindings to help set up an OpenCL and OpenCL-GL context as well as compiling OpenCL code
C++
36
star
5

OpenCL-Gaussian-Blur

An example of Gaussian blur using OpenCL and the built-in Images/textures
C++
32
star
6

annotationweb

A web-based annnotation system for easy annotation of image sequences such as ultrasound and camera recordings
Python
32
star
7

OpenCL-GVF

An optimized OpenCL implementation of Gradient Vector Flow (GVF) that runs on GPUs and CPUs for both 2D and 3D. For more details about the implementation, see the scientific article Real-time gradient vector flow on GPUs using OpenCL http://www.springerlink.com/content/v0071r27706u5135/
C++
30
star
8

visualize-caffe

Some useful python functions for visualizing a caffe network
Python
27
star
9

SIPL

The Simple Image Processing Library (SIPL) is a C++ library with the main goal of making it easy to go from an algorithm concept to pictures on the screen.
C++
27
star
10

GTest

Just a simple test of the google C++ unit test framework (GTest)
C++
25
star
11

3D-Gradient-Vector-Flow-for-Matlab

This is an implementation of Gradient Vector Flow (GVF) for 3D in Matlab. It is based on the original 2D implementation of Xu and Prince.
MATLAB
22
star
12

convert-tensorflow-model-to-tensorrt-uff

Simple script to convert a frozen tensorflow .pb file to TensorRT UFF format
Python
18
star
13

OpenCL-Level-Set-Segmentation

Parallel/GPU level set volume segmentation using OpenCL
C++
18
star
14

konverter-norgeskart-projeksjon

Dette scriptet konverterer norgeskart fra genorge i UTM-33 projeksjon til EPSG:3857 som Google og Leaflet bruker
Python
13
star
15

Qt-OpenGL-OpenCL-Interoperability

Testing Qt, OpenGL and OpenCL interoperability
C++
10
star
16

Multiple-Windows-Single-OpenGL-Context

A simple test for having multiple windows with the same OpenGL context using GLUT
C++
9
star
17

Memory-mapped-file

Creating a memory mapped file using the boost iostrames library
C++
4
star
18

OpenCLUtilityLibrary

C++
4
star
19

GPU-Multigrid-Gradient-Vector-Flow

A GPU implementation of a full multgrid solver of Gradient Vector Flow (GVF) using OpenCL
C++
4
star
20

SIPL-Example

This is an example of how to use the Simple Image Processing Library (see www.github.com/smistad/SIPL/).
C++
4
star
21

Gradient-Vector-Flow

C++ implementation of Gradient Vector Flow
C++
3
star
22

FAST-dependencies

Project for building third party library dependencies of FAST
CMake
2
star
23

simple-cpp-plugin-test

Small test of a simple plugin system in C++ for Windows and Linux
C++
2
star
24

FAST-example-project

C++
1
star
25

FAST-WSI-pipeline-and-gui

C++
1
star
26

FAST-data-hub

A web based system for sharing and deploying medical image data, neural network models and pipelines for FAST
CSS
1
star
27

Level-Set-Segmentation

C
1
star
28

SWIG-test

A test for creating python bindings of a C++ library using SWIG and CMake
C++
1
star
29

Detect-Screen-GPU-With-OpenCL

A test script to see if it is possible to detect which GPU is connected to the screen using OpenCL. The purpose of this is to use the GPU connected to screen for visualizations and the others for computation only.
C++
1
star