Git Product home page Git Product logo

vietanhdev / open-adas Goto Github PK

View Code? Open in Web Editor NEW
391.0 23.0 118.0 27.29 MB

An open source advanced driver assistance system (ADAS) that uses Jetson Nano as the hardware. Features: Traffic sign detection, Forward collision warning, Lane departure warning.

License: MIT License

CMake 2.09% C++ 83.27% Python 5.41% Cuda 6.88% C 1.74% Dockerfile 0.21% SWIG 0.36% Shell 0.04%
adas object-detection semantic-segmentation jetson-nano lane-lines-detection

open-adas's Introduction

OpenADAS - An advanced driver-assistance system using Jetson Nano

Donate

An advanced driver-assistance system on Jetson Nano embedded computer with four main functions: forward collision warning, lane departure warning, traffic sign recognition and overspeed warning. This repository contains source code for Jetson Nano, not including the source code for model training and conversion.

The system design

Documentation:

For TensorRT 7 support: Currently, only TensorRT 5 and 6 are supported. TensorRT 7 has a lot of deprecated APIs and I think there is no way to run this project directly with that version. I don't have time to continue with this project soon, so I really need your contributions to extend this project further.

Quick setup on Jetson Nano: SD Card image

I created an image of my SD card here. You can flash and run this image on Jetson Nano.

Note:

  • The source code and binary files in this SD card image is older than in master branch. Please upgrade to the lastest source code and recompile on your device.
  • Use Alt+F4 to exit the GUI and start editing your source code.
  • Login information:
    • Username: smartcam.
    • Password: Open Terminal and type sudo passwd smartcam to change the password.

Compile from source

Requirements:

  • CMake >= 3.10
  • Qt 5
  • OpenCV >= 4.0.1
  • C++ 17 compiler
  • CUDA 10.x
  • TensorRT 5.1.5-1+cuda10.1, or - TensorRT 6.0.1.8+10.2. This project should work with TensorRT 5 and TensorRT 6. TensorRT 7 is not supported for now.

Setup for Linux - Ubuntu 18.04

Setup

  • Install QT:
sudo apt-get install build-essential
sudo apt-get install qt5-default qtcreator qt5-doc qt5-doc-html qtbase5-doc-html qtbase5-examples -y
sudo /sbin/ldconfig -v
  • Install OpenCV
https://linuxize.com/post/how-to-install-opencv-on-ubuntu-18-04/
  • Install protobuf 3.6.1
https://github.com/protocolbuffers/protobuf

Models and test data

  • Download models and testing data here and put into root folder of this project.

Compile and Run

cd <project directory>
mkdir build
cd build
cmake -DCUDA_INCLUDE_DIRS=/usr/local/cuda-10.2/include ..
make

Replace CUDA_INCLUDE_DIRS with your own path.

  • Setup virtual CAN (run once)
sudo bash setup_vcan.sh
  • Run
cd build/bin
./OpenADAS

Arguments:

  • --input_source | default: simulation : Input source. 'camera' or 'simulation'.
  • --input_video_path | optional : Path to video file for simulation.
  • --input_data_path | optional : Path to data file for simulation.
  • --on_dev_machine | default: true : On development machine or not. When this value is set to false, OpenADAS will be launched in fullscreen mode without mouse (touch UI). You should this value to true in development environment.

Specify input_video_path and input_data_path if you want to load a simulation scenario by default. Otherwise, you can select scenarios from simulation selector.

Known issues

Issue: cublas_v2.h not found

fatal error: cublas_v2.h: No such file or directory
 #include <cublas_v2.h>
          ^~~~~~~~~~~~~
compilation terminated.
  • Step 1: Find lib: find /usr/local/ -name cublas_v2.h.
  • Step 2: Export to path: export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/cuda-10.2/targets/x86_64-linux/include/.
  • Step 3: Use CMake and build.

Issue: /usr/bin/ld: cannot find -lcudart, /usr/bin/ld: cannot find -lcublas

sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
sudo ln -s /usr/local/cuda/lib64/libcublas.so /usr/lib/libcublas.so

Note: The paths can be different on your computer.

Issue: Qt5Multimedia missing

Could not find a package configuration file provided by "Qt5Multimedia"
  with any of the following names:

    Qt5MultimediaConfig.cmake
    qt5multimedia-config.cmake

How to fix?

sudo apt-get install qttools5-dev-tools libqt5svg5-dev qtmultimedia5-dev

Issue: Need to specify CUDA root

[cmake] CMake Error at /usr/share/cmake-3.10/Modules/FindCUDA.cmake:682 (message):
[cmake]   Specify CUDA_TOOLKIT_ROOT_DIR

