GithubHelp home page GithubHelp logo

alibaba / easycv Goto Github PK

View Code? Open in Web Editor NEW
1.7K 31.0 188.0 10.74 MB

An all-in-one toolkit for computer vision

License: Apache License 2.0

Shell 0.07% Python 99.93%
self-supervised-learning transformers classification computer-vision object-detection pytorch vision-transformer

easycv's Introduction

PyPI Documentation Status license open issues GitHub pull-requests GitHub latest commit

EasyCV

English | 简体中文

Introduction

EasyCV is an all-in-one computer vision toolbox based on PyTorch, mainly focuses on self-supervised learning, transformer based models, and major CV tasks including image classification, metric-learning, object detection, pose estimation, and so on.

Major features

  • SOTA SSL Algorithms

    EasyCV provides state-of-the-art algorithms in self-supervised learning based on contrastive learning such as SimCLR, MoCO V2, Swav, DINO, and also MAE based on masked image modeling. We also provide standard benchmarking tools for ssl model evaluation.

  • Vision Transformers

    EasyCV aims to provide an easy way to use the off-the-shelf SOTA transformer models trained either using supervised learning or self-supervised learning, such as ViT, Swin Transformer, and DETR Series. More models will be added in the future. In addition, we support all the pretrained models from timm.

  • Functionality & Extensibility

    In addition to SSL, EasyCV also supports image classification, object detection, metric learning, and more areas will be supported in the future. Although covering different areas, EasyCV decomposes the framework into different components such as dataset, model and running hook, making it easy to add new components and combining it with existing modules.

    EasyCV provides simple and comprehensive interface for inference. Additionally, all models are supported on PAI-EAS, which can be easily deployed as online service and support automatic scaling and service monitoring.

  • Efficiency

    EasyCV supports multi-gpu and multi-worker training. EasyCV uses DALI to accelerate data io and preprocessing process, and uses TorchAccelerator and fp16 to accelerate training process. For inference optimization, EasyCV exports model using jit script, which can be optimized by PAI-Blade

What's New

[🔥 2023.05.09]

  • 09/05/2023 EasyCV v0.11.0 was released.

[🔥 2023.03.06]

  • 06/03/2023 EasyCV v0.10.0 was released.
  • Add segmentation model STDC
  • Add skeleton based video recognition model STGCN
  • Support ReID and Multi-len MOT

[🔥 2023.01.17]

  • 17/01/2023 EasyCV v0.9.0 was released.
  • Support Single-lens MOT
  • Support video recognition (X3D, SWIN-video)

[🔥 2022.12.02]

  • 02/12/2022 EasyCV v0.8.0 was released.
  • bevformer-base NDS increased by 0.8 on nuscenes val, training speed increased by 10%, and inference speed increased by 40%.
  • Support Objects365 pretrain and Adding the DINO++ model can achieve an accuracy of 63.4mAP at a model scale of 200M(Under the same scale, the accuracy is the best).

[🔥 2022.08.31] We have released our YOLOX-PAI that achieves SOTA results within 40~50 mAP (less than 1ms). And we also provide a convenient and fast export/predictor api for end2end object detection. To get a quick start of YOLOX-PAI, click here!

  • 31/08/2022 EasyCV v0.6.0 was released.
    • Release YOLOX-PAI which achieves SOTA results within 40~50 mAP (less than 1ms)
    • Add detection algo DINO which achieves 58.5 mAP on COCO
    • Add mask2former algo
    • Releases imagenet1k, imagenet22k, coco, lvis, voc2012 data with BaiduDisk to accelerate downloading

Please refer to change_log.md for more details and history.

Technical Articles

We have a series of technical articles on the functionalities of EasyCV.

Installation

Please refer to the installation section in quick_start.md for installation.

Get Started

Please refer to quick_start.md for quick start. We also provides tutorials for more usages.

notebook

Model Zoo

