Giter VIP home page Giter VIP logo

facenet-real-time-face-recognition's Introduction

Hi , I'm Mohit

A developer who happens to have an interest in Deep Learning and NLP

Blogs posts

cplusplus css3 django docker flask git html5 javascript linux mysql opencv python redis tensorflow

sainimohit23 sainimohit23 10306078 @mohitsaini_54300

 sainimohit23

facenet-real-time-face-recognition's People

Contributors

sainimohit23 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

facenet-real-time-face-recognition's Issues

pretrain weight ?

./checkpoints/1545639361/facenet_2.h5

where to get facenet2.h5 file

Not able to train the model. The below Error occurs during training.

Using TensorFlow backend.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:523: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:524: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:527: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:532: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
Saved model not found, loading untrained FaceNet
2020-07-15 20:28:37.952932: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-07-15 20:28:38.029719: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:964] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-07-15 20:28:38.030505: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 0 with properties:
name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
pciBusID: 0000:00:04.0
totalMemory: 11.17GiB freeMemory: 11.11GiB
2020-07-15 20:28:38.030543: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1490] Adding visible gpu devices: 0
2020-07-15 20:28:38.361742: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-07-15 20:28:38.361820: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] 0
2020-07-15 20:28:38.361839: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0: N
2020-07-15 20:28:38.361960: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1103] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10761 MB memory) -> physical GPU (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0, compute capability: 3.7)
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py", line 1626, in _create_c_op
c_op = c_api.TF_FinishOperation(op_desc)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape must be rank 1 but is rank 0 for 'bn1/cond/Reshape_4' (op: 'Reshape') with input shapes: [1,64,1,1], [].

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "./FaceNet-train/train_triplet.py", line 49, in
FRmodel = faceRecoModel(input_shape=(3, IMAGE_SIZE, IMAGE_SIZE))
File "/content/FaceNet-train/inception_blocks_v2.py", line 231, in faceRecoModel
X = BatchNormalization(axis = 1, name = 'bn1')(X)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py", line 457, in call
output = self.call(inputs, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/layers/normalization.py", line 206, in call
training=training)
File "/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py", line 3123, in in_train_phase
x = switch(training, x, alt)
File "/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py", line 3058, in switch
else_expression_fn)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/deprecation.py", line 488, in new_func
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 2087, in cond
orig_res_f, res_f = context_f.BuildCondBranch(false_fn)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 1920, in BuildCondBranch
original_result = fn()
File "/usr/local/lib/python3.6/dist-packages/keras/layers/normalization.py", line 167, in normalize_inference
epsilon=self.epsilon)
File "/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py", line 1908, in batch_normalization
mean = tf.reshape(mean, (-1))
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 6296, in reshape
"Reshape", tensor=tensor, shape=shape, name=name)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/deprecation.py", line 488, in new_func
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py", line 3272, in create_op
op_def=op_def)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py", line 1790, in init
control_input_ops)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py", line 1629, in _create_c_op
raise ValueError(str(e))
ValueError: Shape must be rank 1 but is rank 0 for 'bn1/cond/Reshape_4' (op: 'Reshape') with input shapes: [1,64,1,1],

Testing fail

Hi Mohit.

Used updated repo and it work. But my problem is when I trained the Model, checkpoint directory is created and weights are saved. But when I test the Model with command- “python webcamFaceRecoMulti.py”. It shows error-

