Git Product home page Git Product logo

scorehmr's Introduction

ScoreHMR: Score-Guided Human Mesh Recovery

Code repository for the paper: Score-Guided Diffusion for 3D Human Recovery
Anastasis Stathopoulos, Ligong Han, Dimitris Metaxas

arXiv Website shields.io Open In Colab

teaser

Installation and Setup

First, clone the repository and submodules. Then, set up a new conda environment and install all dependencies, as follows:

git clone --recursive https://github.com/statho/ScoreHMR.git
cd ScoreHMR
source install_environment.sh

Download the pretrained model weights, and annotations for the datasets by running the following:

source download_data.sh

This will download all necessary data files, and place them in data/. Alternatively, you can download them from here and here. Besides these files, you also need to download the SMPL model. You will need the neutral model. Please go to the corresponding website and register to get access to the downloads section. Download the model, create a folder data/smpl, rename basicModel_neutral_lbs_10_207_0_v1.0.0.pkl to SMPL_NEUTRAL.pkl, and place it in data/smpl/.

Finally, if you wish to run the evaluation and/or training code, you will need to download the images/videos for the datasets. The instructions are mostly common with the description in here. We provide the annotations for all datasets, so you will only need to download the images/videos. Edit the IMG_DIR in score_hmr/configs/datasets.yml accordingly.

Run demo on images

The following command will run ScoreHMR on top of HMR 2.0, using detected keypoints from ViTPose and bounding boxes from ViTDet, on all images in the specified --img_folder. For each image, it will save a rendering of all the reconstructed people together in the front view.

python demo_image.py \
    --img_folder example_data/images \
    --out_folder demo_out/images

Run demo on videos

The following command will first run tracking with 4D-Humans and 2D keypoint detection with ViTPose, and then run temporal model fitting with ScoreHMR on the video specified with --input_video. It will create a video rendering of the reconstructed people in the folder specified by --out_folder. It will also save intermediate results from 4D-Humans and ViTPose.

python demo_video.py \
    --input_video example_data/videos/breakdancing.mp4 \
    --out_folder demo_out/videos

Evaluation

The evaluation code is contained in eval/. We provide evaluation on 3 different settings with the following scripts:

  • eval_keypoint_fitting.py is used in single-frame model fitting evaluation as in Tables 1, 2 & 5 of the paper.
  • eval_multiview.py is used to evaluate the multi-view refinement as in Table 3 of the paper.
  • eval_video.py is used to evaluate ScoreHMR in temporal model fitting as in Table 4 of the paper.

The evaluation code uses cached HMR 2.0 predictions, which can be downloaded from here or by running:

source download_hmr2_preds.sh

We also provide example code for saving the HMR 2.0 predictions in the appropriate format in data_preprocessing/cache_hmr2_preds.py.

Evaluation code example:

python eval/eval_keypoint_fitting.py --dataset 3DPW-TEST --shuffle --use_default_ckpt

Running the above command will compute the MPJPE and Reconstruction Error before and after single-frame model fitting with ScoreHMR on the test set of 3DPW.

Training

The training code uses cached image features. First, extract the PARE image features for the training datasets:

python data_preprocessing/cache_pare_preds.py

Then, start training using the following command:

python train.py --name <name_of_experiment>

Checkpoints and logs will be saved to logs/.

Acknowledgements

Parts of the code are taken or adapted from the following repos:

Citing

If you find this code useful for your research, please consider citing the following paper:

@inproceedings{stathopoulos2024score,
  title  = {Score-Guided Diffusion for 3D Human Recovery},
  author = {Stathopoulos, Anastasis and Han, Ligong and Metaxas, Dimitris},
  booktitle = {CVPR},
  year = {2024}
}

scorehmr's People

Contributors

statho 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

scorehmr's Issues

An error occurred when running demo/track.py

Hi,thans for your great work!I just want to test it on the video,but when running with the track.py on line 134 :Error in forward_face_index_map_1: no kernel image is available for execution on the device

        rend_depth = self.neural_renderer(
            pred_verts,
            face_tensor[None].expand(pred_verts.shape[0], -1, -1).int(),
            # textures=texture_atlas_rgb,
            mode="depth",
            K=K,
            R=R,
            t=t,
        )

