Git Product home page Git Product logo

Comments (3)

shaojunjie0912 avatar shaojunjie0912 commented on May 29, 2024

@andrewssobral Hi~

Is the library really not supported by Linux?

Tests on my Arch Linux failed though.

from dtt.

andrewssobral avatar andrewssobral commented on May 29, 2024

Hi @abhinavshaw1993 @shaojunjie0912 sorry for my deplayed reply.
Usually it should work with Linux, but I need to check it if there are any issue to fix.
I come back to you in the next days.

from dtt.

andrewssobral avatar andrewssobral commented on May 29, 2024

Hello @abhinavshaw1993 @shaojunjie0912 i just tested on Linux Ubuntu 22.04 and it works fine for me:

andrews@DELL-M4700:~/Projects/dtt$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

andrews@DELL-M4700:~/Projects/dtt$ cmake -S . -B build -DCMAKE_PREFIX_PATH=$LIBTORCH_HOME
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Armadillo: /usr/include (found suitable version "12.8.3", minimum required is "9")
-- Found Torch: /home/andrews/Projects/libs/libtorch/lib/libtorch.so
-- Found OpenCV: /usr (found version "4.5.4")
-- OpenCV library status:
--     version: 4.5.4
--     libraries: opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio;opencv_alphamat;opencv_aruco;opencv_barcode;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_datasets;opencv_dnn_objdetect;opencv_dnn_superres;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_hdf;opencv_hfs;opencv_img_hash;opencv_intensity_transform;opencv_line_descriptor;opencv_mcc;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_quality;opencv_rapid;opencv_reg;opencv_rgbd;opencv_saliency;opencv_shape;opencv_stereo;opencv_structured_light;opencv_superres;opencv_surface_matching;opencv_text;opencv_tracking;opencv_videostab;opencv_viz;opencv_wechat_qrcode;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto
--     include path: /usr/include/opencv4
-- Configuring done
-- Generating done
-- Build files have been written to: /home/andrews/Projects/dtt/build

andrews@DELL-M4700:~/Projects/dtt$ cmake --build build --config Release
[ 50%] Building CXX object CMakeFiles/dtt_test.dir/test/dtt_test.cpp.o
[100%] Linking CXX executable dtt_test
[100%] Built target dtt_test

andrews@DELL-M4700:~/Projects/dtt$ ./build/dtt_test
Eigen version: 340
Armadillo version: 12.8.3 (Cortisol Injector)
Using OpenCV version 4.5.4
--------------------------------------------------
Testing OpenCV
[-1.6030948e-09, 0.15813506, -0.70092797;
 -0.42859599, 1.2387421, -0.27800822;
 -0.64839876, 0.30516329, 0.51501459]
--------------------------------------------------
Testing Eigen
  3  -1
2.5 1.5
--------------------------------------------------
Testing Armadillo
A:
   0.7868   0.9467   0.2513
   0.2505   0.0193   0.0227
   0.7107   0.4049   0.5206

--------------------------------------------------
Testing ArrayFire
ArrayFire v3.9.0 (CPU, 64-bit Linux, build b59a1ae53)
[0] Intel: Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHzsum: 54.4886
--------------------------------------------------
Testing LibTorch
 0.1333  0.9929  0.9439
 0.2177  0.2816  0.7952
[ CPUFloatType{2,3} ]
--------------------------------------------------
Testing Eigen to OpenCV (copy 3x3 matrix):
EigenMat:
 0.680375   0.59688 -0.329554
-0.211234  0.823295  0.536459
 0.566198 -0.604897 -0.444451
cvMat:
[0.68037546, 0.59688008, -0.3295545;
 -0.21123415, 0.82329476, 0.53645921;
 0.56619847, -0.60489726, -0.44445056]
cvMat:
[0, 0.59688008, -0.3295545;
 -0.21123415, 0.82329476, 0.53645921;
 0.56619847, -0.60489726, -0.44445056]
EigenMat:
 0.680375   0.59688 -0.329554
-0.211234  0.823295  0.536459
 0.566198 -0.604897 -0.444451
--------------------------------------------------
Testing Eigen to Armadillo (copy 3x3 matrix):
EigenMat:
   0.10794  -0.270431    0.83239
-0.0452059  0.0268018   0.271423
  0.257742   0.904459   0.434594
ArmaMat:
   0.1079  -0.2704   0.8324
  -0.0452   0.0268   0.2714
   0.2577   0.9045   0.4346

ArmaMat:
        0  -0.2704   0.8324
  -0.0452   0.0268   0.2714
   0.2577   0.9045   0.4346

