• Stars
    star
    100
  • Rank 330,740 (Top 7 %)
  • Language
    Julia
  • License
    MIT License
  • Created about 4 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

3D computer vision library in Julia

Flux3D.jl


Flux3D.jl is a 3D vision library, written completely in Julia. This package utilizes Flux.jl and Zygote.jl as its building blocks for training 3D vision models and for supporting differentiation. This package also have support of CUDA GPU acceleration with CUDA.jl.The primary motivation for this library is to provide:

  • Batched Data structure for 3D data like PointCloud, TriMesh and VoxelGrid for storing and computation.
  • Transforms and general utilities for processing 3D structures.
  • Metrics for defining loss objectives and predefined 3D models.
  • Easy access to loading and pre-processing standard 3D datasets.
  • Visualization utilities for PointCloud, TriMesh and VoxelGrid.
  • Inter-Conversion between different 3D structures.

Any suggestions, issues and pull requests are most welcome.

Installation

This package is stable enough for use in 3D Machine Learning Research. It has been registered. To install the latest release, type the following in the Julia 1.6+ prompt.

julia> ]
(v1.6) pkg> add Flux3D

To install the master branch type the following

julia> ]
(v1.6) pkg> add Flux3D#master

Examples

Usage Examples

julia> using Flux3D

julia> m = load_trimesh("teapot.obj") |> gpu
TriMesh{Float32, UInt32, CUDA.CuArray} Structure:
    Batch size: 1
    Max verts: 1202
    Max faces: 2256
    offset: -1
    Storage type: CUDA.CuArray

julia> laplacian_loss(m)
0.05888283f0

julia> compute_verts_normals_packed(m)
3Γ—1202 CUDA.CuArray{Float32,2,Nothing}:
  0.00974202   0.00940375   0.0171322   …   0.841262   0.777704   0.812894
 -0.999953    -0.999953    -0.999848       -0.508064  -0.607522  -0.557358
  6.14616f-6   0.00249814  -0.00317568     -0.184795  -0.161533  -0.168985

julia> new_m = Flux3D.normalize(m)
TriMesh{Float32, UInt32, CUDA.CuArray} Structure:
    Batch size: 1
    Max verts: 1202
    Max faces: 2256
    offset: -1
    Storage type: CUDA.CuArray

julia> save_trimesh("normalized_teapot.obj", new_m)

Citation

If you use this software as a part of your research or teaching, please cite this GitHub repository. For convenience, we have also provided the BibTeX entry in the form of CITATION.bib file.

@misc{Suthar2020,
    author = {Nirmal Suthar, Avik Pal, Dhairya Gandhi},
    title = {Flux3D: A Framework for 3D Deep Learning in Julia},
    year = {2020},
    publisher = {GitHub},
    journal = {GitHub repository},
    howpublished = {\url{https://github.com/FluxML/Flux3D.jl}},
}

Benchmarks

PointCloud Transforms (Flux3D.jl and Kaolin)

Benchmark plot for PointCloud transforms

TriMesh Transforms (Flux3D.jl and Kaolin)

Benchmark plot for TriMesh transforms

Metrics (Flux3D.jl and Kaolin)

Benchmark plot for Metrics

Current Roadmap

  • Add Batched Structure for PointCloud and TriMesh.
  • Add Transforms/Metrics for PointCloud and TriMesh.
  • GPU Support using CUDA.jl
  • Add Dataset support for ModelNet10/40.
  • Add Batched 3D structure and Transform for Voxels.
  • Interconversion between different 3D structures like PointCloud, Voxel and TriMesh.
  • Add more metrics for TriMesh (like normal_consistency and cloud_mesh_distance)

More Repositories

1

Flux.jl

Relax! Flux is the ML library that doesn't make you tensor
Julia
4,359
star
2

Zygote.jl

21st century AD
Julia
1,431
star
3

model-zoo

Please do not feed the models
Julia
878
star
4

FastAI.jl

Repository of best practices for deep learning in Julia, inspired by fastai
Julia
578
star
5

GeometricFlux.jl

Geometric Deep Learning for Flux
Julia
348
star
6

Metalhead.jl

Computer vision models for Flux
Julia
314
star
7

MacroTools.jl

MacroTools provides a library of tools for working with Julia code and expressions.
Julia
301
star
8

Torch.jl

Sensible extensions for exposing torch in Julia.
Julia
200
star
9

NNlib.jl

Neural Network primitives with multiple backends
Julia
188
star
10

MLJFlux.jl

Wrapping deep learning models from the package Flux.jl for use in the MLJ.jl toolbox
Julia
140
star
11

ONNX.jl

Read ONNX graphs in Julia
Julia
137
star
12

FluxTraining.jl

A flexible neural net training library inspired by fast.ai
Julia
114
star
13

IRTools.jl

Mike's Little Intermediate Representation
Julia
107
star
14

Functors.jl

Parameterise all the things
Julia
107
star
15

Mjolnir.jl

A little less conversation, a little more abstraction
Julia
87
star
16

Optimisers.jl

Optimisers.jl defines many standard optimisers and utilities for learning loops.
Julia
68
star
17

DaggerFlux.jl

Distributed computation of differentiation pipelines to use multiple workers, devices, GPU, etc. since Julia wasn't fast enough already
Julia
65
star
18

Gym.jl

Gym environments in Julia
Julia
54
star
19

FluxML-Community-Call-Minutes

The FluxML Community Team repo
51
star
20

Tracker.jl

Flux's ex AD
Julia
50
star
21

XLA.jl

"Maybe we have our own magic."
Julia
47
star
22

FluxJS.jl

I heard you like compile times
Julia
42
star
23

DataAugmentation.jl

Flexible data augmentation library for machine and deep learning
Julia
41
star
24

HuggingFaceApi.jl

Julia
33
star
25

Hydra.jl

SPMD + Neural Nets
Julia
31
star
26

ParameterSchedulers.jl

Common hyperparameter scheduling for ML
Julia
28
star
27

Alloc.jl

Julia
26
star
28

Trebuchet.jl

throw stuff
Julia
21
star
29

fluxml.github.io

Flux Website
HTML
20
star
30

YaoFlux.jl

Differentiable programming on quantum circuits with Flux
Julia
19
star
31

OneHotArrays.jl

Memory efficient one-hot array encodings
Julia
17
star
32

ZygoteRules.jl

Julia
15
star
33

FluxBench.jl

Benchmarks for the FluxML ecosystem for deep learning, scientific machine learning, differentiable programming etc including AD and CUDA accelerated workloads
Julia
14
star
34

NNlibCUDA.jl

CUDA integration for the NNlib API
Julia
14
star
35

DiffImages.jl

Differentiable Computer Vision using pure Julia
Julia
14
star
36

Fluxperimental.jl

Experimental features for Flux.jl
Julia
13
star
37

SafeTensors.jl

Julia
9
star
38

MetalheadWeights

Pre-trained model weight artifacts for Metalhead.jl
Julia
7
star
39

FluxMLBenchmarks.jl

A benchmarking suite for the FluxML org
Julia
6
star
40

IArrays.jl

Julia
5
star
41

differentiable.dev

HTML
3
star
42

FluxCUDA.jl

Julia
3
star
43

FluxMLDocs

Unified documentation across the FluxML ecosystem
Julia
1
star
44

.github

Repository for default community health files
1
star