计图(Jittor)最新动态


开源机器学习框架——计图(Jittor)

计图(Jittor):一个完全基于动态编译(Just-in-time),内部使用创新的元算子和统一计算图的深度学习框架, 元算子和Numpy一样易于使用,并且超越Numpy能够实现更复杂更高效的操作。而统一计算图则是融合了静态计算图和动态计算图的诸多优点,在易于使用的同时,提供高性能的优化。基于元算子开发的深度学习模型,可以被计图实时的自动优化并且运行在指定的硬件上,如CPU,GPU。


Jittor设计理念

易用且可定制

用户只需要数行代码,就可定义新的算子和模型,在易用的同时,不丧失任何可定制性。

实现与优化分离

用户可以通过前端接口专注于实现,而实现自动被后端优化。从而提升前端代码的可读性,以及后端优化的鲁棒性和可重用性。

所有都是即时的

Jittor的所有代码都是即时编译并且运行的,包括Jittor本身。用户可以随时对Jittor的所有代码进行修改,并且动态运行。


Jittor精选仓库

GAN

Jittor GAN模型库一共包括了从2014到2019最主流的27种GAN模型。这27个GAN总计被引用60953次,每篇文章平均引用次数为2176。

实例分割

Jittor实例分割模型库一共包含了6种Backbone,和11类检测分割模型,包含最经典的Mask RCNN系列,实时实例分割网络以及人体分割网络等等。

语义分割

目前,Jittor已经支持了目前主流的语义分割算法。其中包含了三种经典的 Backbone ,以及六种常见的分割模型。

点云

计图框架本次发布的点云模型库包括几种最有影响力的模型:PointNet、PointNet++、PointCNN、DGCNN 和PointConv ,支持分类和分割。

可微渲染

可微渲染目前被广泛地应用于三维重建,同时在人体重建、人脸重建、三维属性估计等应用。目前,Jrender已经支持可微表面渲染和可微体渲染特性。

遥感检测

JDet是基于Jittor的遥感目标检测算法库。JDet目前提供了4个主流遥感目标检测:S2ANet、Gliding、RetinaNet和Faster R-CNN,其他主流模型陆续添加中。

医学图像分割

Jittor Medical Segmentation Lib -- The assignment of Pattern Recognition course (2021 Spring) in Tsinghua University.

PCT

This is a Jittor implementation of PCT: Point Cloud Transformer.

DeepFaceDrawing

One version of our system is implemented using the Jittor, and you need to install Jittor first. We will also provide a version in pytorch.

JittorVis

JittorVis is an open-source library for understanding the inner workings of Jittor models by visually illustrating their dataflow graphs.

PraNet

Parallel Reverse Attention Network for Polyp Segmentation.

DeepFaceEditing

Deep Face Generation and Editing with Disentangled Geometry and Appearance Control.

SINet-V2

Concealed Object Detection (SINet-V2, IEEE TPAMI 2021). Code using Jittor Framework is available.

hlagcn

Jittor implementation of the paper "Hierarchical Layout-Aware Graph Convolutional Network for Unified Aesthetics Assessment".

Jittor-Image-Models

About Jittor Image Models is a library for pulling together a wide variety of SOTA deep learning models in the Jittor framework.

LearnJittorBasicIn60Min

计图零基础快速入门教程(60分钟)

di-fusion-network-jittor

Jittor implementation of the network architecture in DI-Fusion: Online Implicit 3D Reconstruction with Deep Priors.

Zhusuan

Zhusuan with backend Jittor.

PRS-Net

This repository is code release for PRS-Net: Planar Reflective Symmetry Detection Net for 3D Models.

PFSegNets

This repo contains the the implementation of CVPR-2021 work: PointFlow: Flowing Semantics Through Points for Aerial Image Segmentation by Jittor.

APDrawingGAN

We provide Jittor implementations for our CVPR 2019 oral paper "APDrawingGAN: Generating Artistic Portrait Drawings from Face Photos with Hierarchical GANs".

APDrawingGAN2

We provide Jittor implementations for our TPAMI 2020 paper "Line Drawings for Face Portraits from Photos using Global and Local Structure based GANs".

CMIC-Retrieval

Code for Single Image 3D Shape Retrieval via Cross-Modal Instance and Category Contrastive Learning. ICCV 2021.

Unpaired-Portrait-Drawing