Using TensorFlow backend.
Trained model found
Loading custom trained model…
2019–08–13 11:02:30.007665: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
/root/env/lib/python3.6/site-packages/keras/engine/saving.py:292: UserWarning: No training configuration found in save file: the model was not compiled. Compile it manually.
warnings.warn(‘No training configuration found in save file: ‘
(1, 3, 96, 96)
(1, 3, 96, 96)
(1, 3, 96, 96)
(1, 3, 96, 96)
(1, 3, 96, 96)
(1, 3, 96, 96)
VIDEOIO ERROR: V4L: can’t open camera by index 0
Traceback (most recent call last):
File “webcamFaceRecoMulti.py”, line 103, in
frame = imutils.resize(frame, width = 800)
File “/root/env/lib/python3.6/site-packages/imutils/convenience.py”, line 69, in resize
(h, w) = image.shape[:2]
AttributeError: ‘NoneType’ object has no attribute ‘shape’

Screenshot is attached.

Repository not working with python2.7

I installed keras and tensorflow successfully in virtual env. I am using ubuntu 16.04. This repository is not working with python 2.7

Throwing error : valueError: unsupported pickle protocol: 3

Screenshot is attached.

any one can help. I will cite your work in my project

Training fail

Hi

Training fails with train_triplet.py. It throws error -

np_resource = np.dtype([("resource", np.ubyte, 1)])
Traceback (most recent call last):
File "train_triplet.py", line 43, in
if os.path.exists(best_model_path):
NameError: name 'best_model_path' is not defined

Kindly do help me.

Possible GPU issue

Hey Mohit,
First of all great repo! Me and a colleague have used this repo as well as several others to piece up a facenet algorithm. Overall it uses a different model but is very similar to yours. My issue is that everytime I generate new embeddings for one particular face, I get different probabilities each time. This probably means different embeddings for the same face at different times right? I'm using tensorflow 1.13 gpu and CUDA 10 . Do you think the embeddings are getting messed up because I'm using GPU? Your profile says you don't use GPU so hence could this be the reason of discrepancy?

training fail

training fails while running triplet_loss.py with throwing error:
ValueError: Cannot feed value of shape (64, 2, 1) for Tensor 'FaceRecoModel_target:0', which has shape '(?, ?)'

Training fails with large epochs

Hi Mohit.. Your repo is working fine with video but it's is creating problem with training. I made changes in parameters py file, with epochs 50 and steps per epoch 40.but it stops with 6-10 epochs. Why is it so and hence do not give good results.

I cann't slove this issue while running train_triplet.py

2020-11-10 14:38:04.100728: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'libcudart.so.10.1'; dlerror: libcudart.so.10.1: cannot open shared object file: No such file or directory
2020-11-10 14:38:04.100756: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Saved model not found, loading untrained FaceNet
2020-11-10 14:38:06.415020: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2020-11-10 14:38:06.415055: W tensorflow/stream_executor/cuda/cuda_driver.cc:312] failed call to cuInit: UNKNOWN ERROR (303)
2020-11-10 14:38:06.415090: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (ayush-Inspiron-5558): /proc/driver/nvidia/version does not exist
2020-11-10 14:38:06.415374: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations: AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2020-11-10 14:38:06.422818: I tensorflow/core/platform/profile_utils/cpu_utils.cc:104] CPU Frequency: 2394610000 Hz
2020-11-10 14:38:06.423240: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x4022760 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-11-10 14:38:06.423298: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
2020-11-10 14:39:21.909641: I tensorflow/core/profiler/lib/profiler_session.cc:164] Profiler session started.
WARNING:tensorflow:From train_triplet.py:82: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
Instructions for updating:
Please use Model.fit, which supports generators.
Traceback (most recent call last):
File "train_triplet.py", line 82, in
tripletModel.fit_generator(gen, epochs=NUM_EPOCHS,steps_per_epoch=STEPS_PER_EPOCH,callbacks=[early_stopping, tensorboard])
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 324, in new_func
return func(*args, **kwargs)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1829, in fit_generator
initial_epoch=initial_epoch)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 108, in _method_wrapper
return method(self, *args, **kwargs)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1098, in fit
tmp_logs = train_function(iterator)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py", line 780, in call
result = self._call(*args, **kwds)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py", line 840, in _call
return self._stateless_fn(*args, **kwds)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 2829, in call
return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 1848, in _filtered_call
cancellation_manager=cancellation_manager)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 1924, in _call_flat
ctx, args, cancellation_manager=cancellation_manager))
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 550, in call
ctx=ctx)
File "/home/ayush/Desktop/FaceNet-Real-Time-face-recognition-master/env/lib/python3.6/site-packages/tensorflow/python/eager/execute.py", line 60, in quick_execute
inputs, attrs, num_outputs)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Default MaxPoolingOp only supports NHWC on device type CPU
[[node functional_1/FaceRecoModel/max_pooling2d/MaxPool_2 (defined at train_triplet.py:82) ]] [Op:__inference_train_function_21540]