EigenMat:
   0.10794  -0.270431    0.83239
-0.0452059  0.0268018   0.271423
  0.257742   0.904459   0.434594
--------------------------------------------------
Testing Eigen to ArrayFire (copy 3x3 matrix):
EigenMat:
-0.716795 -0.514226 -0.686642
 0.213938 -0.725537 -0.198111
-0.967399  0.608353 -0.740419
AfMat:
A
[3 3 1 1]
   -0.7168    -0.5142    -0.6866
    0.2139    -0.7255    -0.1981
   -0.9674     0.6084    -0.7404

AfMat:
A
[3 3 1 1]
    0.0000    -0.5142    -0.6866
    0.2139    -0.7255    -0.1981
   -0.9674     0.6084    -0.7404

EigenMat:
-0.7168 -0.5142 -0.6866
 0.2139 -0.7255 -0.1981
-0.9674  0.6084 -0.7404
--------------------------------------------------
Testing Eigen(CM) to LibTorch (copy 3x3 matrix):
EigenMat:
-0.7824 0.02586 -0.4079
 0.9978  0.6782  0.2751
-0.5635  0.2253 0.04857
LibTorch:
-0.7824  0.0259 -0.4079
 0.9978  0.6782  0.2751
-0.5635  0.2253  0.0486
[ CPUFloatType{3,3} ]
LibTorch:
 0.0000  0.0259 -0.4079
 0.9978  0.6782  0.2751
-0.5635  0.2253  0.0486
[ CPUFloatType{3,3} ]
EigenMat:
-0.7824 0.02586 -0.4079
 0.9978  0.6782  0.2751
-0.5635  0.2253 0.04857
--------------------------------------------------
Testing Eigen(RM) to LibTorch (copy 3x3 matrix):
EigenMat:
 1.01  2.02  3.03
 4.04 5.051 6.061
7.071 8.081 9.091
LibTorch:
 1.0101  2.0202  3.0303
 4.0404  5.0505  6.0606
 7.0707  8.0808  9.0909
[ CPUFloatType{3,3} ]
LibTorch:
 0.0000  2.0202  3.0303
 4.0404  5.0505  6.0606
 7.0707  8.0808  9.0909
[ CPUFloatType{3,3} ]
EigenMat:
 1.01  2.02  3.03
 4.04 5.051 6.061
7.071 8.081 9.091
--------------------------------------------------
Testing Eigen(RM) to LibTorch (no-copy 3x3 matrix):
EigenMat:
 1.01  2.02  3.03
 4.04 5.051 6.061
7.071 8.081 9.091
LibTorch:
 1.0101  2.0202  3.0303
 4.0404  5.0505  6.0606
 7.0707  8.0808  9.0909
[ CPUFloatType{3,3} ]
LibTorch:
 0.0000  2.0202  3.0303
 4.0404  5.0505  6.0606
 7.0707  8.0808  9.0909
[ CPUFloatType{3,3} ]
EigenMat:
    0  2.02  3.03
 4.04 5.051 6.061
7.071 8.081 9.091
--------------------------------------------------
Testing Armadillo to Eigen (copy 3x3 matrix):
ArmaMat:
   0.3447   0.1400   0.8571
   0.2742   0.5439   0.4998
   0.5610   0.5219   0.4194

EigenMat:
0.3447   0.14 0.8571
0.2742 0.5439 0.4998
 0.561 0.5219 0.4194
EigenMat:
     0   0.14 0.8571
0.2742 0.5439 0.4998
 0.561 0.5219 0.4194
ArmaMat:
   0.3447   0.1400   0.8571
   0.2742   0.5439   0.4998
   0.5610   0.5219   0.4194

--------------------------------------------------
Testing Armadillo to OpenCV (copy 3x3 matrix):
ArmaMat:
   0.7443   0.3201   0.2455
   0.2492   0.9105   0.1983
   0.2393   0.1648   0.7159

cvMat:
[0.74428052, 0.3200649, 0.24553275;
 0.24916813, 0.91050082, 0.19831969;
 0.23927662, 0.16483298, 0.71589273]
cvMat:
[0, 0.3200649, 0.24553275;
 0.24916813, 0.91050082, 0.19831969;
 0.23927662, 0.16483298, 0.71589273]
ArmaMat:
   0.7443   0.3201   0.2455
   0.2492   0.9105   0.1983
   0.2393   0.1648   0.7159

--------------------------------------------------
Testing Armadillo to ArrayFire (copy 3x3 matrix):
ArmaMat:
   0.9678   0.4599   0.5839
   0.7694   0.2573   0.9503
   0.0807   0.7770   0.4381