How to fix?

export CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2/

You should change the path corresponding to your environment.

Issue: Qt5 library not found

 fatal error: QtWidgets/QCloseEvent: No such file or directory
 #include <QtWidgets/QCloseEvent>
          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

Issue: SIOCGIFINDEX: No such device

sudo bash setup_vcan.sh

References:

open-adas's People

Contributors

trellixvulnteam avatar uyrusali avatar vietanhdev 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

open-adas's Issues

help

./OpenADAS —input_source

GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

FA1FAF37-95FC-41C3-A398-685A52355FED

Caral calibration

Hi, thanks for your works.
It seems the LDW sample video was created with Carla.
Also, there is a data file for this video sample with this parameters:

  • CameraCalibration
  • car_width 1.85
  • carpet_width 2.5
  • car_to_carpet_distance 2.0
  • carpet_length 4.0
  • tl_x 0.37
  • tl_y 0.74
  • tr_x 0.59
  • tr_y 0.74
  • br_x 0.71
  • br_y 0.9
  • bl_x 0.27
  • bl_y 0.9

I want to know how these parameters are computed with Carla simulator.

Thank you for your consideration,

Credentials for SD image

Hi, I read your blogs, wonderful work!
I was able to boot my nano with the image, the app GUI comes up nicely.
Can you please provide us with user creds so I can log in sudo and start tinkering? I can't find it anywhere in the docs.

I'm going to attempt to connect this to my car and run it in production, then tweak it with extra features and submit back to the community.
I would like to extend features such as adding models for specific person detection, security cam functions, automatic parking meter starter etc. It will be fun, I'm new to qt but not to python, and I played a bit with vision AI already.

I am considering converting the ONNX to OpenVino to run on the little Oak with the intel hardware.
So many possibilities! You ROCK!

Thanks.

Camera streaming error

Hello,

I succesfully built and installed the project on Jetson TX2.

When I run open-ADAS with:

./OpenADAS  --on_dev_machine

I receive below error:

&&&& RUNNING LaneDetector # 
Loading TensorRT engine file at: models/lane_detection/lane_segmentation_384x384.engine
Using CAN interface vcan0
[ WARN:0] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_gstreamer.cpp (1757) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Internal data stream error.
[ WARN:0] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_gstreamer.cpp (886) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created

However, the camera works fine when I check if my Logitech USB Camera works OK command:

gst-launch-1.0 -v v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=640,height=480 ! xvimagesink

It looks like open-ADAS tries to grab video from v4l2src0 where I could reach the camera with ID v4l2src

Any idea on how to solve this problem?

Thanks.

errors while build in ubuntu

after cmake.. command i used make command to compile ,but iam getting below errors

