Giter VIP home page Giter VIP logo

hmd-eyes's Introduction

hmd-eyes

Building blocks for eye tracking in Augmented Reality AR and Virtual Reality VR or more generally Head Mounted Displays HMD. The purpose of this repository is do demonstrates how to implement Pupil with Unity3D. For details on Pupil computations, please have a look at the related repositories.

VR Getting Started

This guide walks you through a first time setup for your Pupil Labs VR add-on.

  1. HTC Vive Add-on setup - Install your Pupil eye tracking add-on into your HMD and connect the add-on to your computer.
  2. Download Pupil Software. Extract the Pupil Capture app to your Desktop.
  3. Start Pupil Capture via the pupil_capture.exe in the Pupil Capture App folder.
  4. Please refer to the Pupil getting started and user guide to ensure that eyes are well captured and that the pupil detection runs with high confidence (~0.8).
  5. Download and start hmd-eyes demo app - This demo runs a VR experience. The demo app talks to Pupil software in the background. You will use it to calibrate and visualize gaze data within a demo scene. The demo app will start with settings dialog.
  6. Start the demo with default values. You will see a view of the left eye of the hmd.
  7. This would be a good point to put said device on your head.
  8. Use the displayed realtime videos of your eyes to make sure they are as centered as possible and in focus.
  9. Press 'c' on your keyboard to start a calibration and focus your gaze on the displayed marker as it changes position.
  10. After a successful calibration, the example scene will appear again and the gaze estimate will be visualized.

Develop, integrate, and extend

Download the *.unitypackage from the latest release and check out the developer docs to learn how to set up dev environment, make changes to code, and integrate with your own Unity3D project.

Dependencies:

  • Unity 2018.3+
  • ProjectSettings/Player/Configuration/Scripting Runtime Verion set to .NET 4.x Equivalent.
  • Due to an issue with MessagePack, the default project setting for ProjectSettings/Player/Configuration/API Compatibility Level is not supported and needs to be set to .NET 4.x

Community

Chat with the hmd-eyes community on Discord.

hmd-eyes's People

Contributors

andrenicolai avatar calderarchinuk avatar derya avatar eioe avatar fx-lange avatar kornellvarga avatar marc-tonsen avatar mikkeyboi avatar mkassner avatar mrayy avatar nathakits avatar papr avatar realbrandonchen avatar romanroibu avatar willpatera 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  avatar  avatar

hmd-eyes's Issues

EyeData.get_Raw3D () returns null after 3D Calibration

On an HTC Vive, in the unity_pupil_plugin_vr, in the "3D Calibration Demo" scene, after a successful calibration the MarketWith3DCalibration.cs starts throwing NullPtrException on EyeData.get_Raw3D ().

Does not affect the 2D Calibration.