AfMat:
A
[3 3 1 1]
    0.9678     0.4599     0.5839
    0.7694     0.2573     0.9503
    0.0807     0.7770     0.4381

AfMat:
A
[3 3 1 1]
    0.9678     0.4599     0.5839
    0.7694     0.0000     0.9503
    0.0807     0.7770     0.4381

ArmaMat:
   0.9678   0.4599   0.5839
   0.7694   0.2573   0.9503
   0.0807   0.7770   0.4381

--------------------------------------------------
Testing Armadillo to LibTorch (copy 3x3 matrix):
ArmaMat:
   0.3223   0.0455   0.0912
   0.5324   0.5050   0.9071
   0.2564   0.6962   0.0309

LibTorch:
 0.3223  0.0455  0.0912
 0.5324  0.5050  0.9071
 0.2564  0.6962  0.0309
[ CPUFloatType{3,3} ]
LibTorch:
 0.0000  0.0455  0.0912
 0.5324  0.5050  0.9071
 0.2564  0.6962  0.0309
[ CPUFloatType{3,3} ]
ArmaMat:
   0.3223   0.0455   0.0912
   0.5324   0.5050   0.9071
   0.2564   0.6962   0.0309

--------------------------------------------------
Testing OpenCV to Eigen (copy 3x3 matrix):
cvMat:
[-1.1450437, 0.76984555, -0.04643121;
 1.3059061, -1.9596839, -1.8992141;
 -0.53723824, -0.74828959, 1.8964931]
EigenMat:
  -1.145   0.7698 -0.04643
   1.306    -1.96   -1.899
 -0.5372  -0.7483    1.896
EigenMat:
       0   0.7698 -0.04643
   1.306    -1.96   -1.899
 -0.5372  -0.7483    1.896
cvMat:
[-1.1450437, 0.76984555, -0.04643121;
 1.3059061, -1.9596839, -1.8992141;
 -0.53723824, -0.74828959, 1.8964931]
--------------------------------------------------
Testing OpenCV to Armadillo (copy 3x3 matrix):
cvMat:
[0.27405041, -1.380205, 1.536549;
 -0.78635716, -2.4748602, -1.5479244;
 -1.3660194, -0.063247398, 1.35166]
ArmaMat:
   0.2741  -1.3802   1.5365
  -0.7864  -2.4749  -1.5479
  -1.3660  -0.0632   1.3517

ArmaMat:
        0  -1.3802   1.5365
  -0.7864  -2.4749  -1.5479
  -1.3660  -0.0632   1.3517

cvMat:
[0.27405041, -1.380205, 1.536549;
 -0.78635716, -2.4748602, -1.5479244;
 -1.3660194, -0.063247398, 1.35166]
--------------------------------------------------
Testing OpenCV to ArrayFire (copy 3x3 matrix):
cvMat:
[-0.20089114, -1.2629067, -1.5210054;
 0.83297932, -0.6334604, 0.29202414;
 -1.6415403, -1.8612988, 0.074599862]
AfMat:
A
[3 3 1 1]
   -0.2009    -1.2629    -1.5210
    0.8330    -0.6335     0.2920
   -1.6415    -1.8613     0.0746

AfMat:
A
[3 3 1 1]
    0.0000    -1.2629    -1.5210
    0.8330    -0.6335     0.2920
   -1.6415    -1.8613     0.0746

cvMat:
[-0.20089114, -1.2629067, -1.5210054;
 0.83297932, -0.6334604, 0.29202414;
 -1.6415403, -1.8612988, 0.074599862]
--------------------------------------------------
Testing OpenCV to LibTorch (copy 3x3 matrix):
cvMat:
[0.048177242, -0.27772549, -0.15443642;
 -0.3687655, 1.0495871, 0.47451678;
 -0.10983074, 1.0279955, -0.74734718]
LibTorch:
 0.0482 -0.2777 -0.1544
-0.3688  1.0496  0.4745
-0.1098  1.0280 -0.7473
[ CPUFloatType{3,3} ]
LibTorch:
 0.0000 -0.2777 -0.1544
-0.3688  1.0496  0.4745
-0.1098  1.0280 -0.7473
[ CPUFloatType{3,3} ]
cvMat:
[0.048177242, -0.27772549, -0.15443642;
 -0.3687655, 1.0495871, 0.47451678;
 -0.10983074, 1.0279955, -0.74734718]