Architectures
Self-Supervised Learning Image Classification Object Detection Segmentation Object Detection 3D
  • Instance Segmentation
  • Semantic Segmentation
  • Panoptic Segmentation
  • Please refer to the following model zoo for more details.

    Data Hub

    EasyCV have collected dataset info for different scenarios, making it easy for users to finetune or evaluate models in EasyCV model zoo.

    Please refer to data_hub.md.

    License

    This project is licensed under the Apache License (Version 2.0). This toolkit also contains various third-party components and some code modified from other repos under other open source licenses. See the NOTICE file for more information.

    Contact

    This repo is currently maintained by PAI-CV team, you can contact us by

    Enterprise Service

    If you need EasyCV enterprise service support, or purchase cloud product services, you can contact us by DingDing Group.

    dingding_qrcode

    easycv's People

    Contributors

    2sin18 avatar andreped avatar cathy0908 avatar catl-neo avatar cyanyanyan avatar dmarinere avatar haiasd avatar jhuang1207 avatar jiabei-prog avatar k-washi avatar liaogulou avatar liubo0902 avatar tsbxmw avatar tuofeilunhifi avatar wenmengzhou avatar wuziheng avatar xiaoheyou avatar zhiqwang avatar zouxinyi0625 avatar zzoneee avatar

    Stargazers

     avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

    Watchers

     avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

    easycv's Issues

    TorchViTDetPredictor parse input error

    When i use TorchViTDetPredictor to predict my images, the inputs cannot be parsed.
    I tried two input formats.

    Format 1: inputs is np.ndarray:

    Raise KeyError: 'LoadImageFromWebcam is not in the pipeline registry'

    Format 1: inputs is local file path:

    Raise ValueError: unknown url type: '/000000037777.jpg'

    My full code is as follows:

    import os
    import numpy as np
    from PIL import Image
    from easycv.predictors.detector import TorchViTDetPredictor
    
    model_path='./vitdet_maskrcnn.pt'
    predictor = TorchViTDetPredictor(model_path = model_path)
    img = './000000037777.jpg'
    
    # format 1
    input_data_list = [img]  
    # format 2
    input_data_list = [np.asarray(Image.open(img))]
    
    output_list = predictor.predict(input_data_list)
    print(output_list)

    how tot install torchacc

    hi, seems torchacc can accelerate training, but how can we train with torchacc, how to install this lib,only through docker image?

    [feat]: cpu env support

    some user may want to use this library in cpu-only environment due to resource limitation or for better development debugging

    Some scripts written in docs are not found

    Hi developers:

    Thanks for your excellent project sharing to the community.

    With a little pity, I found some faults.
    For example, dist_train.sh in the following command is not found.
    bash tools/dist_train.sh configs/classification/cifar10/swintiny_b64_5e_jpg.py $GPUS --fp16

    Would you check and commit it anyway?

    Thanks again.

    Died with <Signals.SIGKILL: 9>. When first epoch ends, the program is killed

    Using train on PAI and smart cache, config is like metric_learning/imagenet_resnet50_1000kid_jpg.py, then the program is always killed when fist epoch ends.
    The error info is like below:
    Traceback (most recent call last):
    File "/home/pai/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "main", mod_spec)
    File "/home/pai/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
    File "/home/pai/lib/python3.6/site-packages/easypai/torch/launch.py", line 428, in
    main()
    File "/home/pai/lib/python3.6/site-packages/easypai/torch/launch.py", line 414, in main
    sigkill_handler(signal.SIGTERM, None) # not coming back
    File "/home/pai/lib/python3.6/site-packages/easypai/torch/launch.py", line 389, in sigkill_handler
    raise subprocess.CalledProcessError(returncode=last_return_code, cmd=cmd)
    subprocess.CalledProcessError: Command '['/apsara/TempRoot/xxxxx/workspace/python_bin', '-u', 'tools/train.py', '--local_rank=7', 'configs/metric_learning/xxxxx.py', '--work_dir', 'oss://xxxxx/', '--load_from', '/data/oss_bucket_0/xxxxx/r50_imagenet_epoch_100.pth', '--launcher', 'pytorch', '--fp16']' died with <Signals.SIGKILL: 9>.

    exported classification model run failed during inference using easycv.predictos.Classifier

    Traceback is as follows:

    ---------------------------------------------------------------------------
    KeyError                                  Traceback (most recent call last)
    <ipython-input-16-7181aabb565a> in <module>
          8 # input image should be RGB order
          9 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    ---> 10 output = tcls.predict([img])
         11 print(output)
    
    /home/pai/lib/python3.6/site-packages/easycv/predictors/classifier.py in predict(self, input_data_list, batch_size)
         99             batch_image_list = image_list[batch_idx * batch_size:min(
        100                 (batch_idx + 1) * batch_size, len(image_list))]
    --> 101             image_tensor_list = self.predictor.preprocess(batch_image_list)
        102             input_data = self.batch(image_tensor_list)
        103             output_prob = self.predictor.predict_batch(
    
    /home/pai/lib/python3.6/site-packages/easycv/predictors/base.py in preprocess(self, image_list)
         74         for img in image_list:
         75             tmp_input = {'img': img}
    ---> 76             tmp_results = self.pipeline(tmp_input)
         77             output_imgs_list.append(tmp_results['img'])
         78 
    
    /home/pai/lib/python3.6/site-packages/torchvision/transforms/transforms.py in __call__(self, img)
         58     def __call__(self, img):
         59         for t in self.transforms:
    ---> 60             img = t(img)
         61         return img
         62 
    
    /home/pai/lib/python3.6/site-packages/easycv/datasets/shared/pipelines/format.py in __call__(self, results)
        138         data['img_metas'] = DC(img_meta, cpu_only=True)
        139         for key in self.keys:
    --> 140             data[key] = results[key]
        141         return data
        142 
    
    KeyError: 'gt_labels'

    the main reason is the Collection operation configured in test_pipeline, and gt_labels is missing during inference.

    test_pipeline = [
        dict(type='Resize', size=256),
        dict(type='CenterCrop', size=224),
        dict(type='ToTensor'),
        dict(type='Normalize', **img_norm_cfg),
        dict(type='Collect', keys=['img', 'gt_labels'])
    ]

    nvidia_dali install error

    pip install http://pai-vision-data-hz.cn-hangzhou.oss-cdn.aliyun-inc.com/third_party/nvidia_dali_cuda100-0.25.0-1535750-py3-none-manylinux2014_x86_64.whl
    Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
    Collecting nvidia-dali-cuda100==0.25.0
    WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPConnection object at 0x7f5bee745978>, 'Connection to pai-vision-data-hz.cn-hangzhou.oss-cdn.aliyun-inc.com timed out. (connect timeout=15)')': /third_party/nvidia_dali_cuda100-0.25.0-1535750-py3-none-manylinux2014_x86_64.whl
    WARNING: Retrying (Retry(total=3, connect=None, read=None

    DAB-DETR mAP 42.52

    Thanks for your great work! I wonder if the mAP 42.52 of dab-detr is trained via the exact config file "configs/detection/dab_detr/dab_detr_r50_8x2_50e_coco.py"?
    If so, I see that you use dropout = 0.0 in DABDetrTransformer instead of the default dropout value 0.1. Is there a performance gain by setting dropout value to 0.0?

    nccl timeout error when read tfrecord format data from oss

    The error log like this:
    Current pipeline object is no longer valid.
    [E ProcessGroupNCCL.cpp:294] Some NCCL operations have failed or timed out. Due to the asynchronous nature of CUDA kernels, subsequent GPU operations might run on corrupted/incomplete data. To avoid this inconsistency, we are taking the entire process down.
    terminate called after throwing an instance of 'std::runtime_error'
    what(): [Rank 0] Watchdog caught collective operation timeout: WorkNCCL(OpType=ALLREDUCE, Timeout(ms)=1800000) ran for 1808702 milliseconds before timing out.
    Traceback (most recent call last):
    File "/home/pai/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "main", mod_spec)
    File "/home/pai/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
    File "/home/pai/lib/python3.6/site-packages/easypai/torch/launch.py", line 428, in
    main()
    File "/home/pai/lib/python3.6/site-packages/easypai/torch/launch.py", line 414, in main
    sigkill_handler(signal.SIGTERM, None) # not coming back
    File "/home/pai/lib/python3.6/site-packages/easypai/torch/launch.py", line 389, in sigkill_handler
    raise subprocess.CalledProcessError(returncode=last_return_code, cmd=cmd)
    subprocess.CalledProcessError: Command '['/apsara/TempRoot/Odps/xxxxx/[email protected]#0/workspace/python_bin', '-u', 'tools/train.py', '--local_rank=1', 'configs/metric_learning/resnet50_jpg_nopk_tfrecord.py', '--work_dir', 'oss://xxxx/mtl_tf/', '--load_from', 'oss://xxxx/r50_imagenet_epoch_100.pth', '--launcher', 'pytorch', '--fp16']' died with <Signals.SIGABRT: 6>.

    Then set os.environ["NCCL_DEBUG_SUBSYS"] = "ALL"
    os.environ["NCCL_DEBUG"] = "INFO"
    and rerun, the error log like this:

    [Rank 0] Watchdog caught collective operation timeout: WorkNCCL(OpType=ALLREDUCE, Timeout(ms)=1800000) ran for 1808702 milliseconds before timing out.
    Traceback (most recent call last):
    File "tools/train.py", line 293, in
    main()
    File "tools/train.py", line 274, in main
    data_loaders = [dataset.get_dataloader()]
    File "/apsara/TempRoot/Odps/xxxx/[email protected]#0/workspace/easycv/datasets/shared/dali_tfrecord_imagenet.py", line 166, in get_dataloader
    self.dali_pipe.build()
    File "/home/pai/lib/python3.6/site-packages/nvidia/dali/pipeline.py", line 478, in build
    self._pipe.Build(self._names_and_devices)
    RuntimeError: Critical error when building pipeline:
    Error when constructing operator: TFRecordReader encountered:
    [/opt/dali/dali/operators/reader/loader/indexed_file_loader.h:105] Assert on "index_uris.size() == uris
    .size()" failed: Number of index files needs to match the number of data files

    TypeError: evaluate() got an unexpected keyword argument 'gpu_collect'

    Traceback (most recent call last):
    File "tools/train.py", line 274, in
    main()
    File "tools/train.py", line 270, in main
    use_fp16=args.fp16)
    File "/home/sanjie.lp/projects/EasyCV/easycv/apis/train.py", line 278, in train_model
    runner.run(data_loaders, cfg.workflow, cfg.total_epochs)
    File "/home/sanjie.lp/softwares/anaconda2/envs/easycv/lib/python3.6/site-packages/mmcv/runner/epoch_based_runner.py", line 108, in run
    self.call_hook('before_run')
    File "/home/sanjie.lp/softwares/anaconda2/envs/easycv/lib/python3.6/site-packages/mmcv/runner/base_runner.py", line 309, in call_hook
    getattr(hook, fn_name)(self)
    File "/home/sanjie.lp/projects/EasyCV/easycv/hooks/eval_hook.py", line 55, in before_run
    self.after_train_epoch(runner)
    File "/home/sanjie.lp/projects/EasyCV/easycv/hooks/eval_hook.py", line 72, in after_train_epoch
    self.evaluate(runner, results)
    File "/home/sanjie.lp/projects/EasyCV/easycv/hooks/eval_hook.py", line 93, in evaluate
    results, logger=runner.logger, **self.eval_kwargs)
    TypeError: evaluate() got an unexpected keyword argument 'gpu_collect'

    nvidia-dali is too old, should be upgraded

    currently install nvidia-dali by

    ! pip install http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/third_party/nvidia_dali_cuda100-0.25.0-1535750-py3-none-manylinux2014_x86_64.whl

    which can not be automatically add to requirements of whl package

    TypeError: create_model() got multiple values for argument 'pretrained'

    I encountered this problem while running the first example.

    python tools/train.py configs/classification/cifar10/swintiny_b64_5e_jpg.py --work_dir work_dirs/classification/cifar10/swintiny --fp16

    Traceback (most recent call last):
    File "tools/train.py", line 277, in
    main()
    File "tools/train.py", line 213, in main
    model = build_model(cfg.model)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/models/builder.py", line 39, in build_model
    return build(cfg, MODELS)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/models/builder.py", line 15, in build
    return build_from_cfg(cfg, registry, default_args)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/utils/registry.py", line 80, in build_from_cfg
    return obj_cls(**args)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/models/classification/classification.py", line 77, in init
    self.backbone = builder.build_backbone(backbone)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/models/builder.py", line 19, in build_backbone
    return build(cfg, BACKBONES)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/models/builder.py", line 15, in build
    return build_from_cfg(cfg, registry, default_args)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/utils/registry.py", line 80, in build_from_cfg
    return obj_cls(**args)
    File "/home/zhenzhen/ev/tmp/EasyCV/package/easycv/models/backbones/pytorch_image_models_wrapper.py", line 100, in init
    exportable, no_jit, **kwargs)
    TypeError: create_model() got multiple values for argument 'pretrained'

    Could easycv suuport batch inference?

    Thanks for your brilliant work!

    I've looked at the inference demo of object detection but found batch inference is not supported yet.

    Could you help support batch inference of detection models (ex. yolox)??

    Appreciate!

    Bug: run command --seed 42 --deterministic do not work

    --seed 42 --deterministic
    Results of two runs:

    1. Epoch [1][50/7330] 59.7561 Epoch [1][100/7330] 48.4067 Epoch [1][150/7330] 44.8409
    2. Epoch [1][50/7330] 58.8591 Epoch [1][100/7330] 48.8086 Epoch [1][150/7330] 45.2519

    ModuleNotFoundError: No module named 'sailfish'

    When I try to run the example of metric learning, I encountered the following error reports:
    ModuleNotFoundError: No module named 'sailfish'

    When I run the following command, error appears.
    CUDA_VISIBLE_DEVICES=0 python -m torch.distributed.launch --nproc_per_node=1 --master_port=29500 tools/train.py configs/metric_learning/cub_resnet50_jpg.py --work_dir work_dirs/metric_learning/cub/r50 --launcher pytorch --fp16

    The URL of this example: https://github.com/alibaba/EasyCV/blob/master/docs/source/tutorials/EasyCV%E5%BA%A6%E9%87%8F%E5%AD%A6%E4%B9%A0resnet50.ipynb

    [Framework] Visualization enhancement

    We should support visualization of images during training and evaluation, these images could be visualization of evaluation results such as bounding box, attention maps, and so on

    安装pai-easycv时出现错误

    linux系统下安装pai-easycv报错如下:
    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for opencv-python-headless
    Failed to build opencv-python-headless
    ERROR: Could not build wheels for opencv-python-headless, which is required to install pyproject.toml-based projects
    感谢解答

    训练vitdet出错

    我按照 https://zhuanlan.zhihu.com/p/528733299 里的教程一步步配置,不同的是我是单机双卡,所以我的命令是CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 --master_port=29500 tools/train.py configs/detection/vitdet/vitdet_100e.py --work_dir easycv/vitdet --launcher pytorch --fp16,训练报错
    Traceback (most recent call last):
    File "/home/xlh2/EasyCV2/tools/train.py", line 277, in
    main()
    File "/home/xlh2/EasyCV2/tools/train.py", line 266, in main
    train_model(
    File "/home/xlh2/EasyCV2/easycv/apis/train.py", line 269, in train_model
    runner.run(data_loaders, cfg.workflow, cfg.total_epochs)
    File "/home/xlh2/.conda/envs/easycv/lib/python3.9/site-packages/mmcv/runner/epoch_based_runner.py", line 127, in run
    epoch_runner(data_loaders[i], **kwargs)
    File "/home/xlh2/EasyCV2/easycv/runner/ev_runner.py", line 105, in train
    self.run_iter(data_batch, train_mode=True)
    File "/home/xlh2/EasyCV2/easycv/runner/ev_runner.py", line 72, in run_iter
    outputs = self.model.train_step(data_batch, self.optimizer,
    File "/home/xlh2/.conda/envs/easycv/lib/python3.9/site-packages/mmcv/parallel/distributed.py", line 48, in train_step
    self._sync_params()
    File "/home/xlh2/.conda/envs/easycv/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1185, in getattr
    raise AttributeError("'{}' object has no attribute '{}'".format(
    AttributeError: 'MMDistributedDataParallel' object has no attribute '_sync_params'

    Yolox预测过程出错

    我在使用Yolox教程里的预测过程,不过我没有自己训练,而是打算先用你们提供的模型参数,export之后再测试一下,预测过程报错:There are syntax errors in config file /home/xlh2/EasyCV2/.easycv_cache/epoch_300m_e_config.py: unmatched '}' (, line 1)。经过调试,我发现错误出现在 easycv/predictors/detector.py 第90行:config_str = config_str[config_str.find('base'):]。在export过程中没有往pth文件里写入_base_,从而导致返回0索引值,进而返回无意义的”{“。

    No "backend" parameters in tool/quantize.py

    Hi,I just read the "YOLOX Compression Tutorial", in there the quantize functional is called by

    python tools/quantize.py \
    		${CONFIG_PATH} \
    		${MODEL_PATH} \
    		--work_dir ${WORK_DIR} \
    		--device ${DEVICE} \
    		--backend ${BACKEND}
    

    But I find no 'backend' parameters in tool/quantize.py, weather it is missed?
    And moreover, I have found that pruning functional use quantize.py as well. Is that wrong writen?

    So many grammar mistakes in README

    Listed here and noted by brackets "()".

    Functionality & Extensibility

    In addition to SSL, EasyCV also support(s) image classification, object detection, metric learning, and more area(s) will be supported in the future. Although convering different area(s), EasyCV decompose(s) the framework into different componets such as dataset, model (and) running hook, making it easy to add new compoenets and combining it with existing modules.

    EasyCV provide(s) simple and comprehensive interface for inference. Additionaly, all models are supported on PAI-EAS, which can be easily deployed as online service and support automatic scaling and service monitoring.

    Efficiency

    EasyCV support(s) multi-gpu and multi worker training. EasyCV use(s) DALI to accelerate data io and preprocessing process, and use(s) TorchAccelerator and fp16 to accelerate training process. For inference optimization, EasyCV export(s) model using jit script, which can be optimized by PAI-Blade

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.