Tested with

  • Unity 2017.3.0 and 2017.2.1
  • the 1866fae commit and the v0.3.0.1 release commit
  • the 1.1.2 and 1.2.7 Pupil Service (the 1.2.7 does not actually finish the calibration at all so that's not affected).

Editor log attached:
Editor.log
.

UDPCommunication.cs produces memory leak when compiling with IL2CPP backend

I've been trying to build a hololens project using the the il2cpp backend instead of .net. The il2cpp backend gives access to additional namespaces that are not included in the .net backend. The il2cpp backend converts the c# project to c++ and will become the preferred backend in the next couple years.

Everything builds fine but when I deploy the app I see a crippling memory leak (~20mb increase per second) that crashes the app after about 30 seconds. After a lot of testing I've been able to trace the leak to happening when gaze events are subscribed to. Specifically the leak occurs in the UDPCommunication.cs script in the Socket_MessageReceived function. For reasons unknown and suggested by this discussion thread the line:

Stream streamIn = args.GetDataStream().AsStreamForRead();

seems to cause the problem. I believe the memory allocated in this line is not properly garbage collected leading to the leak.

Rewriting the offending section to not use Stream (see code below) appears to correct the memory leak for IL2CPP-based builds.

private void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
{
    using (var reader = args.GetDataReader())
    {
        var buf = new byte[reader.UnconsumedBufferLength];
        reader.ReadBytes(buf);
        if (ExecuteOnMainThread.Count == 0)
        {
            ExecuteOnMainThread.Enqueue(() => {InterpreteUDPData(buf);});
        }
    }
}

"Diameter" Values

Hello,
I opened the PupilDataDemo scene in Unity and I tried to display the "diameter" values. What I get is a float between around 20 and 140.
While it is written that the pupil is operating in mm.
Is it a matter of measurement unit or the values do not represent the actual pupil diameter?

In the pupil_capture application, I see the correct values (from around 0 to 8mm).
Thank you!

Blink not working

In reference of this issue #53. I'm using HMD-eyes 0.63 and PupilService 1.10.20 and It's still unable to detect blinks. I've used debug to print all received messages and I've got only these data: gaze.2d.0 and gaze.2d.1. Even BlinkDemo Default Scene can't detect any blinks.

Alpha: FormatterNotRegisteredException

In the Gaze Demo, I do get the "connected" message, but the eye images are not visible, and when I try and calibrate, I get the following message:

FormatterNotRegisteredException: System.Collections.Generic.Dictionary2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] is not registered in this resolver. resolver:StandardResolver MessagePack.FormatterResolverExtensions.GetFormatterWithVerify[T] (MessagePack.IFormatterResolver resolver) (at Assets/Plugins/Pupil/3rd-party/MessagePack/IFormatterResolver.cs:35) MessagePack.MessagePackSerializer.Serialize[T] (T obj, MessagePack.IFormatterResolver resolver) (at Assets/Plugins/Pupil/3rd-party/MessagePack/MessagePackSerializer.cs:64) MessagePack.MessagePackSerializer.Serialize[T] (T obj) (at Assets/Plugins/Pupil/3rd-party/MessagePack/MessagePackSerializer.cs:55) PupilLabs.RequestController+Request.SendRequestMessage (System.Collections.Generic.Dictionary2[TKey,TValue] data) (at Assets/Plugins/Pupil/Scripts/Request.cs:76)
PupilLabs.RequestController.StopPlugin (System.String name) (at Assets/Plugins/Pupil/Scripts/RequestController.cs:118)
PupilLabs.FrameListener.Disable () (at Assets/Plugins/Pupil/Scripts/FrameListener.cs:53)
PupilLabs.RequestController.Disconnect () (at Assets/Plugins/Pupil/Scripts/RequestController.cs:90)
PupilLabs.RequestController.OnDisable () (at Assets/Plugins/Pupil/Scripts/RequestController.cs:45)

PupilTools FloatFromDictionary does not use key parameter

See here

	public static float FloatFromDictionary(Dictionary<string,object> source, string key)
	{
		object value_o;
		source.TryGetValue ("confidence", out value_o);
		return (float)(double)value_o;
	}

It's almost certainly true that "confidence" needs to be replaced by key. I'm surprised this hasn't come up before because it seems to affect timestamps in recordings here.

PupilTools delegate typos

I'm just learning the delegate system in Unity, but I think there might be a typo in the following code found here:

	public static event OnCalibrationEndDeleg OnCalibrationEnded;
	public static event OnCalibrationEndDeleg OnCalibrationFailed;
	public static event OnConnectedDelegate OnConnected;
	public static event OnConnectedDelegate OnDisconnected;

Again, I'm a novice here, so there's a chance that there's a good reason for this, but my intuition is that OnCalibrationFailed should be an event of OnCalibrationFailedDeleg, not OnCalibrationEndDeleg. Same thing with OnDisconnected and OnDisconnectedDelegate.

Unable to Import to Unity 2018.3.6f1