--------------------------------------------------
Testing OpenCV to LibTorch (no-copy 3x3 matrix):
cvMat:
[-0.60865867, -0.21269958, 1.1613728;
 -1.97154, 0.69793731, -0.21648638;
 0.098008506, 0.2626977, -0.83743554]
LibTorch:
-0.6087 -0.2127  1.1614
-1.9715  0.6979 -0.2165
 0.0980  0.2627 -0.8374
[ CPUFloatType{3,3} ]
LibTorch:
 0.0000 -0.2127  1.1614
-1.9715  0.6979 -0.2165
 0.0980  0.2627 -0.8374
[ CPUFloatType{3,3} ]
cvMat:
[0, -0.21269958, 1.1613728;
 -1.97154, 0.69793731, -0.21648638;
 0.098008506, 0.2626977, -0.83743554]
--------------------------------------------------
Testing ArrayFire to Eigen (copy 3x3 matrix):
AfMat:
A
[3 3 1 1]
    0.4792     0.8523     0.9730
    0.6265     0.5827     0.2184
    0.7387     0.3657     0.6659

EigenMat:
0.4792 0.8523  0.973
0.6265 0.5827 0.2184
0.7387 0.3657 0.6659
EigenMat:
     0 0.8523  0.973
0.6265 0.5827 0.2184
0.7387 0.3657 0.6659
AfMat:
A
[3 3 1 1]
    0.4792     0.8523     0.9730
    0.6265     0.5827     0.2184
    0.7387     0.3657     0.6659

--------------------------------------------------
Testing ArrayFire to Armadillo (copy 3x3 matrix):
AfMat:
A
[3 3 1 1]
    0.3688     0.1266     0.4220
    0.2578     0.6511     0.2491
    0.3815     0.4507     0.4128

ArmaMat:
   0.3688   0.1266   0.4220
   0.2578   0.6511   0.2491
   0.3815   0.4507   0.4128

ArmaMat:
        0   0.1266   0.4220
   0.2578   0.6511   0.2491
   0.3815   0.4507   0.4128

AfMat:
A
[3 3 1 1]
    0.3688     0.1266     0.4220
    0.2578     0.6511     0.2491
    0.3815     0.4507     0.4128

--------------------------------------------------
Testing ArrayFire to OpenCV (copy 3x3 matrix):
AfMat:
A
[3 3 1 1]
    0.7664     0.6913     0.1673
    0.8045     0.7821     0.2990
    0.8104     0.3054     0.2802

cvMat:
[0.76638222, 0.69128126, 0.16725606;
 0.80446917, 0.78207785, 0.29895157;
 0.81041062, 0.30535847, 0.28018022]
cvMat:
[0, 0.69128126, 0.16725606;
 0.80446917, 0.78207785, 0.29895157;
 0.81041062, 0.30535847, 0.28018022]
AfMat:
A
[3 3 1 1]
    0.7664     0.6913     0.1673
    0.8045     0.7821     0.2990
    0.8104     0.3054     0.2802

--------------------------------------------------
Testing ArrayFire to LibTorch (copy 3x3 matrix):
AfMat:
A
[3 3 1 1]
    0.1480     0.3014     0.7176
    0.1330     0.6938     0.1181
    0.4696     0.3513     0.8403

LibTorch:
 0.1480  0.3014  0.7176
 0.1330  0.6938  0.1181
 0.4696  0.3513  0.8403
[ CPUFloatType{3,3} ]
LibTorch:
 0.0000  0.3014  0.7176
 0.1330  0.6938  0.1181
 0.4696  0.3513  0.8403
[ CPUFloatType{3,3} ]
AfMat:
A
[3 3 1 1]
    0.1480     0.3014     0.7176
    0.1330     0.6938     0.1181
    0.4696     0.3513     0.8403

--------------------------------------------------
Testing LibTorch to Eigen (copy 3x3 matrix):
LibTorch:
 0.1856  0.8719  0.0410
 0.6352  0.9736  0.4295
 0.5282  0.1334  0.7348
[ CPUFloatType{3,3} ]
EigenMat:
 0.1856  0.8719 0.04104
 0.6352  0.9736  0.4295
 0.5282  0.1334  0.7348
EigenMat:
      0  0.8719 0.04104
 0.6352  0.9736  0.4295
 0.5282  0.1334  0.7348
LibTorch:
 0.1856  0.8719  0.0410
 0.6352  0.9736  0.4295
 0.5282  0.1334  0.7348
[ CPUFloatType{3,3} ]
--------------------------------------------------
Testing LibTorch to Eigen (no-copy 3x3 matrix):
LibTorch:
 0.2439  0.8696  0.4492
 0.5461  0.0236  0.6716
 0.4140  0.4719  0.2793