Function call stack:
train_function

Genral Question

Hi

Thanks for sharing Your Work , I had a few questions, could we may be chat for a while?
Thanks

requirements.txt

would you please add a requriements.txt file? your code returns a lot of errors due to packages not being compatable.

Which classifier did you use?

Hii,
I would like to know that after training triplet loss, for face recognition in Webcam script which classifier do you use?

Align and detection on new images do not work

Hi Mohit.

I tried to align images of my own dataset of faces, this code fails to detect, infact Davidberg code too fails to detect and align on new images. It works well with lfw and celebA dataset, but why it is not on new images. Model is pre trained well with faces. It should detect new images too.

Model labels ?

There are few questions, but it will be quick.

  1. I saw you used
    y_val = np.zeros((batch, 2, 1)) but they are just zeros, what are the actual values to train. You don't need to provide that, just let me know what to use so that I can do it.
  2. The faceRecoModel outputs a Dense Layer of 128 dims, but y_val is only (2,1) dims. How is this possible? Don't we need to have same dims? If so, what to use as y_val.
    Final question is, we know that we have to train on few images per person. so we need data, with inputs and outputs, as our model outputs 128 dims, means we need to provide labels of same dims 128 dims. How do get these labels to train? Or should we really train our model? Can't we just pick one photo per person and directly predicting the person embedding and store in database. Doesn't this works ?

Thank you for your repository!

Not able to train the model, size mismatch

Using TensorFlow backend.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:523: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:524: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:527: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:532: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
Saved model not found, loading untrained FaceNet
Image_size: 96
2020-07-16 14:49:26.652424: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-07-16 14:49:26.731720: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:964] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-07-16 14:49:26.732485: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 0 with properties:
name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
pciBusID: 0000:00:04.0
totalMemory: 11.17GiB freeMemory: 11.11GiB
2020-07-16 14:49:26.732553: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1490] Adding visible gpu devices: 0
2020-07-16 14:49:27.070085: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-07-16 14:49:27.070147: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] 0
2020-07-16 14:49:27.070168: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0: N
2020-07-16 14:49:27.070309: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1103] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10761 MB memory) -> physical GPU (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0, compute capability: 3.7)
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1259: calling reduce_prod (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.
Instructions for updating:
keep_dims is deprecated, use keepdims instead
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3026: calling l2_normalize (from tensorflow.python.ops.nn_impl) with dim is deprecated and will be removed in a future version.
Instructions for updating:
dim is deprecated, use axis instead
./train_triplet.py:79: UserWarning: Update your Model call to the Keras 2 API: Model(inputs=[<tf.Tenso..., outputs=[<tf.Tenso...)
tripletModel = Model(input=[A, P, N], output=[enc_A, enc_P, enc_N])
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1344: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.
Instructions for updating:
keep_dims is deprecated, use keepdims instead
Epoch 1/1
Traceback (most recent call last):
File "./train_triplet.py", line 83, in
tripletModel.fit_generator(gen, epochs=NUM_EPOCHS,steps_per_epoch=STEPS_PER_EPOCH,callbacks=[early_stopping, tensorboard])
File "/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 2114, in fit_generator
class_weight=class_weight)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 1826, in train_on_batch
check_batch_axis=True)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 1411, in _standardize_user_data
exception_prefix='target')
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 141, in _standardize_input_data
str(array.shape))
ValueError: Error when checking target: expected FaceRecoModel to have 2 dimensions, but got array with shape (16, 2, 1)

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.