I am unable to import Pupil.Import.Package.VR.v0.61.unitypackage into an existing Unity 2018.3.6f1 project that has been pre-installed with SteamVR. As soon as I imported it, Unity complained that ILGenerator, LocalGuilder, ModuleBuilder, AssemblyBuilder, TypeBuilder, FieldBuilder are not found. When I changed the build target to UWP, these errors are gone. However, a new error stating that "FFMpegOut" is not found appears instead.

Update python scripts to python3

Hi,

I would like to use the hmd_calibration python scripts to connect to the pupil_service, but it seems that this script is not up to date (it doesn't run with python 3 without modifications and other errors arise as wel).
Could you please check if the script runs with the latest pupil service and update it if it is not?

Thanks!

Unity demo test build (release v0.5.1.5) doesn't work

The UnityPlayer.dll required for a built demo to run is missing from the release package.

I tried running it with a UnityPlayer.dll generated from building another project, but it doesn't work either (I'd guess that the editor/engine versions have to be matched between the executable and the used DLL).

Path to executable not path to dir

User should be able to use pupil_capture or pupil_service with the Unity3d plugin.

User should set the path to the executable e.g. path/to/pupil_capture.exe or path/to/pupil_service.exe

Calibration Settings

Remove UI fields for setting calibration points from Settings>Calibration. Calibration points can either be set by API (network communication) or via a game object in Unity.

Set default points for 2d and 3d mode.

Default points for 2d mode are:

[(0,0), (0,0.5), (0,1.0), (0.5,1.0), (1.0,1.0), (1.0,0.5), (1.0,0), (0.5,0), (0.5,0.5)]

Default points for 3d mode (in meters) are:

[(0.5,0.5,1.0), (0,0,1.0), (0,1.0,1.0),  (1.0,1.0,1.0), (1.0,0,1.0),  (0.5,0.5,1.0)]

Material Path

In the file "unity_pupil_plugin_hololens/Assets/pupil_plugin/Scripts/Pupil/PupilMarker.cs" you have the line:

material = new Material (Resources.Load<Material> ("Materials/MarkerMaterial"));

But there is no such file. If you adjust the path to just "MarkerMaterial" everything works fine.
Maybe you should fix this.

2d calbration - stop calibration with `c`

User should be able to start/stop calibration by clicking c on the keyboard. Currently user can only start 2d calibration with c - but should also be able to stop the calibration with c.

UWP - cannot connect to pupil capture

When deploying the example project to the Hololens I cannot connect to pupil capture with following seutp:

  • Unity 2017.4.1f1
  • pupil capture 1.10.20
  • hmd-eyes-0.5.1 unity pupil plugin for the hololens

uwp_issue

As you can see on the picture I cannot start the calibration. I followed the instructions explained here: https://github.com/pupil-labs/hmd-eyes/tree/v0.5.1/unity_pupil_plugin_hololens

Am I using the wrong IP address for the PupilSettings? I tried it once with the remote one of the hololens relay and once with the ip address of my pc.

capture

Cannot deploy to Hololens

The examples for Hololens/Unity can be built using Unity.
However, when trying to deploy them to the Hololens (using visual studio) it fails...with error code 1

Connection is not established properly

Hi.

I properly installed all necessary packages in "https://docs.pupil-labs.com/" and want to connect pupil-labs devices with HTC-Vive device.

We want to collect coordinated data where people are looking at in a 360 video using the pupil device and it seems that to do so, we can test it using this library.

Right now, we want to make connection between Unity and this pupil device in the HTC-Vive device and followed all steps in "Changing standard settings via PupilGazeTracker".

After playing, the current scene shows us the "Connecting to pupil." message and we can see the message in the HTC-Vive device as well. However, the Unity stops often and it doesn't show the word "Connected" as described in 3 in this section, "Changing standard settings via PupilGazeTracker".

Do you have any ideas to do what we want? Thanks.

Make confidence threshold user-configurable

Our game/experiment generates an error when the subject looks away from the fixation point and it would be great if that didn't happen during blinks or momentary tracking glitches. It seems the easiest way to do this would be to throw away data that didn't pass a confidence threshold.