[ CPUFloatType{3,3} ]
EigenMat:
 0.2439  0.8696  0.4492
 0.5461 0.02365  0.6716
  0.414  0.4719  0.2793
EigenMat:
      0  0.8696  0.4492
 0.5461 0.02365  0.6716
  0.414  0.4719  0.2793
LibTorch:
 0.0000  0.8696  0.4492
 0.5461  0.0236  0.6716
 0.4140  0.4719  0.2793
[ CPUFloatType{3,3} ]
--------------------------------------------------
Testing LibTorch to Armadillo (copy 3x3 matrix):
LibTorch:
 0.3161  0.4803  0.4965
 0.6568  0.0581  0.1410
 0.2431  0.0689  0.1165
[ CPUFloatType{3,3} ]
ArmaMat:
   0.3161   0.4803   0.4965
   0.6568   0.0581   0.1410
   0.2431   0.0689   0.1165

ArmaMat:
        0   0.4803   0.4965
   0.6568   0.0581   0.1410
   0.2431   0.0689   0.1165

LibTorch:
 0.3161  0.4803  0.4965
 0.6568  0.0581  0.1410
 0.2431  0.0689  0.1165
[ CPUFloatType{3,3} ]
--------------------------------------------------
Testing LibTorch to Armadillo (no-copy 3x3 matrix):
LibTorch:
 0.5359  0.8038  0.4289
 0.0483  0.7256  0.1893
 0.5858  0.9245  0.3381
[ CPUFloatType{3,3} ]
ArmaMat:
   0.5359   0.0483   0.5858
   0.8038   0.7256   0.9245
   0.4289   0.1893   0.3381

>>> Note that ArmaMat is transposed <<<
ArmaMat:
        0   0.0483   0.5858
   0.8038   0.7256   0.9245
   0.4289   0.1893   0.3381

LibTorch:
 0.0000  0.8038  0.4289
 0.0483  0.7256  0.1893
 0.5858  0.9245  0.3381
[ CPUFloatType{3,3} ]
--------------------------------------------------
Testing LibTorch to OpenCV (copy 3x3 matrix):
LibTorch:
 0.9345  0.2252  0.8824
 0.1589  0.5000  0.2445
 0.2817  0.9171  0.0985
[ CPUFloatType{3,3} ]
cvMat:
[0.93447006, 0.22521371, 0.88243121;
 0.15889102, 0.49998826, 0.24453849;
 0.28167206, 0.91707569, 0.098504484]
cvMat:
[0, 0.22521371, 0.88243121;
 0.15889102, 0.49998826, 0.24453849;
 0.28167206, 0.91707569, 0.098504484]
LibTorch:
 0.9345  0.2252  0.8824
 0.1589  0.5000  0.2445
 0.2817  0.9171  0.0985
[ CPUFloatType{3,3} ]
--------------------------------------------------
Testing LibTorch to OpenCV (no-copy 3x3 matrix):
LibTorch:
 0.8951  0.6749  0.5910
 0.4645  0.5869  0.8185
 0.3054  0.2436  0.1431
[ CPUFloatType{3,3} ]
cvMat:
[0.89513969, 0.67485064, 0.59103107;
 0.46452171, 0.58691603, 0.81848794;
 0.30539364, 0.24357843, 0.14314771]
cvMat:
[0, 0.67485064, 0.59103107;
 0.46452171, 0.58691603, 0.81848794;
 0.30539364, 0.24357843, 0.14314771]
LibTorch:
 0.0000  0.6749  0.5910
 0.4645  0.5869  0.8185
 0.3054  0.2436  0.1431
[ CPUFloatType{3,3} ]
--------------------------------------------------
Testing LibTorch to ArrayFire (copy 3x3 matrix):
LibTorch:
 0.3460  0.3067  0.5854
 0.4485  0.6905  0.1162
 0.0131  0.4890  0.0255
[ CPUFloatType{3,3} ]
AfMat:
A
[3 3 1 1]
    0.3460     0.3067     0.5854
    0.4485     0.6905     0.1162
    0.0131     0.4890     0.0255

AfMat:
A
[3 3 1 1]
    0.0000     0.3067     0.5854
    0.4485     0.6905     0.1162
    0.0131     0.4890     0.0255

LibTorch:
 0.3460  0.3067  0.5854
 0.4485  0.6905  0.1162
 0.0131  0.4890  0.0255
[ CPUFloatType{3,3} ]

from dtt.

Related Issues (3)

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.