GithubHelp home page GithubHelp logo

shap-e's Introduction

Shap-E

This is the official code and model release for Shap-E: Generating Conditional 3D Implicit Functions.

  • See Usage for guidance on how to use this repository.
  • See Samples for examples of what our text-conditional model can generate.

Samples

Here are some highlighted samples from our text-conditional model. For random samples on selected prompts, see samples.md.

A chair that looks like an avocado An airplane that looks like a banana A spaceship
A chair that looks
like an avocado
An airplane that looks
like a banana
A spaceship
A birthday cupcake A chair that looks like a tree A green boot
A birthday cupcake A chair that looks
like a tree
A green boot
A penguin Ube ice cream cone A bowl of vegetables
A penguin Ube ice cream cone A bowl of vegetables

Usage

Install with pip install -e ..

To get started with examples, see the following notebooks:

  • sample_text_to_3d.ipynb - sample a 3D model, conditioned on a text prompt.
  • sample_image_to_3d.ipynb - sample a 3D model, conditioned on a synthetic view image. To get the best result, you should remove background from the input image.
  • encode_model.ipynb - loads a 3D model or a trimesh, creates a batch of multiview renders and a point cloud, encodes them into a latent, and renders it back. For this to work, install Blender version 3.3.1 or higher, and set the environment variable BLENDER_PATH to the path of the Blender executable.

shap-e's People

Contributors

ahmadmustafaanis avatar bitsnaps avatar chand1012 avatar heewooj avatar mattdeitke avatar mertyyanik avatar onpix avatar unixpickle 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  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

shap-e's Issues

reading model error:TypeError: 'type' object is not subscriptable

Traceback (most recent call last):
File "/opt/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3441, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 1, in
runfile('/Users//project/shap-e/give_it_a_try.py', wdir='/Users//project/shap-e')
File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_bundle/pydev_umd.py", line 198, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/Users//project/shap-e/give_it_a_try.py", line 11, in
xm = load_model('transmitter', device=device)
File "/Users//project/shap-e/shap_e/models/download.py", line 144, in load_model
from .configs import model_from_config
File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/Users//project/shap-e/shap_e/models/configs.py", line 20, in
from shap_e.models.nerstf.mlp import MLPDensitySDFModel, MLPNeRSTFModel
File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/Users//project/shap-e/shap_e/models/nerstf/mlp.py", line 7, in
from shap_e.models.stf.mlp import MLPModel
File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/Users//project/shap-e/shap_e/models/stf/mlp.py", line 14, in
from .base import Model
File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/Users//project/shap-e/shap_e/models/stf/base.py", line 11, in
class Model(ABC):
File "/Users//project/shap-e/shap_e/models/stf/base.py", line 18, in Model
) -> AttrDict[str, Any]:
TypeError: 'type' object is not subscriptable

Required GPU memory?

What is the minimum amount of GPU memory needed to run this model on inference?

Keep getting this error trying to run sample_text_to_3d.ipynb in github codespaces:

First 2 blocks runs successfully after installing some packages. next one keeps failing :

Canceled future for execute_request message before replies were done
The Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details.

image to 3D image notebook ConnectionResetError: [Errno 104] Connection reset by peer

Hi,

It's really fascinating to see how this package turns 2D single image to 3D.
When I was using the notebook that guided on how to convert image to 3D, I got below error, is this model is not available publicly ? or I am missing something that need to be done.
Here is error :