In fact this is already done here (I think) but it is hard-coded to 0.6. Please make this user-configurable.

Alpha/Beta: In gazeVisualizer.cs, updating marker position to hit.point is a misleading representation of gaze accuracy.

Your methods for gaze visualization are biasing estimates of gaze accuracy in your favor.

And, here's a brief explanation...

Collisions are detected by casting a sphere of a fixed size in the direction of the gaze ray.

The gaze blob is then set to the position of hit.point (the collision location).
...which is offset from the gaze ray!

Drawing

The more honest way to do this would be to place the gaze blob at the distance of the hit.point, but keep it centered on the gaze ray.

The code I'm referencing is here:

if (Physics.SphereCast(origin, sphereCastRadius, direction, out RaycastHit hit, Mathf.Infinity))
            {
                Debug.DrawRay(origin, direction * hit.distance, Color.yellow);

                projectionMarker.position = hit.point;
}

Not compileable on UWP?

I get compiler errors after switching the platform to UWP. Since I'm going to deplay to the Holo-Lens, I imported the MixedRealityToolkit and switched the plattform to UWP.

2018-11-25_2142

right after switching I see the following error in the console:

2018-11-25_2144

so I tried to fix that but simply doing

public class Heatmap : MonoBehaviour 
{
#if !UNITY_WSA
    //  ...
#endif
}

but now I see there is even more

2018-11-25_2147


Am I doing something wrong or is pupil-labs currently not compatible with UWP?


Update

It worked now using the Pupil.Import.Package.HoloLens.unitypackage from v0.5.1 is it supposed to be like that?

Can't get Unity EyeGaze Value

I add unity_pupil_plugin_vr and play Calibration scene

but PupilGazeTracker can't get PupilData._2D.GetEyeGaze

That value is always (0,0)

How do I get eye gaze and eye position?

NetMQ problem when calibration starts

When I press 'c' to begin calibration there is an exception error.