We provide Jittor implementations for our CVPR 2020 paper "Unpaired Portrait Drawing Generation via Asymmetric Cycle Mapping".

Jittor-MLP

Unofficial Implementation of MLP-Mixer, gMLP, resMLP, Vision Permutator, S2MLPv2, ConvMLP, ConvMixer in Jittor.


安装

OS
Ubuntu / Debian / 统信 / ...
CentOS / redhat / 麒麟 / ...
Mac
Windows
Package
Conda
Pip
Source
Platform
CPU
CUDA
OpenCL
Install


Jittor(计图): 即时编译深度学习框架

Jittor 是一个基于即时编译和元算子的高性能深度学习框架,整个框架在即时编译的同时,还集成了强大的Op编译器和调优器,为您的模型生成定制化的高性能代码。

Jittor前端语言为Python。前端使用了模块化的设计,类似于PyTorch,Keras,后端则使用高性能语言编写,如CUDA,C++。

下面的代码演示了如何一步一步使用Python代码,从头对一个双层神经网络建模。

import jittor as jt
from jittor import Module
from jittor import nn
class Model(Module):
    def __init__(self):
        self.layer1 = nn.Linear(1, 10)
        self.relu = nn.Relu() 
        self.layer2 = nn.Linear(10, 1)
    def execute (self,x) :
        x = self.layer1(x)
        x = self.relu(x)
        x = self.layer2(x)
        return x

def get_data(n): # generate random data for training test.
    for i in range(n):
        x = np.random.rand(batch_size, 1)
        y = x*x
        yield jt.float32(x), jt.float32(y)

model = Model()
learning_rate = 0.1
optim = nn.SGD(model.parameters(), learning_rate)

for i,(x,y) in enumerate(get_data(n)):
    pred_y = model(x)
    loss = ((pred_y - y)**2)
    loss_mean = loss.mean()
    optim.step (loss_mean)
    print(f"step {i}, loss = {loss_mean.data.sum()}")

大纲

教程

在教程部分,我们将简要解释Jittor的基本概念。

要使用Jittor训练模型,您需要了解两个主要概念:

  • Var:Jittor的基本数据类型
  • Operations:Jittor的算子与numpy类似

数据类型

首先,让我们开始使用Var。Var是jittor的基本数据类型,为了运算更加高效Jittor中的计算过程是异步的。 如果要访问数据,可以使用Var.data进行同步数据访问。

import jittor as jt
a = jt.float32([1,2,3])
print (a)
print (a.data)
# Output: float32[3,]
# Output: [ 1. 2. 3.]

此外我们可以给变量起一个名字。

a.name('a')
print(a.name())
# Output: a

数据运算

Jittor的算子与numpy类似。 让我们尝试一些运算, 我们通过Opjt.float32创建Var ab,并将它们相加。 输出这些变量相关信息,可以看出它们具有相同的形状和类型。

import jittor as jt
a = jt.float32([1,2,3])
b = jt.float32([4,5,6])
c = a*b
print(a,b,c)
print(type(a), type(b), type(c))
# Output: float32[3,] float32[3,] float32[3,]
# Output: <class 'jittor_core.Var'> <class 'jittor_core.Var'> <class 'jittor_core.Var'>

除此之外,我们使用的所有算子jt.xxx(Var,...)都具有别名Var.xxx(...)。 例如:

c.max() # alias of jt.max(a)
c.add(a) # alias of jt.add(c, a)
c.min(keepdims=True) # alias of jt.min(c, keepdims=True)

如果您想知道Jittor支持的所有运算,可以运行help(jt.ops)。 您在jt.ops.xxx中找到的所有运算都可以通过别名jt.xxx

help(jt.ops)
# Output:
#   abs(x: core.Var) -> core.Var
#   add(x: core.Var, y: core.Var) -> core.Var
#   array(data: array) -> core.Var
#   binary(x: core.Var, y: core.Var, op: str) -> core.Var
#   ......

更多教程

如果您想进一步了解Jittor,请查看以下教程:

贡献

Jittor还很年轻。它可能存在错误和问题。请在我们的错误跟踪系统中报告它们。我们欢迎您为Jittor做出贡献。此外,如果您对Jittor有任何想法,请告诉我们,Email:jittor@qq.com。

版权声明

如LICENSE.txt文件中所示,Jittor使用Apache 2.0版权协议。

Search

    Table of Contents