Comments (10)
What is your environment please? Local machine or Colab? I met the same error on Colab occasionally.
from facechain.
I tried it on colab.
from facechain.
yeah I can reproduce that... but i cannot figure out the root cause...
can you try this:
from modelscope import snapshot_download
snapshot_download('ly261666/cv_portrait_model', revision='v4.0')
before you run python app.py
?
from facechain.
I'm gettting another error, but I think your snippet solved the original error, thanks. :)
2023-08-18 16:38:28,438 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt
load checkpoint from local path: /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt
2023-08-18 16:38:28,481 - modelscope - INFO - load model done
2023-08-18 16:38:28,489 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_resnet34_face-attribute-recognition_fairface/pytorch_model.pt
2023-08-18 16:38:29,178 - modelscope - INFO - load model done
2023-08-18 16:38:33,000 - modelscope - INFO - Model revision not specified, use the latest revision: v2.5
2023-08-18 16:38:33,360 - modelscope - INFO - initiate model from /root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm
2023-08-18 16:38:33,360 - modelscope - INFO - initiate model from location /root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm.
2023-08-18 16:38:33,362 - modelscope - WARNING - No preprocessor field found in cfg.
2023-08-18 16:38:33,362 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.
2023-08-18 16:38:33,362 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: {'model_dir': '/root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm'}. trying to build by task and model information.
2023-08-18 16:38:33,362 - modelscope - WARNING - Find task: face-2d-keypoints, model type: None. Insufficient information to build preprocessor, skip building preprocessor
2023-08-18 16:38:34,929 - modelscope - INFO - Model revision not specified, use the latest revision: v1.1
2023-08-18 16:38:35,256 - modelscope - INFO - initiate model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd
2023-08-18 16:38:35,260 - modelscope - INFO - initiate model from location /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd.
2023-08-18 16:38:35,262 - modelscope - INFO - initialize model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd
2023-08-18 16:38:35,337 - mmcv - INFO - initialize PAFPN with init_cfg {'type': 'Xavier', 'layer': 'Conv2d', 'distribution': 'uniform'}
2023-08-18 16:38:35,339 - mmcv - INFO -
lateral_convs.0.conv.weight - torch.Size([16, 64, 1, 1]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,339 - mmcv - INFO -
lateral_convs.0.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
lateral_convs.1.conv.weight - torch.Size([16, 120, 1, 1]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
lateral_convs.1.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
lateral_convs.2.conv.weight - torch.Size([16, 160, 1, 1]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
lateral_convs.2.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
fpn_convs.0.conv.weight - torch.Size([16, 16, 3, 3]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
fpn_convs.0.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
fpn_convs.1.conv.weight - torch.Size([16, 16, 3, 3]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
fpn_convs.1.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
fpn_convs.2.conv.weight - torch.Size([16, 16, 3, 3]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
fpn_convs.2.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
downsample_convs.0.conv.weight - torch.Size([16, 16, 3, 3]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
downsample_convs.0.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
downsample_convs.1.conv.weight - torch.Size([16, 16, 3, 3]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
downsample_convs.1.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,340 - mmcv - INFO -
pafpn_convs.0.conv.weight - torch.Size([16, 16, 3, 3]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,340 - mmcv - INFO -
pafpn_convs.0.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,341 - mmcv - INFO -
pafpn_convs.1.conv.weight - torch.Size([16, 16, 3, 3]):
XavierInit: gain=1, distribution=uniform, bias=0
2023-08-18 16:38:35,341 - mmcv - INFO -
pafpn_convs.1.conv.bias - torch.Size([16]):
The value is the same before and after calling `init_weights` of PAFPN
2023-08-18 16:38:35,341 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt
load checkpoint from local path: /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt
2023-08-18 16:38:35,405 - modelscope - INFO - load model done
2023-08-18 16:38:35,411 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm/pytorch_model.pt
2023-08-18 16:38:35,473 - modelscope - INFO - load model done
cathed for image process of 001.jpg
Error: CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
cathed for image process of 002.jpg
Error: CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
cathed for image process of 000.jpg
Error: CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
[]
Error: result is empty.
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/gradio/routes.py", line 488, in run_predict
output = await app.get_blocks().process_api(
File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1431, in process_api
result = await self.call_function(
File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1109, in call_function
prediction = await anyio.to_thread.run_sync(
File "/usr/local/lib/python3.10/dist-packages/anyio/to_thread.py", line 33, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 877, in run_sync_in_worker_thread
return await future
File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 807, in run
result = context.run(func, *args)
File "/usr/local/lib/python3.10/dist-packages/gradio/utils.py", line 706, in wrapper
response = f(*args, **kwargs)
File "/content/facechain/app.py", line 174, in run
data_process_fn(instance_data_dir, True)
File "/content/facechain/facechain/inference.py", line 24, in data_process_fn
out_json_name = data_process_fn(input_img_dir)
File "/content/facechain/facechain/data_process/preprocessing.py", line 335, in __call__
exit()
File "/usr/lib/python3.10/_sitebuiltins.py", line 26, in __call__
raise SystemExit(code)
SystemExit: None```
from facechain.
I'm gettting another error, but I think your snippet solved the original error, thanks. :)
2023-08-18 16:38:28,438 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt load checkpoint from local path: /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt 2023-08-18 16:38:28,481 - modelscope - INFO - load model done 2023-08-18 16:38:28,489 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_resnet34_face-attribute-recognition_fairface/pytorch_model.pt 2023-08-18 16:38:29,178 - modelscope - INFO - load model done 2023-08-18 16:38:33,000 - modelscope - INFO - Model revision not specified, use the latest revision: v2.5 2023-08-18 16:38:33,360 - modelscope - INFO - initiate model from /root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm 2023-08-18 16:38:33,360 - modelscope - INFO - initiate model from location /root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm. 2023-08-18 16:38:33,362 - modelscope - WARNING - No preprocessor field found in cfg. 2023-08-18 16:38:33,362 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file. 2023-08-18 16:38:33,362 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: {'model_dir': '/root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm'}. trying to build by task and model information. 2023-08-18 16:38:33,362 - modelscope - WARNING - Find task: face-2d-keypoints, model type: None. Insufficient information to build preprocessor, skip building preprocessor 2023-08-18 16:38:34,929 - modelscope - INFO - Model revision not specified, use the latest revision: v1.1 2023-08-18 16:38:35,256 - modelscope - INFO - initiate model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd 2023-08-18 16:38:35,260 - modelscope - INFO - initiate model from location /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd. 2023-08-18 16:38:35,262 - modelscope - INFO - initialize model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd 2023-08-18 16:38:35,337 - mmcv - INFO - initialize PAFPN with init_cfg {'type': 'Xavier', 'layer': 'Conv2d', 'distribution': 'uniform'} 2023-08-18 16:38:35,339 - mmcv - INFO - lateral_convs.0.conv.weight - torch.Size([16, 64, 1, 1]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,339 - mmcv - INFO - lateral_convs.0.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - lateral_convs.1.conv.weight - torch.Size([16, 120, 1, 1]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - lateral_convs.1.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - lateral_convs.2.conv.weight - torch.Size([16, 160, 1, 1]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - lateral_convs.2.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - fpn_convs.0.conv.weight - torch.Size([16, 16, 3, 3]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - fpn_convs.0.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - fpn_convs.1.conv.weight - torch.Size([16, 16, 3, 3]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - fpn_convs.1.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - fpn_convs.2.conv.weight - torch.Size([16, 16, 3, 3]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - fpn_convs.2.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - downsample_convs.0.conv.weight - torch.Size([16, 16, 3, 3]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - downsample_convs.0.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - downsample_convs.1.conv.weight - torch.Size([16, 16, 3, 3]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - downsample_convs.1.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,340 - mmcv - INFO - pafpn_convs.0.conv.weight - torch.Size([16, 16, 3, 3]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,340 - mmcv - INFO - pafpn_convs.0.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,341 - mmcv - INFO - pafpn_convs.1.conv.weight - torch.Size([16, 16, 3, 3]): XavierInit: gain=1, distribution=uniform, bias=0 2023-08-18 16:38:35,341 - mmcv - INFO - pafpn_convs.1.conv.bias - torch.Size([16]): The value is the same before and after calling `init_weights` of PAFPN 2023-08-18 16:38:35,341 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt load checkpoint from local path: /root/.cache/modelscope/hub/damo/cv_ddsar_face-detection_iclr23-damofd/pytorch_model.pt 2023-08-18 16:38:35,405 - modelscope - INFO - load model done 2023-08-18 16:38:35,411 - modelscope - INFO - loading model from /root/.cache/modelscope/hub/damo/cv_manual_facial-landmark-confidence_flcm/pytorch_model.pt 2023-08-18 16:38:35,473 - modelscope - INFO - load model done cathed for image process of 001.jpg Error: CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions. cathed for image process of 002.jpg Error: CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions. cathed for image process of 000.jpg Error: CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions. [] Error: result is empty. Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/gradio/routes.py", line 488, in run_predict output = await app.get_blocks().process_api( File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1431, in process_api result = await self.call_function( File "/usr/local/lib/python3.10/dist-packages/gradio/blocks.py", line 1109, in call_function prediction = await anyio.to_thread.run_sync( File "/usr/local/lib/python3.10/dist-packages/anyio/to_thread.py", line 33, in run_sync return await get_asynclib().run_sync_in_worker_thread( File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 877, in run_sync_in_worker_thread return await future File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 807, in run result = context.run(func, *args) File "/usr/local/lib/python3.10/dist-packages/gradio/utils.py", line 706, in wrapper response = f(*args, **kwargs) File "/content/facechain/app.py", line 174, in run data_process_fn(instance_data_dir, True) File "/content/facechain/facechain/inference.py", line 24, in data_process_fn out_json_name = data_process_fn(input_img_dir) File "/content/facechain/facechain/data_process/preprocessing.py", line 335, in __call__ exit() File "/usr/lib/python3.10/_sitebuiltins.py", line 26, in __call__ raise SystemExit(code) SystemExit: None```
Error: CUDA error: no kernel image is available for execution on the device
looks like you are using an incompatible gpu device (most likely compability issue with mmcv), can you list your colab config (what device you are using)?
from facechain.
Same issue, here is the output from colab env information:
Sun Aug 20 10:20:41 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |
| N/A 35C P8 9W / 70W | 0MiB / 15360MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Name: torch
Version: 2.0.1+cu118
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org/
Author: PyTorch Team
Author-email: [email protected]
License: BSD-3
Location: /usr/local/lib/python3.10/dist-packages
Requires: filelock, jinja2, networkx, sympy, triton, typing-extensions
Required-by: accelerate, fastai, timm, torchaudio, torchdata, torchtext, torchvision, triton
from facechain.
yeah I can reproduce that... but i cannot figure out the root cause... can you try this:
from modelscope import snapshot_download snapshot_download('ly261666/cv_portrait_model', revision='v4.0')before you run
python app.py
?
I'm afraid this also fails sometimes. I seems like the server the models are hosted on are not too reliable.
from facechain.
currently ModelScope models are hosted on servers in Asia and North America. downloading models from other regions may be less stable especially when the model files are large.
from facechain.
Network reliability aside, it seems that modelscope may also have an authentication token for anonymous connections that expires quickly. In my case it seems to be around the 2minute mark.
modelscope/modelscope#51 (comment)
I am generally able to make iterative progress by 'reruning' the workaround suggested by @tastelikefeet in #52 (comment)
until all data was downloaded. Sometimes this can take 20-30 retries (and 5-10 Colab compute units).
These files can be cached in a google drive to avoid the step.
Could a more reasonble solution be to obtain an API key and assert it, as suggested in the first issue?
from facechain.
@yingdachen I've same issue on Colab. Did you solve that?
And when I try to start training, got this:
from facechain.
Related Issues (20)
- modelscope - INFO - PyTorch version 2.2.2 Found. HOT 1
- FaceChain-ImagineID未来有开源计划吗 HOT 2
- 合成图片报错 local variable 'checkpoint' referenced before assignment HOT 1
- 训练失败,前面安装和下载模型都是顺利的,上传图片开始训练就报错了,need help! HOT 1
- 图片分辨率设置 HOT 5
- 请问在modelscope的notebook中执行git clone失败是什么原因呢 HOT 1
- Runtime error in Huggingface space HOT 5
- modelscope notebook运行成功,但是什么都不能点 HOT 3
- Is the support for SDXL removed on the latest master branch? HOT 1
- Remove/delete? HOT 1
- RuntimeError: dictionary changed size during iteration HOT 1
- mmcv-full在2.0.0版本后更名为mmcv了 HOT 4
- 是否可以扩展到其它的基础模型 HOT 2
- compatibility issue between modelscope and mmcv HOT 1
- Initiates huge downloads on webui start HOT 2
- Windows 11 - No module named 'mmcv._ext' HOT 3
- KeyError('image-face-fusion is already registered in models[image-face-fusion]')
- app.py默认开启了share=True,导致使用者可能在未知情时暴露内网服务 HOT 1
- facechain prevents Stable Diffusion WebUI from starting HOT 5
- facechain tab does not appear in Automatic1111 WebUI version: v1.9.4 HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from facechain.