[ 9%] Building CUDA object src/perception/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/FancyActivation.cu.o
/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(40): error: incomplete type is not allowed
class Plugin : public nvinfer1::IPluginExt, public IOwnable {
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(49): error: member function declared with "override" does not override a base class member
size_t getWorkspaceSize(int) const override { return 0; }
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(51): error: member function declared with "override" does not override a base class member
int initialize() override { return 0;}
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(52): error: member function declared with "override" does not override a base class member
void terminate() override {}
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(54): error: member function declared with "override" does not override a base class member
bool supportsFormat(nvinfer1::DataType type,
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(57): error: member function declared with "override" does not override a base class member
void configureWithFormat(const nvinfer1::Dims* inputDims, int nbInputs,
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(82): error: member function declared with "override" does not override a base class member
virtual int getNbOutputs() const override;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(83): error: member function declared with "override" does not override a base class member
virtual nvinfer1::Dims getOutputDimensions(int index,
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(86): error: member function declared with "override" does not override a base class member
virtual void serialize(void* buffer) override;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(87): error: member function declared with "override" does not override a base class member
virtual size_t getSerializationSize() override;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(89): error: member function declared with "override" does not override a base class member
virtual int initialize() override;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(90): error: member function declared with "override" does not override a base class member
virtual void terminate() override;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(92): error: member function declared with "override" does not override a base class member
virtual bool supportsFormat(nvinfer1::DataType type, nvinfer1::PluginFormat format) const override;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(98): error: member function declared with "override" does not override a base class member
virtual size_t getWorkspaceSize(int maxBatchSize) const override;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(99): error: member function declared with "override" does not override a base class member
virtual int enqueue(int batchSize,
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(81): error: identifier "IPluginExt" is undefined
_plugin(plugin), _ext(dynamic_cast<IPluginExt*>(plugin)) {}
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(81): error: the type in a dynamic_cast must be a pointer or reference to a complete class type, or void *
_plugin(plugin), _ext(dynamic_cast<IPluginExt*>(plugin)) {}
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(111): error: no instance of constructor "onnx2trt::PluginAdapter::PluginAdapter" matches the argument list
argument types are: (onnx2trt::Plugin *)
: PluginAdapter(plugin), _owned_plugin(plugin), _plugin(plugin) {}
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(116): error: class "onnx2trt::Plugin" has no member "serialize"
return _plugin->serialize(buffer);
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(123): error: class "onnx2trt::Plugin" has no member "getSerializationSize"
_plugin->getSerializationSize());
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(134): error: namespace "nvinfer1::plugin" has no member "INvPlugin"
nvinfer1::plugin::INvPlugin* _plugin;
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/plugin.hpp(136): error: namespace "nvinfer1::plugin" has no member "INvPlugin"
NvPlugin(nvinfer1::plugin::INvPlugin* plugin)
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/FancyActivation.hpp(61): error: member function declared with "override" does not override a base class member
size_t getSerializationSize() override {
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/FancyActivation.hpp(66): error: member function declared with "override" does not override a base class member
void serialize(void *buffer) override {
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/FancyActivation.hpp(79): error: member function declared with "override" does not override a base class member
virtual int getNbOutputs() const override { return 1; }
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/FancyActivation.hpp(80): error: member function declared with "override" does not override a base class member
virtual nvinfer1::Dims getOutputDimensions(int index,
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/FancyActivation.hpp(88): error: member function declared with "override" does not override a base class member
bool supportsFormat(nvinfer1::DataType type,
^

/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/FancyActivation.hpp(91): error: member function declared with "override" does not override a base class member
int enqueue(int batchSize,
^

28 errors detected in the compilation of "/home/chiplogic/adas_c++_github/open-adas/src/perception/common/onnx_models/onnx-tensorrt/FancyActivation.cu".
make[2]: *** [src/perception/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/build.make:91: src/perception/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/FancyActivation.cu.o] Error 2
make[1]: *** [CMakeFiles/Makefile2:717: src/perception/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

GPS data reads as 0

Hi,

Thanks for the awesome repo first of all.

I have attached a USB GPS to the nano. I don't get any speed values updated on the UI. It always remains at 0.

I can see the output using cpgs command on the terminal and also see the socket NMEA string using
echo '?WATCH={"enable":true,"json":true};' | nc 127.0.0.1 2947 .

I have made changes to car_gps_reader.cpp

this->;socket_port = 50000; this->;socket_server = "192.168.1.244"; to replace my socket port and IP

On /src/configs/config.h

#define DISABLE_GPS_READER  commented this line out. 

#define USE_CAN_BUS_FOR_SIMULATION_DATA true changed true to false

Still I receive 0 for all values when I print these variables.

signal_status = kSignalNormal; longitude = gps->fix.longitude; latitude = gps->fix.latitude; car_speed = gps->fix.speed;

What am I missing?

TIA.

execute"cmake -DCUDA_INCLUDE_DIRS=/usr/local/cuda-10.2/include .. ", error was reported .

I am running on ubuntu on Jetson nano, so I modified the GPU_ ARCHS=53, when I execute ”cmake -DCUDA_INCLUDE_DIRS=/usr/local/cuda-10.2/include .. “,The following error was reported.
Also, my TensorRT version is 8.2.1.8, is it related to this? If it's relevant, how can I make the project support TensorRT8? I hope you can reply to me. Thank you very much!

error:
--The cuDA compiler identification is unknown
CMake Error at /usr/local/share/cmake-3.26/Modules /CMakeDetermineCUDACompiler.cmake:603 (message):
Failed to detect a default CUDA architecture.
Compiler output:
all stack (most recent call first):
src/perception/common/onnx models/onnx-tensorrt/CMakeLists.txt:30 (project)
--Configuring incomplete, errors occurred!

Questions about the project

Hello,
A great project! I am also trying to do something similar on a edge compute.I had the following questions-

1.What is the overall fps of your pipeline on jetson Nano.
2.Since you have multiple models, are you loading them in parallel in a single Jetson using some sort of multi-threading?
Basically I just wanted to know if you do a sequential loading of the multiple models and infer or is there any other optimization other than the tensorRT optimization?

Thank you

crash when creating object detection trt model

I use your sd image and build a OpenAdas from the master branch. When I run ./OpenADAS, I got a crash below:

Loading TensorRT engine file at: models/traffic_sign/traffic_sign_classification_resnet18_64.engine
15
TensorRT plan file not found. Creating a new plan file at: models/object_detection/ctdet_bdd_resnet18_384.engine

Input filename: models/object_detection/ctdet_bdd_resnet18_384.onnx
ONNX IR version: 0.0.4
Opset version: 9
Producer name: pytorch
Producer version: 1.1
Domain:
Model version: 0
Doc string:

WARNING: ONNX model has a newer ir_version (0.0.4) than this parser was built against (0.0.3).
setFp16Mode
Begin building engine...
terminate called after throwing an instance of 'thrust::system::system_error'
what(): parallel_for failed: no kernel image is available for execution on the device
[1] 12143 abort ./OpenADAS

Any idea why this happens?

Thanks,

Argument List

Can i get specific argument list so that i can see what else can be tuned. And is there any argument for running from Camera source?

SD Card image

Can you provide your SD card image again, the image file is invalid! Baidu network disk or Google drive is OK

training project

Hello, I happened to see your project. It's excellent. Would you like to know if there is a supporting training project? Thank you.

Problem with "input_video_path" and "input_data_path"

Hello.
I'm going to run openadas on a video I got from a simulator. I place the video file and data file in proper directories and then run the program:
./OpenADAS --input_video_path=VIDEO_PATH --input_data_path=DATA_PATH
then the main window opens and I select the simulation icon in bottom right of the window. the video and data paths are written in two fields, when I press play a dialog box says: Please choose simulation data first
Those scenarios in simulation selector just work fine but I wonder how I can run openadas with a video and data file other than those can be found in simulation selector.

Thanks for such a great project!

Screenshot from 2021-08-04 18-26-32

Compiling with TensorRT 7.1: ‘createConcatPlugin’ is not a member of ‘nvinfer1::plugin’

Hi,
I want to compile this on newer Nvidia platforms such as Xavier NX / AGX.
Those platforms have TensorRT 7.1, very challenging to bump their entire Nvidia software ecosystem to lower versions, as they are newer Nvidia platforms and mostly lower version .deb packages are not available for them.
Are you planning on introducing support for TensorRT 7+ versions as TensorRT 5 is soon to be deprecated.
TensorRT 5 and TensorRT 7 seems to have some API differences, but I'm no expert in that, so if you could help us I'd appreciate it.

The current problem I'm getting is:

‘createConcatPlugin’ is not a member of ‘nvinfer1::plugin’

If you could tell me how to fix this in your code, it would be a great help.
A good looking resource: https://forums.developer.nvidia.com/t/jetpack4-4-tensoort7-1-error-createconcatplugin-is-not-a-member-of-nvinfer1-plugin/147296

[Question]Can Open-adas run in CPU environment without using GPU ?

Initially, the source is written on the CPU side and after execution on the CPU side, profiling and performance wise the code is shifted to the device side like on the GPU side.
So I would like to know is open-adas source is available for non-Cuda i.e CPU source code and runs only in the CPU environment.

Dev Mode From SD Card Image

I started up the SD card image with a 5" screen I have but it isn't touch. If I ALT+F4 out of the application I cannot find a terminal or the like to relaunch it in Dev Mode to use the mouse.

Is it possible to use the mouse at all with the SD Image?

Unable to write the image on a 64 GB SD Card.

Hey Veit Anh,

I tried to write the image on a 64 GB SD Card as the image size is 59.4 GB after extraction. Not successful. Need for an 128 GB ?

I was using BalenaEtcher for writing the image.

Any way out. Pl help.

Login and password

Hello,

For the binary, is it possible to get Jarvis Login and password ?

Or maybe it's written somewhere I didn't notice.

Thanks

PS: I can actually open a terminal with privilege so it's ok

Segmentation fault (core dumped) error during make

~/Desktop/car-smart-cam/build$ sudo make
[ 0%] Automatic MOC and UIC for target STATIC
[ 0%] Built target STATIC_autogen
[ 1%] Built target STATIC
[ 1%] Automatic MOC and UIC for target onnx_proto
[ 1%] Built target onnx_proto_autogen
[ 2%] Built target gen_onnx_proto
[ 8%] Built target onnx_proto
[ 9%] Automatic MOC and UIC for target nvonnxparser_plugin
[ 9%] Built target nvonnxparser_plugin_autogen
[ 11%] Building CUDA object src/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/FancyActivation.cu.o
Segmentation fault (core dumped)
src/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/build.make:94: recipe for target 'src/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/FancyActivation.cu.o' failed
make[2]: *** [src/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/FancyActivation.cu.o] Error 139
CMakeFiles/Makefile2:471: recipe for target 'src/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/all' failed
make[1]: *** [src/common/onnx_models/onnx-tensorrt/CMakeFiles/nvonnxparser_plugin.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
make: *** [all] Error 2

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.