TerminatingException: CheckContextTerminated - yes, is terminated.
NetMQ.Core.SocketBase.CheckContextTerminated ()
NetMQ.Core.SocketBase.TrySend (NetMQ.Msg& msg, TimeSpan timeout, Boolean more)
NetMQ.NetMQSocket.TrySend (NetMQ.Msg& msg, TimeSpan timeout, Boolean more)
NetMQ.OutgoingSocketExtensions.Send (IOutgoingSocket socket, NetMQ.Msg& msg, Boolean more)
NetMQ.OutgoingSocketExtensions.SendFrame (IOutgoingSocket socket, System.Byte[] data, Int32 length, Boolean more)
NetMQ.OutgoingSocketExtensions.SendMoreFrame (IOutgoingSocket socket, System.Byte[] data, Int32 length)
NetMQ.OutgoingSocketExtensions.SendMultipartMessage (IOutgoingSocket socket, NetMQ.NetMQMessage message)
PupilGazeTracker._sendRequestMessage (System.Collections.Generic.Dictionary`2 data) (at Assets/Scripts/PupilGazeTracker.cs:1788)
PupilGazeTracker.StartCalibration () (at Assets/Scripts/PupilGazeTracker.cs:2096)
PupilGazeTracker.Update () (at Assets/Scripts/PupilGazeTracker.cs:880)

This is the offending line:

_sendRequestMessage ( new Dictionary<string,object> {{"subject","start_plugin"},{"name",_currCalibModeDetails.calibPlugin}});

--System--
Unity 5.6.2f1
Windows 10 x64
pupil_v0912_windows_x64
Latest Drivers

Getting values in base_data from PupilTools.gazeDictionary

I'm trying to get 'diameter' value in 'base_data' from 'PupilTools.gazeDictionary' after 2D calibration process.
But it seems that 'base_data' can't be cast in spite of using function BaseData() or DictionaryFromDictionary() in PupilTools.
How can I get values in base_data from PupilTools.gazeDictionary?

--Environment--
OS: Windows 10 x64
Unity: 2017.3.1
Pupil Capture: v1.8-26

2D/3D: Market scene demo. Distinguish between 2D/3D pupil-gaze-mapping and 2D/3D data representation.

From what I understand, the 2D and 3D market scene demos differ both in pupil-to-gaze mapping algorithm as well as the way in which the gaze data is represented. More specifically...


In the 2D market scene demo:

  1. the 2D pupil-to-gaze mapping algorithm is used. However, this algorithm seems to use only the centroid of the detected pupil, and calibraiton quality is quickly degraded by small shifts of the helmet on the face. I do not recommend that anyone use this method for research.

  2. The eye-in-head vectors are represented by a series of points mapped to a 2D plane at a fixed distance.


In the 3D market scene demo:

  1. the 3D pupil-to-gaze mapping is used. From my experience with the mobile tracker, this algorithm can work very well. Unfortunately, it does not fare well in this demo. I do not know why. Poor eye images?

  2. The eye-in-head vectors are represented by single point placed along the cyclopean gaze vector at the depth of gaze estimated from the convergence of the left and right gaze vectors.


There are two issues here.

One is that folks are never quite sure what is implied the 2D vs 3D marketplace demo, because the issues of mapping algorithm and data representation are conflated. Is it called 2D simply because the gaze direction is represented as discs on a 2D plane? On both Discord and in personal communication, I have been asked the question "What algorithm is used in the 2D marketplace demo?" (or some variant of the question) several times.

The second issue is that, for the 3D gaze mapping algorithm to succeed, it must meet a HIGHER criterion than the 2D mapping: that is, it must also be sufficiently accurate for the recovery of depth of gaze. I have never seen this done with a conventional eye tracker, and I believe the estimated depth of gaze is extremely inaccurate beyond 3m even with a very high quality eye tracker.

I strongly suggest that you use the same method of data representation for both the 2D and 3D trackers: the discs on the screen. You may give the option to try and recover depth of gaze, but please do not make it the default representation.

I also **strongly * recommend an explicit explanation of what differs between the 2D and 3D marketplace demos.

Thanks!

  • gD

Calibration always fails in .NET 4.x API compatibility level; Missing MessagePack types under .NET 2.0

Hello

I have a minimal Unity project with imported only SteamVR plugin and hmd-eyes plugin.
If there is chosen API compatibility level '.NET Standard 2.0', there appears massive wave of missing types in MessagePack (those from .Net 4).
Once I switch into .NET 4.x, all errors dissappears, but then every calibration is being failed with result shown in picture below
apibug

Problem with failing was existing there for some time using .NET 4, but MessagePack missing types has appeared when Steam released update of SteamVR app.

Unity v. 2018.3.5f1
SteamVR unity plugin v. 2.2.0
hmd-eyes plugin v. latest
pupil service v. 1.10-20-g6936560
OpenVR v. 1.0.3

Blink data

I'm trying to get blink data through blink demo, but there is no logout message(blink detected, etc..) in the unity console. How can I get blink data? I can get the gaze data after calibration.

Can you tell the size of the pupil and the angle of the eye position?

Thank you for your last help.
Thanks to that, I am now getting the Gaze value without any problems.
There are three kinds of help I need right now.
ย 

  1. Is there a way to measure pupil size?
    I want to find the pupil size as well as the eye position.

  2. I am getting the value of Gaze. How much of this value is actually moving and can I get the angle moving?

  3. https://www.youtube.com/watch?v=2cTJ1IWmOGY
    I want to get the image of Pupil Service from Unity like the video of this link.
    It can be received in real time, but it is okay to have only one image of both eyes when you want.
    Unity_pupil_plugin_vr / Assets / pupil_plugin / Scripts / Pupil / FramePublishing.cs It seems that you are trying to get an image from this class, but it does not seem to have been developed yet.
    Can you tell when it will be developed?

I would like you to let me know if you can easily read the document.

My environment is using win10, unity, pupil version 1.3.9.

Camera Sensor Dimensions and Specifications

Hi,
I have a 120Hz HTC vive binocular add-on and I would like to know the camera specifications and physical dimensions of the image sensor. I am not sure where I can find these. Any help on this would be appreciated.

Accessing "gaze" Data

I'm having trouble accessing the "gaze" data on my own unity application using the Pupil Labs Unity plugin.

For calibration I am using the pupil manager prefab with an added "WorldCamera" that starts as activated, is deactivated on calibration start up, then reactivated again after calibration is successful.

After the calibration procedure, I deactivate the calibration camera and activate the "WorldCamera." After doing such, I set the following lines of code:

PupilSettings.Instance.currentCamera = Camera.main; // I confirmed this is the camera I want it to be
PupilTools.IsGazing = true;
PupilTools.SubscribeTo("gaze");

After reading the documentation I expected the code in the function InitializeSubscriptionSocket of connection.cs to be called every time the hardware detects a gaze:

subscriptionSocketForTopic[topic].ReceiveReady += (s, a) => 
{
int i = 0;
NetMQMessage m = new NetMQMessage();
while(a.Socket.TryReceiveMultipartMessage(ref m)) {
...
switch(msgType) {
...
case "gaze":
case "pupil.0":
case "pupil.1":
	var dictionary = MessagePackSerializer.Deserialize<Dictionary<string,object>> (mStream);
...
        if (confidence > 0.6f && msgType == "gaze")
                                PupilTools.gazeDictionary = dictionary;
...

Such that when I call PupilData._2D.GazePosition or PupilData._3D.GazePosition I would receive meaningful data.

However, after the calibration function ends the subscriptionsocket is never called. I suspect this isn't just for the gaze subscription either.

My suspicion is that something got deactivated which makes the subsciptions void. However, I have yet to prove this.

Any suggestions?

ArgumentOutOfRangeException -> AsyncIO outdated

For a project I used your code and deployed the Unity project to my Android device. After receiving data for up to 2 minutes flawlessly, it just stops without printing any information or raising any exception. The SubscriberSocket in the connection just doesn't have new data to deliver.

However, in very rare cases I managed to get an exception:
03-01 10:40:00.086 13450 13594 E Unity : ArgumentOutOfRangeException: Number must be either non-negative and less than or equal to Int32.MaxValue or -1. 03-01 10:40:00.086 13450 13594 E Unity : Parameter name: millisecondsTimeout 03-01 10:40:00.086 13450 13594 E Unity : at System.Threading.WaitHandle.WaitOne (System.Int32 millisecondsTimeout, System.Boolean exitContext) [0x00013] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 03-01 10:40:00.086 13450 13594 E Unity : at System.Threading.WaitHandle.WaitOne (System.Int32 millisecondsTimeout) [0x00000] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 03-01 10:40:00.086 13450 13594 E Unity : at System.Collections.Concurrent.BlockingCollection1[T].TryTake (T& item, System.Int32 timeout) [0x00087] in <20599ba1ee5a49a39b6681a06025b37e>:0 03-01 10:40:00.086 13450 13594 E Unity : at AsyncIO.DotNet.CompletionPort.GetMultipleQueuedCompletionStatus (System.Int32 timeout, AsyncIO.CompletionStatus[] completionStatuses, System.Int32& removed) [0x0002d] in <20599ba1ee5a49a39b6681a06025b37e>:0 03-01 10:40:00.086 13450 13594 E Unity : at NetMQ.Core.Utils.Proactor.Loop () [0x00014] in <3f7bfb8e0fb64c5398262c3b6b8f6c44>:0 03-01 10:40:00.086 13450 13594 E Unity : at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00014] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 03-01 10:40:00.086 13450 13594 E Unity : at System.

It seems like your AsyncIO DLL is rather outdated. For me the 0.1.69 .NET 4.0 version from (https://www.nuget.org/packages/AsyncIO/) works fine. Maybe someone bothers to update the dependency.

Regards,
Marcel

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.