Logs:
[2024-03-20 11:15:01,774][pytorch_lightning.utilities.migration.utils][INFO] - Lightning automatically upgraded your loaded checkpoint from v1.8.1 to v2.2.1. To apply the upgrade to your files permanently, run python -m pytorch_lightning.utilities.upgrade_checkpoint ../../../../home/lyx/.cache/4DHumans/logs/train/multiruns/hmr2/0/checkpoints/epoch=35-step=1000000.ckpt
[2024-03-20 11:15:01,780][torch.distributed.nn.jit.instantiator][INFO] - Created a temporary directory at /tmp/tmp0fqy2lvo
[2024-03-20 11:15:01,780][torch.distributed.nn.jit.instantiator][INFO] - Writing /tmp/tmp0fqy2lvo/_remote_module_non_scriptable.py
WARNING: You are using a SMPL model, with only 10 shape coefficients.
[2024-03-20 11:15:04,210][phalp.trackers.PHALP][INFO] - Loading Predictor model...
[2024-03-20 11:15:04,389][phalp.trackers.PHALP][INFO] - Loading Detection model...
[2024-03-20 11:15:08,291][detectron2.checkpoint.detection_checkpoint][INFO] - [DetectionCheckpointer] Loading from https://dl.fbaipublicfiles.com/detectron2/ViTDet/COCO/cascade_mask_rcnn_vitdet_h/f328730692/model_final_f05665.pkl ...
[2024-03-20 11:15:10,244][detectron2.checkpoint.detection_checkpoint][INFO] - [DetectionCheckpointer] Loading from https://dl.fbaipublicfiles.com/detectron2/COCO-InstanceSegmentation/mask_rcnn_X_101_32x8d_FPN_3x/139653917/model_final_2d9806.pkl ...
[2024-03-20 11:15:10,357][phalp.trackers.PHALP][INFO] - Setting up Visualizer...
[2024-03-20 11:15:10,704][phalp.trackers.PHALP][INFO] - Setting up DeepSort...
[2024-03-20 11:15:10,705][phalp.trackers.PHALP][INFO] - Saving tracks at : demo_out/videos/phalp_out/breakdancing/results/breakdancing
[2024-03-20 11:15:14,537][pyscenedetect][INFO] - Downscale factor set to 7, effective resolution: 274 x 154
[2024-03-20 11:15:14,538][pyscenedetect][INFO] - Detecting scenes...
[2024-03-20 11:15:14,841][phalp.trackers.PHALP][INFO] - Detected shot change at frame:
Tracking : breakdancing 🚢 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0% eta : -:--:-- time elapsed : 0:00:02Error in forward_face_index_map_1: no kernel image is available for execution on the device

my cuda version=11.7,so i installed pytorch with : conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia,i don't know how to fix the problem.

UnFit Effect on Depth?

The visual effect in front view is well, but in vertical view does not works. The distance in xy-axis and in z-axis(depth) are obviously not fit. @statho
image

Smoothing doesn't work

Thanks for your work! Very interesting article.
But when testing the provided weights, there is no difference between the results of 4D-Humans and ScoreHMR. The shaking does not go away, especially in the feet.

compare.mp4

On the attached video there are, in order: 4D-Humans, ScoreHMR with default parameters and 1000 iterations of ScoreHMR. Why is there no difference?

Unstable effect in depth.

After I adjust the W_SMOOTH, Motion seems visually smooth. Actually, when I detect my own video, the 'smpl_trans' in x/y axis is reasonable, but in z axis(depth) is too unstable. Could you please show me some suggestion? @statho

Request for Guidance on Tracking Smoothing and Frame Completion for Constant Presence in Videos

Thank you very much for your excellent work!

I am currently utilizing this reportire for a project involving video analysis where multiple people are present almost constantly throughout the video. However, I am encountering an issue where some individuals are not detected in certain frames despite their continuous presence in the scene. For example, in a sequence where I expect each person to be present across 300 frames, the detection results are varying (e.g., 300, 300, 287, 294, 276 frames respectively for each individual). I am seeking advice on how to handle these discrepancies with your tracking tools.