[/content/shap-e/shap_e/models/download.py](https://5nx8xiw7ga-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-20230503-060127-RC00_529051665#) in fetch_file_cached(url, progress, cache_dir, chunk_size)
     65         return local_path
     66 
---> 67     response = requests.get(url, stream=True)
     68     size = int(response.headers.get("content-length", "0"))
     69     with FileLock(local_path + ".lock"):

[/usr/local/lib/python3.10/dist-packages/requests/api.py](https://5nx8xiw7ga-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-20230503-060127-RC00_529051665#) in get(url, params, **kwargs)
     73     """
     74 
---> 75     return request('get', url, params=params, **kwargs)
     76 
     77 

[/usr/local/lib/python3.10/dist-packages/requests/api.py](https://5nx8xiw7ga-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-20230503-060127-RC00_529051665#) in request(method, url, **kwargs)
     59     # cases, and look like a memory leak in others.
     60     with sessions.Session() as session:
---> 61         return session.request(method=method, url=url, **kwargs)
     62 
     63 

[/usr/local/lib/python3.10/dist-packages/requests/sessions.py](https://5nx8xiw7ga-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-20230503-060127-RC00_529051665#) in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    527         }
    528         send_kwargs.update(settings)
--> 529         resp = self.send(prep, **send_kwargs)
    530 
    531         return resp

[/usr/local/lib/python3.10/dist-packages/requests/sessions.py](https://5nx8xiw7ga-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-20230503-060127-RC00_529051665#) in send(self, request, **kwargs)
    643 
    644         # Send the request
--> 645         r = adapter.send(request, **kwargs)
    646 
    647         # Total elapsed time of the request (approximately)

[/usr/local/lib/python3.10/dist-packages/requests/adapters.py](https://5nx8xiw7ga-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-20230503-060127-RC00_529051665#) in send(self, request, stream, timeout, verify, cert, proxies)
    499 
    500         except (ProtocolError, socket.error) as err:
--> 501             raise ConnectionError(err, request=request)
    502 
    503         except MaxRetryError as e:

ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

FIX: Upgrade pytorch3d -> DLL load failed while importing _C: The specified procedure could not be found.

---> 11 from pytorch3d import _C
ImportError: DLL load failed while importing _C: The specified procedure could not be found.

Upgrading to pytorch3d version: 0.7.3 (@stable) fixed this.
https://github.com/facebookresearch/pytorch3d

Feel free to close, I just wanted to leave this here in case somebody else runs into the issue.

PS: Thank you so much for Shap-E! Projects like these are totally underrated in the shadow of ChatGPT et al, imo. But I am loving this thing that seems like an iteration of Point-E that seems to have massive improvements, especially image-to-mesh (my subjective opinion)! Same as the totally underrated CLIP that everybody uses but nobody knows about. So yeah, thanks, again - keep it up, I am loving these "sideshows"! <3

TypeError: Expected maxsize to be an integer or None

The error log I got:


TypeError Traceback (most recent call last)
/var/folders/fr/8sx4p38j5394tjt8yg670kzm0000gn/T/ipykernel_61680/1008383796.py in
----> 1 xm = load_model('transmitter', device=device)
2 model = load_model('text300M', device=device)
3 diffusion = diffusion_from_config(load_config('diffusion'))

~/Desktop/shap-e/shap_e/models/download.py in load_model(model_name, device, **kwargs)
142 **kwargs,
143 ) -> Dict[str, torch.Tensor]:
--> 144 from .configs import model_from_config
145
146 model = model_from_config(load_config(model_name, **kwargs), device=device)

~/Desktop/shap-e/shap_e/models/configs.py in
16 UpsamplePointDiffusionTransformer,
17 )
---> 18 from shap_e.models.nerf.model import MLPNeRFModel, VoidNeRFModel
19 from shap_e.models.nerf.renderer import OneStepNeRFRenderer, TwoStepNeRFRenderer
20 from shap_e.models.nerstf.mlp import MLPDensitySDFModel, MLPNeRSTFModel

~/Desktop/shap-e/shap_e/models/nerf/model.py in
8
9 from shap_e.models.nn.checkpoint import checkpoint
---> 10 from shap_e.models.nn.encoding import encode_position, spherical_harmonics_basis
11 from shap_e.models.nn.meta import MetaModule, subdict
12 from shap_e.models.nn.ops import MLP, MetaMLP, get_act, mlp_init, zero_init

~/Desktop/shap-e/shap_e/models/nn/encoding.py in
220 dtype: torch.dtype,
221 device: torch.device,
--> 222 ) -> torch.Tensor:
223 return 2.0 ** torch.arange(min_deg, max_deg, device=device, dtype=dtype)
224

~/opt/anaconda3/envs/peepee/lib/python3.7/functools.py in lru_cache(maxsize, typed)
488 maxsize = 0
489 elif maxsize is not None:
--> 490 raise TypeError('Expected maxsize to be an integer or None')
491
492 def decorating_function(user_function):

I solved the issue by updating my Python from 3.7 to 3.11

What's the license on the weights?

I hate to do this, but it's not clear from the paper or the repo. The code is MIT licensed, but what's the license on the model weights?

why applying Gaussian diffusion noise when converting latents to MLP weights

Hi, in your paper, I find that "after computing the sequence of latents, we apply Gaussian diffusion noise q(ht) to the latents with very little noise. After the noise and bottleneck layers, we project each latent vector to 256 dimensions probability 0.1. For this diffusion noise, we use the schedule $\hat{\alpha} = 1 − t^5$ which typically produces and stack the resulting latents into four MLP weight matrices of size 256 × 256.

I wonder why is this necessary? Does it help to improve the robustnesss of INR?

Code for training

Amazing job on this project.

Would it be possible to get the code for training on custom data?

TypeError: __init__() got an unexpected keyword argument 'device'

TypeError Traceback (most recent call last)
Cell In[3], line 1
----> 1 xm = load_model('transmitter', device=device)
2 model = load_model('text300M', device=device)
3 diffusion = diffusion_from_config(load_config('diffusion'))

File ~/Projects/shap-e/shap_e/models/download.py:146, in load_model(model_name, device, **kwargs)
139 def load_model(
140 model_name: str,
141 device: torch.device,
142 **kwargs,
143 ) -> Dict[str, torch.Tensor]:
144 from .configs import model_from_config
--> 146 model = model_from_config(load_config(model_name, **kwargs), device=device)
147 model.load_state_dict(load_checkpoint(model_name, device=device, **kwargs))
148 model.eval()

File ~/Projects/shap-e/shap_e/models/configs.py:59, in model_from_config(config, device)
56 return MultiviewTransformerEncoder(device=device, dtype=torch.float32, **config)
57 elif name == "Transmitter":
58 # device = torch.device('cuda')
---> 59 renderer = model_from_config(config.pop("renderer"), device=device)
60 param_shapes = {
61 k: v.shape[1:] for k, v in batch_meta_state_dict(renderer, batch_size=1).items()
...
97 )
99 mlp_init(self.mlp, init=init, init_scale=init_scale)
101 self.activation = get_act(activation)

TypeError: init() got an unexpected keyword argument 'device'

Bin size was too small in the coarse rasterization phase. This caused an overflow, meaning output may be incomplete. To solve, try increasing max_faces_per_bin / max_points_per_bin, decreasing bin_size, or setting bin_size to 0 to use the naive rasterization

I met this warning ,how to solve it?
Bin size was too small in the coarse rasterization phase. This caused an overflow, meaning output may be incomplete. To solve, try increasing max_faces_per_bin / max_points_per_bin, decreasing bin_size, or setting bin_size to 0 to use the naive rasterization.

Is it possible to export to an mtl file?

I know from #1 how to export as a ply file, however I have had no luck at exporting any textures. I saw that in shap_e/examples/example_data/cactus/ is an obj file and a mtl file, is this something that could be generated from shap-e?

Licence Question

While it's clear that the code carries an MIT license, it leaves me uncertain about the licensing status of the model weights. Could you provide some clarity on this matter?

I can't get a 3D model

I've been experiencing an issue while trying to generate a 3D model following the steps in the sample_image_to_3d.ipynb notebook. There are no reported errors during the process, but the progress remains perpetually at 0%.
The program appears to be running, but the progress never increases from 0%. No error messages have been thrown.
I would greatly appreciate your guidance on why this might be happening and any potential solutions. Thank you in advance for your time and assistance.

output like this:
PS D:\shap-e\shap_e\examples> python.exe .\image23d.py
0%| | 0/64 [01:16<?, ?it/s]

failed to read the model file.

Traceback (most recent call last):
File "E:\code\ai\shap-e\shapetest\shapetest\shapetest.py", line 11, in
model = load_model('text300M', device=device)
File "e:\code\ai\shap-e\shap_e\models\download.py", line 110, in load_model
model.load_state_dict(load_checkpoint(model_name, device=device, **kwargs))
File "e:\code\ai\shap-e\shap_e\models\download.py", line 99, in load_checkpoint
return torch.load(path, map_location=device)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 797, in load
with _open_zipfile_reader(opened_file) as opened_zipfile:
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 283, in init
super().init(torch._C.PyTorchFileReader(name_or_buffer))
RuntimeError: PytorchStreamReader failed reading zip archive: not a ZIP archive

Problem with PIP installation

I'm having a problem with the pip installation suggested, this is the error:

`Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/home/samuel/shap-e/setup.py", line 1, in
from setuptools import setup
ImportError: cannot import name 'setup' from 'setuptools' (unknown location)
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
`

I believe this may be a problem with my setup, but am not sure.

Colab Directory Path Issue with image to 3d.

FileNotFoundError Traceback (most recent call last)
in <cell line: 4>()
2 guidance_scale = 3.0
3
----> 4 image = load_image("example_data/corgi.png")
5
6 latents = sample_latents(

2 frames
/usr/local/lib/python3.10/dist-packages/blobfile/_context.py in BlobFile(self, path, mode, streaming, buffer_size, cache_dir, file_size, version)
919 raise Error("Cannot specify cache_dir for streaming files")
920 if _is_local_path(path):
--> 921 f = io.FileIO(path, mode=mode)
922 if "r" in mode:
923 f = io.BufferedReader(f, buffer_size=buffer_size)

FileNotFoundError: [Errno 2] No such file or directory: 'example_data/corgi.png'

ConnectionError: ('Connection aborted.', OSError(22, 'Invalid argument')) in image to 3D

using Python 3.11.2 in Visual Studio Code ( Mac M1 )

It show me error after running this code below

xm = load_model('transmitter', device=device)
model = load_model('image300M', device=device)
diffusion = diffusion_from_config(load_config('diffusion'))
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
File [/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:703](https://file+.vscode-resource.vscode-cdn.net/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:703), in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    702 # Make the request on the httplib connection object.
--> 703 httplib_response = self._make_request(
    704     conn,
    705     method,
    706     url,
    707     timeout=timeout_obj,
    708     body=body,
    709     headers=headers,
    710     chunked=chunked,
    711 )
    713 # If we're going to release the connection in ``finally:``, then
    714 # the response doesn't need to know about the connection. Otherwise
    715 # it will also try to release it and we'll have a double-release
    716 # mess.

File [/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:386](https://file+.vscode-resource.vscode-cdn.net/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:386), in HTTPConnectionPool._make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw)
    385 try:
--> 386     self._validate_conn(conn)
    387 except (SocketTimeout, BaseSSLError) as e:
    388     # Py2 raises this as a BaseSSLError, Py3 raises it as socket timeout.

File [/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:1042](https://file+.vscode-resource.vscode-cdn.net/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:1042), in HTTPSConnectionPool._validate_conn(self, conn)
...
    549 except MaxRetryError as e:
    550     if isinstance(e.reason, ConnectTimeoutError):
    551         # TODO: Remove this in 3.0.0: see #2811

ConnectionError: ('Connection aborted.', OSError(22, 'Invalid argument'))

Error on executing script from `sample_text_to_3d.ipynb`

xm = load_model('transmitter', device=device)

Getting TypeError: 'type' object is not subscriptable

Traces
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/kashyap/Desktop/altworld/shap-e/shap_e/models/download.py", line 144, in load_model from .configs import model_from_config File "/Users/kashyap/Desktop/altworld/shap-e/shap_e/models/configs.py", line 20, in <module> from shap_e.models.nerstf.mlp import MLPDensitySDFModel, MLPNeRSTFModel File "/Users/kashyap/Desktop/altworld/shap-e/shap_e/models/nerstf/mlp.py", line 7, in <module> from shap_e.models.stf.mlp import MLPModel File "/Users/kashyap/Desktop/altworld/shap-e/shap_e/models/stf/mlp.py", line 14, in <module> from .base import Model File "/Users/kashyap/Desktop/altworld/shap-e/shap_e/models/stf/base.py", line 11, in <module> class Model(ABC): File "/Users/kashyap/Desktop/altworld/shap-e/shap_e/models/stf/base.py", line 18, in Model ) -> AttrDict[str, Any]:

Executing on Apple M1 Pro

Issue Report: TypeError in shap_e/examples/sample_text_to_3d.ipynb

Dear OpenAI Support,

I hope this message finds you well. I encountered an issue while running the sample_text_to_3d.ipynb file from the shap-e-main repository. The error message I received was:

TypeError: "'type' object is not subscriptable"

After investigating the problem, I managed to find a solution. However, I believe it is important to report this issue and provide a suggestion for resolving it in the codebase.

The issue arises from the use of AttrDict with subscript notation ([]), which is not supported by the AttrDict class. To address this problem, I recommend replacing all instances of AttrDict[... with Dict[... in the relevant Python files. It is crucial to make this replacement only if you encounter [ immediately after AttrDict.

I would like to contribute to improving the codebase and help other users who might encounter the same error. Therefore, I wanted to bring this issue to your attention and kindly request that you update the affected code accordingly.

Thank you for your attention to this matter, and I appreciate your efforts in maintaining and enhancing the open-source projects.

Best regards,
Hamed Farkhari
[HFarkhari]

Out of memory error

I have 8Gb 2060 super nvidia card, windows 10 and miniconda, and i just installed pytorch with this command:
conda install pytorch=1.13.0 torchvision pytorch-cuda=11.6 -c pytorch -c nvidia
And i have "Out of memory" error on 5th step of Jupyter notebook running script "sample_text_to_3d".
Is there any possibilities to solve this problem?

3d printer friendly shape generation

A suggestion for a feature would be to add an option for the 3d model generation to be 3D printer friendly (e.g.: FDM 3d printer friendly).

Meaning that the algorithm would minimize shapes that are difficult for 3d printers to reproduce, minimize supports usage, steep overhangs, printing in mid air, etc

sample_text_to_3d jupyter notebook issue

Hello,

I've installed shap-e on two computer now and I can't seem to get past the 4th code block on the notebook.

I haven't changed the code at all. It gets stuck on " 0% [insert empty progress bar here] 0/64 [00:00<?, ?it/s]". I had it running for over an hour and it didn't do anything.

How long is it supposed to take on average? Am I being impatient or is something wrong with my computers?

PS. I'm on Windows 11

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.