Could you please provide any suggestions on how I might modify the tracking logic to smooth out the presence and possibly fill in these missing frames? Specifically, I am looking to ensure that each person is accounted for in all 300 frames, whether this means interpolating missing data or adjusting the detection parameters.

Mesh Output?

Is there support or a method within ScoreHMR for exporting the 3D mesh data (e.g., OBJ, FBX, glTF formats) generated from video inputs? thanks

multiview demo?

I am interested in testing this method with multiview images/videos.
Is there an easy way to adapt the demo script so score_hmr can be run with batched inputs?

TypeError: cannot pickle '_io.BufferedReader' object

After executing the sample program, the following error message appears,
Operating system: windows10
python : 3.10.14

(.venv) C:\_Dev\Repository\ScoreHMR>python eval/eval_keypoint_fitting.py --dataset 3DPW-TEST --shuffle --use_default_ckpt
WARNING: You are using a SMPL model, with only 10 shape coefficients.
WARNING: You are using a SMPL model, with only 10 shape coefficients.
  0%|                                                                                                                                                                                                               | 0/139 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "C:\_Dev\Repository\ScoreHMR\eval\eval_keypoint_fitting.py", line 88, in <module>
    for ii, batch in enumerate(tqdm(dataloader)):
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\tqdm\std.py", line 1178, in __iter__
    for obj in iterable:
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\torch\utils\data\dataloader.py", line 441, in __iter__
    return self._get_iterator()
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\torch\utils\data\dataloader.py", line 388, in _get_iterator
    return _MultiProcessingDataLoaderIter(self)
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\torch\utils\data\dataloader.py", line 1042, in __init__
    w.start()
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\process.py", line 121, in start
    self._popen = self._Popen(self)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\context.py", line 224, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\context.py", line 336, in _Popen
    return Popen(process_obj)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\popen_spawn_win32.py", line 93, in __init__
    reduction.dump(process_obj, to_child)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
TypeError: cannot pickle '_io.BufferedReader' object

(.venv) C:\_Dev\Repository\ScoreHMR>WARNING: You are using a SMPL model, with only 10 shape coefficients.
WARNING: You are using a SMPL model, with only 10 shape coefficients.
  0%|                                                                                                                                                                                                               | 0/139 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\spawn.py", line 125, in _main
    prepare(preparation_data)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\spawn.py", line 236, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\spawn.py", line 287, in _fixup_main_from_path
    main_content = runpy.run_path(main_path,
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\runpy.py", line 289, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\runpy.py", line 96, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\_Dev\Repository\ScoreHMR\eval\eval_keypoint_fitting.py", line 88, in <module>
    for ii, batch in enumerate(tqdm(dataloader)):
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\tqdm\std.py", line 1178, in __iter__
    for obj in iterable:
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\torch\utils\data\dataloader.py", line 441, in __iter__
    return self._get_iterator()
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\torch\utils\data\dataloader.py", line 388, in _get_iterator
    return _MultiProcessingDataLoaderIter(self)
  File "C:\_Dev\Repository\ScoreHMR\.venv\lib\site-packages\torch\utils\data\dataloader.py", line 1042, in __init__
    w.start()
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\process.py", line 121, in start
    self._popen = self._Popen(self)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\context.py", line 224, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\context.py", line 336, in _Popen
    return Popen(process_obj)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\popen_spawn_win32.py", line 45, in __init__
    prep_data = spawn.get_preparation_data(process_obj._name)
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\spawn.py", line 154, in get_preparation_data
    _check_not_importing_main()
  File "C:\_Dev\Repository\ScoreHMR\Python\Python-3.10.14\lib\multiprocessing\spawn.py", line 134, in _check_not_importing_main
    raise RuntimeError('''
RuntimeError:
        An attempt has been made to start a new process before the
        current process has finished its bootstrapping phase.

        This probably means that you are not using fork to start your
        child processes and you have forgotten to use the proper idiom
        in the main module:

            if __name__ == '__main__':
                freeze_support()
                ...

        The "freeze_support()" line can be omitted if the program
        is not going to be frozen to produce an executable.

(.venv) C:\_Dev\Repository\ScoreHMR>

6d pose representation

Hi,

I have one more question:

If you are converting to 6d poses and you are converting it back to rotation matrices how do you ensure that the final matrices are still valid? As far as I know, wouldnt this affect how it is displayed in the image?

no hmr2 - where to find it

hello
thank you for your wonderful job

i could not find hmr2 package when running demo
where can i get it ?

from hmr2.configs import CACHE_DIR_4DHUMANS
from hmr2.models import download_models, load_hmr2, DEFAULT_CHECKPOINT
from hmr2.utils import recursive_to
from hmr2.utils.renderer import Renderer, cam_crop_to_full

or is it customized code from hmr2.0 repo? (https://github.com/russoale/hmr2.0/tree/master?tab=readme-ov-file)
if so can you share it ?

download issue; hmr2_data.tar.gz

Hi @statho and author,
I'm Jin.

Thank you for share nice work!

I'm having trouble with the command to download the file: hmr2_data.tar.gz. When I attempt to download the remote file from https://people.eecs.berkeley.edu/~jathushan/projects/4dhumans/hmr2_data.tar.gz to /root/.cache/4DHumans/hmr2_data.tar.gz, it doesn't work. It seems like the download from this path is blocked. Is there another way I can obtain this file?

Or, if my understanding is incorrect, please let me know your thoughts

image

Best Regards,

fail to run demo_video.py

Hi,

I am trying to run the demo code with

python demo_video.py --input_video example_data/videos/breakdancing.mp4 --out_folder demo_out/videos

But I got the following error:

[2024-03-25 17:39:30,875][phalp.trackers.PHALP][INFO] - Setting up Visualizer...
[2024-03-25 17:39:31,824][phalp.trackers.PHALP][INFO] - Setting up DeepSort...
[2024-03-25 17:39:31,825][phalp.trackers.PHALP][INFO] - Saving tracks at : demo_out/videos/phalp_out/breakdancing/results/breakdancing
list index out of range
Traceback (most recent call last):
File "miniconda3/envs/score_hmr/lib/python3.10/site-packages/phalp/trackers/PHALP.py", line 174, in track
list_of_shots = self.get_list_of_shots(list_of_frames)
File "miniconda3/envs/score_hmr/lib/python3.10/site-packages/phalp/trackers/PHALP.py", line 610, in get_list_of_shots
if(isinstance(list_of_frames[0], str)):
IndexError: list index out of range

Any help is appreciated! Thanks.

Betas normalization

Hey! Great work!

I just had one question:

Where did you get the min and max values to normalize the betas from? I see the file name is betas_stats_eft_fits.npz. Where is this initially derived from? Did you calculate this or?

SMPLx version

Hello! Thanks for your amazing work! Im interested in applying this code to the smplx model, so, can you give any recommendations? or do you have such plans, or have you had some difficulties?

Crashes ubuntu during WSL installation

From the install instructions, the line "source install_environment.sh" makes the WSL Ubuntu 22.04 LTS window close instantly without any message. I assume it is crashing the environment.
I'll poke through the script, but in the meantime - can this work in WSL or does it need a 'proper' linux box?

colab is not working on video

i am not a coder but its not working i guess can someone give me fix
this is showing

cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame= 242 fps= 42 q=2.0 Lsize=N/A time=00:00:07.36 bitrate=N/A speed=1.29x
video:47948kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
python demo/track.py video.source=demo_out/videos/images/breakdancing video.output_dir=demo_out/videos/phalp_out/breakdancing overwrite=False detect_shots=True video.extract_video=False render.enable=False
[05/13 07:43:11] INFO No OpenGL_accelerate module loaded: No module

VRAM Requirements for Inference

Dear Author,

First of all, thank you for your excellent work. I encountered an Out of Memory (OOM) error while doing inference using the provided demo script. So I'm curious how much VRAM is needed for inference. I would be grateful if you could provide information on this.

3D Keypoint data?

Hi,
Can 3D keypoint data be returned in json format from images and videos?
Only see 2d keypoints return from images and videos using the demo scripts. TIA

Issue with running demo_video.py

I'm running to this error when I run demo_video.py:

Is there any fix for his? Thanks!

[05/24 20:55:06] INFO No OpenGL_accelerate module loaded: No module named 'OpenGL_accelerate' acceleratesupport.py:17
apex is not installed
apex is not installed
apex is not installed
load checkpoint from local path: /home/paperspace/ScoreHMR/data/model_weights/vitpose_ckpts/vitpose-h-multi-coco.pth
[2024-05-24 20:55:20,584][pytorch_lightning.utilities.migration.utils][INFO] - Lightning automatically upgraded your loaded checkpoint from v1.8.1 to v2.2.5. To apply the upgrade to your files permanently, run python -m pytorch_lightning.utilities.upgrade_checkpoint ../.cache/4DHumans/logs/train/multiruns/hmr2/0/checkpoints/epoch=35-step=1000000.ckpt
WARNING: You are using a SMPL model, with only 10 shape coefficients.
[2024-05-24 20:55:24,962][phalp.trackers.PHALP][INFO] - Loading Predictor model...
[2024-05-24 20:55:25,183][phalp.trackers.PHALP][INFO] - Loading Detection model...
[2024-05-24 20:55:34,404][detectron2.checkpoint.detection_checkpoint][INFO] - [DetectionCheckpointer] Loading from https://dl.fbaipublicfiles.com/detectron2/ViTDet/COCO/cascade_mask_rcnn_vitdet_h/f328730692/model_final_f05665.pkl ...
[2024-05-24 20:55:37,395][detectron2.checkpoint.detection_checkpoint][INFO] - [DetectionCheckpointer] Loading from https://dl.fbaipublicfiles.com/detectron2/COCO-InstanceSegmentation/mask_rcnn_X_101_32x8d_FPN_3x/139653917/model_final_2d9806.pkl ...
[2024-05-24 20:55:37,582][phalp.trackers.PHALP][INFO] - Setting up Visualizer...
[2024-05-24 20:55:38,021][phalp.trackers.PHALP][INFO] - Setting up DeepSort...
[2024-05-24 20:55:38,021][phalp.trackers.PHALP][INFO] - Saving tracks at : demo_out/videos/phalp_out/breakdancing/results/breakdancing
list index out of range
Traceback (most recent call last):
File "/home/paperspace/miniconda3/envs/score_hmr/lib/python3.10/site-packages/phalp/trackers/PHALP.py", line 174, in track
list_of_shots = self.get_list_of_shots(list_of_frames)
File "/home/paperspace/miniconda3/envs/score_hmr/lib/python3.10/site-packages/phalp/trackers/PHALP.py", line 610, in get_list_of_shots
if(isinstance(list_of_frames[0], str)):
IndexError: list index out of range

Traceback (most recent call last):
File "/home/paperspace/ScoreHMR/demo_video.py", line 206, in
main()
File "/home/paperspace/ScoreHMR/demo_video.py", line 44, in main
process_seq(out_root=OUT_DIR, seq=args.input_video, img_dir=img_dir, overwrite=args.overwrite)
File "/home/paperspace/ScoreHMR/demo/utils.py", line 145, in process_seq
os.rename(f"{res_dir}/demo_{name}.pkl", res_path)
FileNotFoundError: [Errno 2] No such file or directory: 'demo_out/videos/phalp_out/breakdancing/results/demo_breakdancing.pkl' -> 'demo_out/videos/phalp_out/breakdancing/breakdancing.pkl'

OSX compatibility

Is it possible to use proposed refinement with the predictions from OSX model. OSX seems quite generisable model. It would be cool to have a demo where refinement is applied on osx output. Or would it require further fine tuning on predictions of osx.

thank you for the great work!
Cheers
Gurkirt

Typo in ScoreHMR.ipynb show_local_mp4_video

When the video display runs for breakdancing.mp4, it is looking for a file at
demo_out/videos/breakdancing.mp4: No such file or directory

The actual file name has a shot incrementer appended to the end, so the filename for the video to play is:
demo_out/videos/breakdancing_0.mp4

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.