部分算法与对应代码整理(R、Python)

53 篇文章 28 订阅


1. 图像、人脸、OCR、语音相关算法整理

概述-图像语音机器学习(Outline-Image & Audio & Machine Learning)

  • 图像:

    1. 变换(Transform),分为旋转、放缩、平移、仿射、投影
    

    Rotation和Scale可以看做是一个SVD分解,对于二维图像,对应2x2矩阵。
    Translate为了支持矩阵相加,需要扩充一列,所以前三者结合变成一个2x3或3x3矩阵。
    Affine加上了翻转和斜切,保持点的共线性和直线的平行性,共有6个自由度dof。
    Projection变换不是线性的,共有8个自由度。
    可参考Transformations
    通过对变换做处理,可用于变形OCR的纠正,比如TPS算法

    2. 卷积(convolution),分为一阶、二阶
    

    一阶算子有Roberts、Sobel、Prewitt,由于只求了一阶导数,所以一次只能检测一个方向的边缘。
    二阶算子有Laplace、LoG、DoG,是角点检测的第一步,不抗噪。
    卷积其实就是信号处理里面的求积再求和运算,在CNN中,卷积核是需要训练的参数,但由于大多数是共享的,参数量并不大,一般不需要Dropout。由于训练出的卷积核大多并不对称,所以并没有旋转不变性(rotation invariant),对于放缩和平移不变性也只能由pooling层起很小的作用。最初的方法是通过Data Argument,在NIPS2015上,spatial transformer networks提出了一种自动学习变换矩阵的BP网络,对于数据增强的依赖大大降低。

    3. 大津阈值二值化,分水岭分割
    离散傅里叶变换DFT,离散余弦变换DCT,小波变换Wavelet
    图像的一阶二阶矩,形状描述
    颜色空间(RGB, YUV, HSV)
    以上用于视频编码和图像分析的多
    
    4. 图像融合
    

    图像融合可用在深度学习后处理,比如分割后的物体融合到另一个背景,人像换脸等。常用的有poisson Image Editing

  • 语音:

    1. wav和mfcc
    

    由于语音是含有时域信息的,在进行实时频域转换的时候会采用加窗的短时STFT变换,根据不同的窗函数,会生成不同频段的频谱值。mfcc是基于梅尔频率的倒谱,是非线性的对数倒频谱。在进行ASR、SV时,一般都会先将wav文件转成mfcc进行处理,当然也不排除直接用wav的,比如wavenet, sincnet等。采用mfcc的好处是既含有时域信息也含有频域信息,由小窗函数将数据压缩成二维可采用普通CNN网络对其进行处理。

    2. 听歌识曲,哼唱识别
    

    曾经研究过的传统方法,基于mfcc和倒排索引。

    1. A Highly Robust Audio Fingerprinting System
    2. ROBUST AUDIO FINGERPRINT EXTRACTION ALGORITHM
    3. An Industrial-Strength Audio Search Algorithm
      深度学习的检索
      A Tutorial on Deep Learning for Music Information Retrieval
  • 统计学习:

    1. SVM支持向量机
    

    这个是老外写的一本《支持向量机导论》,网上中文英文都有。
    an introduction to support vector machines and other kernel-based learning methods
    包含从核函数到VC维最大泛化间隔,到KKT不等式约束的拉格朗日对偶问题,再到SMO算法求解拉格朗日乘子,算是很完整的一个教材了。

    2. Adaboost
    

    从弱学习机到强学习机,是一种迭代算法,只要分类器比随机分类器好一点,它就能逐渐迭代出一个强分类器。优点是不容易过拟合,缺点对噪声敏感。

    1. A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting
    2. Multi-class AdaBoost
    3. Decision tree决策树
    

    主要用在数据挖掘,最优树的生成常用有ID3/4/5,CART等算法,缺点是不稳定,特别是样本数量不一致的情况。

    4. 贝叶斯网络、随机森林
    
    5. EM/GMM模型
    

    含有隐变量的聚类模型。隐变量/隐分布就是每个概率分布的权重以及每个样本属于每个分布的概率。
    EM算法分为2步,E-Step是固定已知变量利用Jensen不等式求对数似然函数的极值,更新隐变量,M-Step是在固定隐变量求整个似然函数的极值,更新已知变量
    GMM模型是先假定分布是高斯分布,已知变量即均值和方差,隐变量即高斯分布的权重。
    EM算法对初始值敏感,无法保证全局最优。用途很多,比如聚类、声纹模型UBM。
    神经网络求解EM算法:

    1. Neural Expectation Maximization
      https://github.com/sjoerdvansteenkiste/Neural-EM
    6. 无监督聚类Kmeans、Meanshift,基于图模型的Spectral Clustering
    
    7. 不用指定聚类个数的模型DBSCAN、Chinese Whisper
    
  • 深度学习:
    深度学习即完全基于神经网络的模型,包括CNN空域、RNN时域等模型,重点在于网络设计、损失函数设计,以及优化器这3方面。
    网络设计代表性的有CNN、空洞卷积、通道可分离卷积、DropOut、RNN/LSTM/GRU、Attention/Self-Attention/Transformer、Resnet、Inception系列、Squeezenet/Mobilenet/Shufflenet等
    损失函数代表性的有Triplet loss、Center loss、SphereFace、ArcFace、AMSoftmax等
    优化器主要有SGD、Moment、Adagrad、Adadelta、Adam、RMSprop、Adabound、Admm等,还有其他加快收敛防止过拟合的方法如Batchnorm,正则化等。

  1. 通用物体检测和识别(General Object Detection/Recognition)
  • 传统方法:
      1. 基于Bag Of Words词袋模型的,SIFT/SURF+KMeans+SVM
      2. 基于Sparse Coding稀疏编码的,LLC
      3. 基于聚合特征的,Fisher Vector/VLAD
      4. 基于变形部件组合模型的,DPM用到HOG/Latent SVM
      5. 有关角点的检测和描述,近几年有基于深度学习的方法,如LIFT、DELP、LFNET,缺点是速度慢
    
  • 相关论文:
      1. Visual Object Recognition, Kristen Grauman
      2. Locality-constrained Linear Coding for Image Classification 
      3. Fisher Kernels on Visual Vocabularies for Image Categorization
      4. Improving the Fisher Kernel for Large-Scale Image Classification 
      5. Aggregating local descriptors into a compact image representation
      6. Object Detection with Discriminatively Trained Part Based Models
      7. LIFT: Learned Invariant Feature Transform
      8. Large-Scale Image Retrieval with Attentive Deep Local Feature
      9. LF-Net: Learning Local Features from Images
    
  • 相关开源地址:
    • http://www.vlfeat.org
    • https://github.com/rbgirshick/voc-dpm
    • https://github.com/cbod/cs766-llc
    • https://github.com/nashory/DeLF-pytorch
    • https://github.com/vcg-uvic/lf-net-release
  • 深度学习:
    RCNN/SPPNet/Faster RCNN,Yolo系列,SSD,R-FCN,RetinaNet,CFENet
    
  • 相关论文:
    1. Rich feature hierarchies for accurate object detection and semantic segmentation
    2. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
    3. Fast R-CNN
    4. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    5. You Only Look Once: Unified, Real-Time Object Detection
    6. YOLO9000: Better, Faster, Stronger
    7. YOLOv3: An Incremental Improvemen
    8. SSD: Single Shot MultiBox Detector
    9. R-FCN: Object Detection via Region-based Fully Convolutional Networks
    10. Focal Loss for Dense Object Detection
    11. CFENet: An Accurate and Efficient Single-Shot Object Detector for Autonomous Driving
    
  • 相关开源地址:
    • https://github.com/rbgirshick/rcnn
    • https://github.com/rbgirshick/fast-rcnn
    • https://github.com/rbgirshick/py-faster-rcnn
    • https://github.com/balancap/SSD-Tensorflow
    • https://github.com/chuanqi305/MobileNet-SSD
    • https://github.com/gliese581gg/YOLO_tensorflow
    • https://github.com/choasup/caffe-yolo9000
    • https://github.com/qqwweee/keras-yolo3
    • https://github.com/daijifeng001/R-FCN
    • https://github.com/YuwenXiong/py-R-FCN
    • https://github.com/daijifeng001/caffe-rfcn
    • https://github.com/facebookresearch/Detectron


2. 特定物体检测和识别和检索(Specific Object Detection/CBIR)

  • 特定物体只识别一张特定的图,不能进行大样本训练,也即不需要进行训练和学习。大多数只是用Artificial Feature手工特征,比如特征点,而且对于刚性物体,特征点匹配可以用SVD分解和RANSAC计算出仿射变换矩阵,进而判断物体边缘的方向。也有基于神经网络的,如R-MAC,NetVlad,但用的都是backpone预训练模型。
  • 特征点匹配,基于欧氏距离的,如SIFT/SURF,基于海明距离的,如AKAZE/FREAK,欧氏距离的检索可以用KD-Tree或者其他算法如hnsw、Falconn,海明距离的检索用LSH。
  • 基于Fisher Vector/VLAD,采用随机超平面的方式切换成海明距离进行检索
  • 检索,基于欧式距离的检索有hnsw、Falconn、Faiss等开源库。
  • 相关论文:

    1. Aggregating Deep Convolutional Features for Image Retrieval
    2. PARTICULAR OBJECT RETRIEVAL WITH INTEGRAL MAX-POOLING OF CNN ACTIVATIONS
    3. Deep Learning of Binary Hash Codes for Fast Image Retrieval
    4. Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks
    5. Bags of Local Convolutional Features for Scalable Instance Search
    6. Deep Image Retrieval: Learning global representations for image search
    7. Region-Based Image Retrieval Revisited
    
  • 相关开源地址:

    • https://github.com/Relja/netvlad
    • https://github.com/uzh-rpg/netvlad_tf_open
    • https://github.com/nmslib/hnswlib
    • https://github.com/facebookresearch/faiss
    • https://github.com/FALCONN-LIB/FALCONN
    • https://github.com/imatge-upc/retrieval-2016-icmr


3. 物体跟踪(Object Tracking)

  • 光流法
  • 卡尔曼滤波器
  • 均值漂移
    物体跟踪在OpenCV里面都有实现,大多都是针对刚性物体,对于人脸这种物体不适合。
    深度学习的方法:
  • CFNet
  • 相关论文:
    End-to-end representation learning for Correlation Filter based tracking
    
  • 相关开源地址:
    • https://github.com/bertinetto/cfnet


4. 物体分割(Object Segmentation)

  • 目前主流的都是基于神经网络的。
  • FCN、SegNet、PSPNet、MaskRCNN 、DeepLab系列、RefineNet、DeeperLab
  • 相关论文:

    1. Fully Convolutional Networks for Semantic Segmentation
    2. SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
    3. Pyramid Scene Parsing Network
    4. Mask R-CNN
    5. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
    6. Rethinking Atrous Convolution for Semantic Image Segmentation
    7. Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
    8. RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation
    9. DeeperLab: Single-Shot Image Parser
    10. MobileNetV2: Inverted Residuals and Linear Bottlenecks
    
  • 相关开源地址:

    • https://github.com/shekkizh/FCN.tensorflow
    • https://github.com/alexgkendall/caffe-segnet
    • https://github.com/hszhao/PSPNet
    • https://github.com/Vladkryvoruchko/PSPNet-Keras-tensorflow
    • https://github.com/matterport/Mask_RCNN
    • https://github.com/sthalles/deeplab_v3
    • https://github.com/DrSleep/tensorflow-deeplab-resnet
    • https://github.com/guosheng/refinenet
    • https://github.com/DrSleep/light-weight-refinenet


5. 人脸检测(Face Detection)

  • 传统方法:特征提取+分类器的方式
    特征主要有HOG、HAAR等,分类器有Adaboost、SVM、Cascade等。
    常用的开源库有:OpenCV、Dlib等。
    
  • 深度学习:
    MTCNN、PyramidBox、HR、Face R-CNN、SSH、RSA、S3FD、FaceBoxes
    
  • 相关论文:
    1. Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
    2. PyramidBox: A Context-assisted Single Shot Face Detector.
    3. Finding Tiny Faces
    4. Face R-CNN
    5. SSH: Single Stage Headless Face Detector
    6. Recurrent Scale Approximation for Object Detection in CNN
    7. S 3FD: Single Shot Scale-invariant Face Detector
    8. FaceBoxes: A CPU Real-time Face Detector with High Accuracy
    
  • 相关开源地址:
    • https://github.com/kpzhang93/MTCNN_face_detection_alignment
    • https://github.com/EricZgw/PyramidBox
    • https://github.com/cydonia999/Tiny_Faces_in_Tensorflow
    • https://github.com/mahyarnajibi/SSH
    • https://github.com/sciencefans/RSA-for-object-detection
    • https://github.com/louis-she/sfd.pytorch
    • https://github.com/sfzhang15/FaceBoxes


6. 人脸关键点对齐(Face Alignment)

  • 一些人脸检测算法中会集成有人脸关键点对齐,在训练时2个任务的误差函数加权相加。对齐有2D和3D的区别,2D只考虑二维信息,3D需要有3维模型,能预测人脸的姿态信息。
  • 2D关键点对齐:DCNN、MTCNN、TCDCN、LAB
  • 3D关键点对齐:3DDFA、DenseReg、FAN、PRNet、PIPA
  • 相关论文:
    1. Facial Landmark Detection by Deep Multi-task Learning
    2. Deep Convolutional Network Cascade for Facial Point Detection
    3. Look at Boundary: A Boundary-Aware Face Alignment Algorithm
    4. Face Alignment Across Large Poses: A 3D Solution
    5. Pose-Invariant Face Alignment via CNN-Based Dense 3D Model Fitting
    6. Dense Face Alignment
    7. DenseReg: Fully Convolutional Dense Shape Regression In-the-Wild
    8. How far are we from solving the 2D & 3D Face Alignment problem
    9. Learning Dense Facial Correspondences in Unconstrained Images
    10. Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network
    11. Dense Face Alignment
    
  • 相关开源地址:
    • https://github.com/zhzhanp/TCDCN-face-alignment
    • https://github.com/wywu/LAB
    • https://github.com/cleardusk/3DDFA
    • https://github.com/ralpguler/DenseReg
    • https://github.com/YadiraF/PRNet
    • http://cvlab.cse.msu.edu/project-pifa.html


7. 人脸识别(Face Recognition)

  • 非神经网络:GaussianFace高斯脸
  • 深度学习:大多数和损失函数设计有关
  • DeepFace、DeepID系列、VGGFace、FaceNet、CenterLoss、MarginalLoss、SphereFace、ArcFace、AMSoftmax
  • 相关论文:
    1. Surpassing Human-Level Face Verification Performance on LFW with GaussianFace
    2. DeepFace: Closing the Gap to Human-Level Performance in Face Verification
    3. Deep Learning Face Representation from Predicting 10,000 Classes
    4. Deep Learning Face Representation by Joint Identification-Verification
    5. DeepID3: Face Recognition with Very Deep Neural Networks
    6. Deep Face Recognition
    7. FaceNet: A Unified Embedding for Face Recognition and Clustering
    8. A Discriminative Feature Learning Approach for Deep Face Recognition
    9. Marginal Loss for Deep Face Recognition
    10. SphereFace: Deep Hypersphere Embedding for Face Recognition
    11. ArcFace: Additive Angular Margin Loss for Deep Face Recognition
    12. Additive Margin Softmax for Face Verification
    
  • 相关开源地址:
    • https://github.com/jangerritharms/GaussianFace
    • http://www.robots.ox.ac.uk/~vgg/software/vgg_face/
    • https://github.com/davidsandberg/facenet
    • https://github.com/wy1iu/sphereface
    • https://github.com/xialuxi/arcface-caffe
    • https://github.com/deepinsight/insightface


8. 人像重建(Face Reconstruct)

  • 基本上都是基于3D的,人像重建后可以进行姿态估计,以及换脸。有的换脸算法需要多张人脸训练GAN网络。
  • PRNet、VRN、Face2Face
  • 相关论文:
    1. State of the Art on Monocular 3D Face Reconstruction, Tracking, and Applications
    2. 3D Face Reconstruction with Geometry Details from a Single Image
    3. Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network
    4. CNN-based Real-time Dense Face Reconstruction with Inverse-rendered Photo-realistic Face Images
    5. Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression
    6. Deep Video Portraits
    7. VDub: Modifying Face Video of Actors for Plausible Visual Alignment to a Dubbed Audio Track
    8. paGAN: Real-time Avatars Using Dynamic Textures
    9. On Face Segmentation, Face Swapping, and Face Perception
    10. Extreme 3D Face Reconstruction: Looking Past Occlusions
    
  • 相关开源地址:
    • https://github.com/YadiraF/PRNet
    • https://github.com/AaronJackson/vrn
    • https://github.com/deepfakes/faceswap
    • https://github.com/datitran/face2face-demo
    • https://github.com/YuvalNirkin/face_swap
    • https://github.com/anhttran/extreme_3d_faces


9. OCR字符识别(Wild Scene & Hand Written)

  • OCR涉及到字符场景定位和分割,以及字符识别。传统的方法是采用垂直方向直方图形式对字符进行分割,然后一个个字符分别送入分类器进行识别。由于CNN/RNN/CTC动态规划算法及Attention机制的出现,当今的主流模型是CNN+RNN+CTC,采用和语音识别类似的自动语素分割的方式。检测框一般是水平的,如果要纠正还需要用Hough变换把文本方向纠正。近几年又出现了很多支持不同形状的文本区域检测方法,一种是基于分割的,如PixelLink、TextSnake,一种是基于回归的,如TextBoxes、DMPNet、RSDD,还有结合2者的,如SSTD。还有检测和识别端到端的,如FOTS、EAA、Mask TextSpotter、STN-OCR。

  • 字符区域检测:
    CTPN、EAST、TextBoxes++、AdvancedEast、TextSnake、Mask TextSpotter、DMPNet、RSDD、LOMO、PSENet、Pixel-Anchor

  • 相关论文:

    1. Detecting Text in Natural Image with Connectionist Text Proposal Network
    2. Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes
    3. Single Shot Scene Text Retrieval
    4. EAST: An Efficient and Accurate Scene Text Detector
    5. DeepTextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework
    6. Recursive Recurrent Nets with Attention Modeling for OCR in the Wild
    7. Multi-Oriented Text Detection with Fully Convolutional Networks
    8. Accurate Text Localization in Natural Image with Cascaded Convolutional Text Network
    9. TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes
    10. An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes
    11. Rotation-Sensitive Regression for Oriented Scene Text Detection
    12. Character Region Awareness for Text Detection
    13. Look More Than Once: An Accurate Detector for Text of Arbitrary Shapes
    14. Shape Robust Text Detection with Progressive Scale Expansion Network
    15. Pixel-Anchor: A Fast Oriented Scene Text Detector with Combined Networks
    16. 总结Overview:https://github.com/whitelok/image-text-localization-recognition
    17. 挑战赛:http://rrc.cvc.uab.es
    18. An end-to-end textspotter with explicit alignment and attention
    19. STN-OCR: A single Neural Network for Text Detection and Text Recognition
    
  • 字符识别:
    针对wild形变场景,检测到的框有粗糙的矩形,也有精确的多边形,在识别之前一般要进行纠正。关于纠正其实大体分为2个方向,一个是基于character划分的,如TextSnake、Char-Net,还有一种是通过TPS+STN网络自动去训练多点纠正的参数,这在很多Paper里面都有介绍。
    CRNN、GRCNN、CRAFT、ASTER、MORAN、ESIR、FAN,支持垂直方向文本识别的AON

  • 相关论文:

    1. Gated Recurrent Convolution Neural Network for OCR
    2. An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
    3. What is wrong with scene text recognition model comparisons? dataset and model analysis
    4. ASTER: An Attentional Scene Text Recognizer with Flexible Rectification
    5. Char-Net: A Character-Aware Neural Network for Distorted Scene Text Recognition
    6. MORAN: A Multi-Object Rectified Attention Network for Scene Text Recognition
    7. SEE: Towards Semi-Supervised End-to-End Scene Text Recognition
    8. ESIR: End-to-end Scene Text Recognition via Iterative Image Rectification
    9. AON: Towards Arbitrarily-Oriented Text Recognition
    10. Simultaneous Recognition of Horizontal and Vertical Text in Natural Images
    11. Focusing Attention: Towards Accurate Text Recognition in Natural Images
    
  • 相关开源地址:

    • https://github.com/eragonruan/text-detection-ctpn
    • https://github.com/MhLiao/TextBoxes_plusplus
    • https://github.com/lluisgomez/single-shot-str
    • https://github.com/huoyijie/AdvancedEAST
    • https://github.com/MichalBusta/DeepTextSpotter
    • https://github.com/Jianfeng1991/GRCNN-for-OCR
    • https://github.com/princewang1994/TextSnake.pytorch
    • https://github.com/clovaai/deep-text-recognition-benchmark
    • https://github.com/bgshih/aster
    • https://github.com/liuheng92/tensorflow_PSENet
    • https://github.com/whai362/PSENet
    • https://github.com/Canjie-Luo/MORAN_v2
    • https://github.com/Bartzi/see
    • https://github.com/huizhang0110/AON
    • https://github.com/Bartzi/stn-ocr
  • 手写字体识别:
    hand written由于各种书法风格,难度远高于印刷字体。NIPS上发表的几篇基于2维LSTM-RNN的方法,后面又有提速版的attention机制,这种方法支持一段手写文本的自动分行及对齐。后面ECCV又出现了一篇分多步的方法。

  • 相关论文:

    1. Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks
    2. Scan, Attend and Read: End-to-End Handwritten Paragraph Recognition with MDLSTM Attention
    3. Joint Line Segmentation and Transcription for End-to-End Handwritten Paragraph Recognition
    4. Start, Follow, Read: End-to-End Full-Page Handwriting Recognition
    5. Handwriting Recognition with Large Multidimensional Long Short-Term Memory Recurrent Neural Networks
    6. Handwriting Recognition of Historical Documents with few labeled data
    7. Measuring Human Perception to Improve Handwritten Document Transcription
    8. Learning Spatial-Semantic Context with Fully Convolutional Recurrent Network for Online Handwritten Chinese Text Recognition
    9. Gated Convolutional Recurrent Neural Networks for Multilingual Handwriting Recognition
    10. Joint Recognition of Handwritten Text and Named Entities with a Neural End-to-end Model
    
  • 相关开源地址:

    • https://github.com/cwig/start_follow_read
    • https://github.com/0x454447415244/HandwritingRecognitionSystem
    • http://www.tbluche.com/scan_attend_read.html


10. 语音识别(Automatic Speech Recognition/Speech to Text)

  • 传统方式基于GMM-HMM模型和Vertibi算法
  • 深度学习:对WAV进行MFCC短时频谱信号提取,依次采用CNN卷积网络和LSTM循环网络以及CTC Loss误差函数进行建模。
    GRU-CTC、DFCNN、DFSMN、DeepSpeech、CLDNN
  • 相关论文
    1. DEEP-FSMN FOR LARGE VOCABULARY CONTINUOUS SPEECH RECOGNITION
    2. Deep Speech: Scaling up end-to-end speech recognition
    3. CONVOLUTIONAL, LONG SHORT-TERM MEMORY, FULLY CONNECTED DEEP NEURAL NETWORKS
    
  • 相关开源地址:
    • https://github.com/buriburisuri/speech-to-text-wavenet
    • https://github.com/Kyubyong/tacotron
    • https://github.com/PaddlePaddle/DeepSpeech


11. 说话人识别(Speaker Recognition/Identification/Verification)

  • 声纹识别的主要问题在于语音时长、文本无关、开集比对、背景噪声等问题上。目前基于d-vector、x-vector的深度学习模型和TE2E/GE2E等的损失函数设计在短时长上比较占优势。传统方法的state-of-the-art是i-vector,采用pLDA信道补偿算法,所有基于深度学习的模型都会引用ivector的ERR作为baseline进行比对。以前的方法有UBM-GMM和JFA信道补偿,但是需要大量的不同信道的语料样本。传统方法的相关开源框架有Kaldi、ALIZE、SIDEKIT、pyannote-audio等。深度学习的方法有d-vector、x-vector、j-vector(文本有关)以及结合E2E损失函数的模型。还有基于GhostVlad和直接基于wave信号的SINCNET。
  • 相关开源地址:
    • http://www-lium.univ-lemans.fr/sidekit/
    • https://alize.univ-avignon.fr/
    • http://www.kaldi-asr.org/
    • https://github.com/rajathkmp/speaker-verification
    • https://github.com/wangleiai/dVectorSpeakerRecognition
    • https://github.com/Janghyun1230/Speaker_Verification
    • https://github.com/pyannote/pyannote-audio
    • https://github.com/WeidiXie/VGG-Speaker-Recognition
    • https://github.com/mravanelli/SincNet


12. 说话人语音分割(Speaker Diarization)

  • 语音智能分割是基于说话人识别的,说话人识别效果的好坏决定语音分割的效果,当然还有切换点的识别效果也很重要。首先需要用VAD静音检测对语音进行分割,最简单的是用振幅来判断,如果有背景音则需要设计其他的VAD算法。切换点的判断可以通过BIC贝叶斯准则,最后就是聚类,判断哪些片段属于一个说话人,对于无监督学习算法,先验信息说话人数量显得尤为重要。目前基于深度学习的框架也有不少,比如最近Google出的UIS-RNN(其实是另类的聚类方法),还有法国LIUM团队的S4D。
  • 相关论文:
    1. FULLY SUPERVISED SPEAKER DIARIZATION
    2. SPAKER DIARIZATION WITH LSTM
    3. S4D: Speaker Diarization Toolkit in Python
    
  • 相关开源地址:
    • https://github.com/google/uis-rnn
    • https://github.com/wq2012/SpectralCluster
    • https://projets-lium.univ-lemans.fr/s4d


13. 语音合成(Text To Speech)

  • 文本转语音,传统方法是采用语素拼接,这种方式合成的语音比较生硬,没有语调。当前Baidu、Google、FaceBook等出了很多基于深度学习的方法。一般的流程是先Encoder再Decoder,最后用Griffin-Lim算法或者WaveNet自回归模型将MFCC变成wave信号。
    WaveNet系列(MFCC–>WAVE)、DeepVoice系列、Tacotron系列、VoiceLoop、ClariNet
  • 相关论文:
    1. VOICELOOP: VOICE FITTING AND SYNTHESIS VIA A PHONOLOGICAL LOOP
    2. TACOTRON: TOWARDS END-TO-END SPEECH SYNTHESIS
    3. NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM PREDICTIONS
    4. Deep Voice: Real-time Neural Text-to-Speech
    5. Deep Voice 2: Multi-Speaker Neural Text-to-Speech
    6. DEEP VOICE 3: 2000-SPEAKER NEURAL TEXT-TO-SPEECH
    7. WAVENET: A GENERATIVE MODEL FOR RAW AUDIO
    8. Parallel WaveNet: Fast High-Fidelity Speech Synthesis
    9. ClariNet: Parallel Wave Generation in End-to-End Text-to-Speech
    10. SAMPLE EFFICIENT ADAPTIVE TEXT-TO-SPEECH
    11. FastSpeech: Fast, Robust and Controllable Text to Speech
    
  • 相关开源地址:
    • https://github.com/ibab/tensorflow-wavenet
    • https://github.com/keithito/tacotron
    • https://github.com/Kyubyong/tacotron
    • https://github.com/c1niv/Voiceloop_TensorFlow
    • https://github.com/israelg99/deepvoice
    • https://github.com/andabi/parallel-wavenet-vocoder
    • https://github.com/xcmyz/FastSpeech


14. 声纹转换(Voice Conversion)

  • 声纹转换其实就是TTS的多人版,根据说话人的不同将文本生成不同的wave信号。大多数都是在网络架构中加入说话人Embedding向量,如DeepVoice2/DeepVoice3,Tacotron2,有的甚至会在声码器Vocoder中加入,比如WaveNet。
  • 相关开源地址:
    • https://github.com/r9y9/deepvoice3_pytorch
    • https://github.com/Kyubyong/deepvoice3
    • https://github.com/Rayhane-mamah/Tacotron-2
    • https://github.com/GSByeon/multi-speaker-tacotron-tensorflow


14. 人脸生物特征(Age Gender Estimate)

  • 经典的DEX模型,SSR-NET精简模型
  • 相关论文:
    1. DEX: Deep EXpectation of apparent age from a single image
    2. Age Progression/Regression by Conditional Adversarial Autoencode
    3. SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation
    4. Deep Regression Forests for Age Estimation
    
  • 相关开源地址:
    • https://github.com/truongnmt/multi-task-learning
    • https://github.com/ZZUTK/Face-Aging-CAAE
    • https://github.com/yu4u/age-gender-estimation
    • https://github.com/shamangary/SSR-Net
    • https://github.com/shenwei1231/caffe-DeepRegressionForests

2. 机器学习与深度学习相关的R与Python库

(1)R

General-Purpose Machine Learning
  • ahaz - ahaz: Regularization for semiparametric additive hazards regression.
  • arules - arules: Mining Association Rules and Frequent Itemsets
  • biglasso - biglasso: Extending Lasso Model Fitting to Big Data in R.
  • bmrm - bmrm: Bundle Methods for Regularized Risk Minimization Package.
  • Boruta - Boruta: A wrapper algorithm for all-relevant feature selection.
  • bst - bst: Gradient Boosting.
  • C50 - C50: C5.0 Decision Trees and Rule-Based Models.
  • caret - Classification and Regression Training: Unified interface to ~150 ML algorithms in R.
  • caretEnsemble - caretEnsemble: Framework for fitting multiple caret models as well as creating ensembles of such models.
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box for R.
  • Clever Algorithms For Machine Learning
  • CORElearn - CORElearn: Classification, regression, feature evaluation and ordinal evaluation.
  • CoxBoost - CoxBoost: Cox models by likelihood based boosting for a single survival endpoint or competing risks
  • Cubist - Cubist: Rule- and Instance-Based Regression Modeling.
  • e1071 - e1071: Misc Functions of the Department of Statistics (e1071), TU Wien
  • earth - earth: Multivariate Adaptive Regression Spline Models
  • elasticnet - elasticnet: Elastic-Net for Sparse Estimation and Sparse PCA.
  • ElemStatLearn - ElemStatLearn: Data sets, functions and examples from the book: “The Elements of Statistical Learning, Data Mining, Inference, and Prediction” by Trevor Hastie, Robert Tibshirani and Jerome Friedman Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman.
  • evtree - evtree: Evolutionary Learning of Globally Optimal Trees.
  • forecast - forecast: Timeseries forecasting using ARIMA, ETS, STLM, TBATS, and neural network models.
  • forecastHybrid - forecastHybrid: Automatic ensemble and cross validation of ARIMA, ETS, STLM, TBATS, and neural network models from the “forecast” package.
  • fpc - fpc: Flexible procedures for clustering.
  • frbs - frbs: Fuzzy Rule-based Systems for Classification and Regression Tasks.
  • GAMBoost - GAMBoost: Generalized linear and additive models by likelihood based boosting.
  • gamboostLSS - gamboostLSS: Boosting Methods for GAMLSS.
  • gbm - gbm: Generalized Boosted Regression Models.
  • glmnet - glmnet: Lasso and elastic-net regularized generalized linear models.
  • glmpath - glmpath: L1 Regularization Path for Generalized Linear Models and Cox Proportional Hazards Model.
  • GMMBoost - GMMBoost: Likelihood-based Boosting for Generalized mixed models.
  • grplasso - grplasso: Fitting user specified models with Group Lasso penalty.
  • grpreg - grpreg: Regularization paths for regression models with grouped covariates.
  • h2o - A framework for fast, parallel, and distributed machine learning algorithms at scale – Deeplearning, Random forests, GBM, KMeans, PCA, GLM.
  • hda - hda: Heteroscedastic Discriminant Analysis.
  • Introduction to Statistical Learning
  • ipred - ipred: Improved Predictors.
  • kernlab - kernlab: Kernel-based Machine Learning Lab.
  • klaR - klaR: Classification and visualization.
  • L0Learn - L0Learn: Fast algorithms for best subset selection.
  • lars - lars: Least Angle Regression, Lasso and Forward Stagewise.
  • lasso2 - lasso2: L1 constrained estimation aka ‘lasso’.
  • LiblineaR - LiblineaR: Linear Predictive Models Based On The Liblinear C/C++ Library.
  • LogicReg - LogicReg: Logic Regression.
  • Machine Learning For Hackers
  • maptree - maptree: Mapping, pruning, and graphing tree models.
  • mboost - mboost: Model-Based Boosting.
  • medley - medley: Blending regression models, using a greedy stepwise approach.
  • mlr - mlr: Machine Learning in R.
  • ncvreg - ncvreg: Regularization paths for SCAD- and MCP-penalized regression models.
  • nnet - nnet: Feed-forward Neural Networks and Multinomial Log-Linear Models.
  • pamr - pamr: Pam: prediction analysis for microarrays.
  • party - party: A Laboratory for Recursive Partytioning.
  • partykit - partykit: A Toolkit for Recursive Partytioning.
  • penalized - penalized: L1 (lasso and fused lasso) and L2 (ridge) penalized estimation in GLMs and in the Cox model.
  • penalizedLDA - penalizedLDA: Penalized classification using Fisher’s linear discriminant.
  • penalizedSVM - penalizedSVM: Feature Selection SVM using penalty functions.
  • quantregForest - quantregForest: Quantile Regression Forests.
  • randomForest - randomForest: Breiman and Cutler’s random forests for classification and regression.
  • randomForestSRC - randomForestSRC: Random Forests for Survival, Regression and Classification (RF-SRC).
  • rattle - rattle: Graphical user interface for data mining in R.
  • rda - rda: Shrunken Centroids Regularized Discriminant Analysis.
  • rdetools - rdetools: Relevant Dimension Estimation (RDE) in Feature Spaces.
  • REEMtree - REEMtree: Regression Trees with Random Effects for Longitudinal (Panel) Data.
  • relaxo - relaxo: Relaxed Lasso.
  • rgenoud - rgenoud: R version of GENetic Optimization Using Derivatives
  • Rmalschains - Rmalschains: Continuous Optimization using Memetic Algorithms with Local Search Chains (MA-LS-Chains) in R.
  • rminer - rminer: Simpler use of data mining methods (e.g. NN and SVM) in classification and regression.
  • ROCR - ROCR: Visualizing the performance of scoring classifiers. project.org/web/packages/RoughSets/index.html) - RoughSets: Data Analysis Using Rough Set and Fuzzy Rough Set Theories.
  • rpart - rpart: Recursive Partitioning and Regression Trees.
  • RPMM - RPMM: Recursively Partitioned Mixture Model.
  • RSNNS - RSNNS: Neural Networks in R using the Stuttgart Neural Network Simulator (SNNS).
  • RWeka - RWeka: R/Weka interface.
  • RXshrink - RXshrink: Maximum Likelihood Shrinkage via Generalized Ridge or Least Angle Regression.
  • sda - sda: Shrinkage Discriminant Analysis and CAT Score Variable Selection.
  • spectralGraphTopology - spectralGraphTopology: Learning Graphs from Data via Spectral Constraints.
  • SuperLearner - Multi-algorithm ensemble learning packages.
  • svmpath - svmpath: svmpath: the SVM Path algorithm.
  • tgp - tgp: Bayesian treed Gaussian process models.
  • tree - tree: Classification and regression trees.
  • varSelRF - varSelRF: Variable selection using random forests.
  • XGBoost.R - R binding for eXtreme Gradient Boosting (Tree) Library.
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search. Optunity is written in Python but interfaces seamlessly to R.
  • igraph - binding to igraph library - General purpose graph library.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • TDSP-Utilities - Two data science utilities in R from Microsoft: 1) Interactive Data Exploration, Analysis, and Reporting (IDEAR) ; 2) Automated Modeling and Reporting (AMR).

Data Manipulation | Data Analysis | Data Visualization
  • dplyr - A data manipulation package that helps to solve the most common data manipulation problems.
  • ggplot2 - A data visualization package based on the grammar of graphics.
  • tmap for visualizing geospatial data with static maps and leaflet for interactive maps
  • tm and quanteda are the main packages for managing, analyzing, and visualizing textual data.
  • shiny is the basis for truly interactive displays and dashboards in R. However, some measure of interactivity can be achieved with htmlwidgets bringing javascript libraries to R. These include, plotly, dygraphs, highcharter, and several others.

(2)Python

Computer Vision
  • Scikit-Image - A collection of algorithms for image processing in Python.
  • SimpleCV - An open source computer vision framework that gives access to several high-powered computer vision libraries, such as OpenCV. Written on Python and runs on Mac, Windows, and Ubuntu Linux.
  • Vigranumpy - Python bindings for the VIGRA C++ computer vision library.
  • OpenFace - Free and open source face recognition with deep neural networks.
  • PCV - Open source Python module for computer vision.
  • face_recognition - Face recognition library that recognize and manipulate faces from Python or from the command line.
  • dockerface - Easy to install and use deep learning Faster R-CNN face detection for images and video in a docker container.
  • Detectron - FAIR’s software system that implements state-of-the-art object detection algorithms, including Mask R-CNN. It is written in Python and powered by the Caffe2 deep learning framework.
  • detectron2 - FAIR’s next-generation research platform for object detection and segmentation. It is a ground-up rewrite of the previous version, Detectron, and is powered by the PyTorch deep learning framework.
  • albumentations - А fast and framework agnostic image augmentation library that implements a diverse set of augmentation techniques. Supports classification, segmentation, detection out of the box. Was used to win a number of Deep Learning competitions at Kaggle, Topcoder and those that were a part of the CVPR workshops.
  • pytessarct - Python-tesseract is an optical character recognition (OCR) tool for python. That is, it will recognize and “read” the text embedded in images.Python-tesseract is a wrapper for Google’s Tesseract-OCR Engine>.
  • imutils - A library containg Convenience functions to make basic image processing operations such as translation, rotation, resizing, skeletonization, and displaying Matplotlib images easier with OpenCV and Python.
  • PyTorchCV - A PyTorch-Based Framework for Deep Learning in Computer Vision.
  • neural-style-pt - A PyTorch implementation of Justin Johnson’s neural-style (neural style transfer).
  • Detecto - Train and run a computer vision model with 5-10 lines of code.
  • neural-dream - A PyTorch implementation of DeepDream.
  • Openpose - A real-time multi-person keypoint detection library for body, face, hands, and foot estimation
  • Deep High-Resolution-Net - A PyTorch implementation of CVPR2019 paper “Deep High-Resolution Representation Learning for Human Pose Estimation”
  • dream-creator - A PyTorch implementation of DeepDream. Allows individuals to quickly and easily train their own custom GoogleNet models with custom datasets for DeepDream.

Natural Language Processing
  • pkuseg-python - A better version of Jieba, developed by Peking University.
  • NLTK - A leading platform for building Python programs to work with human language data.
  • Pattern - A web mining module for the Python programming language. It has tools for natural language processing, machine learning, among others.
  • Quepy - A python framework to transform natural language questions to queries in a database query language.
  • TextBlob - Providing a consistent API for diving into common natural language processing (NLP) tasks. Stands on the giant shoulders of NLTK and Pattern, and plays nicely with both.
  • YAlign - A sentence aligner, a friendly tool for extracting parallel sentences from comparable corpora.
  • jieba - Chinese Words Segmentation Utilities.
  • SnowNLP - A library for processing Chinese text.
  • spammy - A library for email Spam filtering built on top of nltk
  • loso - Another Chinese segmentation library.
  • genius - A Chinese segment base on Conditional Random Field.
  • KoNLPy - A Python package for Korean natural language processing.
  • nut - Natural language Understanding Toolkit.
  • Rosetta - Text processing tools and wrappers (e.g. Vowpal Wabbit)
  • BLLIP Parser - Python bindings for the BLLIP Natural Language Parser (also known as the Charniak-Johnson parser).
  • PyNLPl - Python Natural Language Processing Library. General purpose NLP library for Python. Also contains some specific modules for parsing common NLP formats, most notably for FoLiA, but also ARPA language models, Moses phrasetables, GIZA++ alignments.
  • PySS3 - Python package that implements a novel white-box machine learning model for text classification, called SS3. Since SS3 has the ability to visually explain its rationale, this package also comes with easy-to-use interactive visualizations tools (online demos).
  • python-ucto - Python binding to ucto (a unicode-aware rule-based tokenizer for various languages).
  • python-frog - Python binding to Frog, an NLP suite for Dutch. (pos tagging, lemmatisation, dependency parsing, NER)
  • python-zpar - Python bindings for ZPar, a statistical part-of-speech-tagger, constiuency parser, and dependency parser for English.
  • colibri-core - Python binding to C++ library for extracting and working with with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
  • spaCy - Industrial strength NLP with Python and Cython.
  • PyStanfordDependencies - Python interface for converting Penn Treebank trees to Stanford Dependencies.
  • Distance - Levenshtein and Hamming distance computation.
  • Fuzzy Wuzzy - Fuzzy String Matching in Python.
  • jellyfish - a python library for doing approximate and phonetic matching of strings.
  • editdistance - fast implementation of edit distance.
  • textacy - higher-level NLP built on Spacy.
  • stanford-corenlp-python - Python wrapper for Stanford CoreNLP
  • CLTK - The Classical Language Toolkit.
  • rasa_nlu - turn natural language into structured data.
  • yase - Transcode sentence (or other sequence) to list of word vector .
  • Polyglot - Multilingual text (NLP) processing toolkit.
  • DrQA - Reading Wikipedia to answer open-domain questions.
  • Dedupe - A python library for accurate and scalable fuzzy matching, record deduplication and entity-resolution.
  • Snips NLU - Natural Language Understanding library for intent classification and entity extraction
  • NeuroNER - Named-entity recognition using neural networks providing state-of-the-art-results
  • DeepPavlov - conversational AI library with many pretrained Russian NLP models.
  • BigARTM - topic modelling platform.

General-Purpose Machine Learning
  • PyTorch Geometric Temporal -> A temporal extension of PyTorch Geometric for dynamic graph representation learning.
  • Little Ball of Fur -> A graph sampling extension library for NetworkX with a Scikit-Learn like API.
  • Karate Club -> An unsupervised machine learning extension library for NetworkX with a Scikit-Learn like API.
  • Auto_ViML -> Automatically Build Variant Interpretable ML models fast! Auto_ViML is pronounced “auto vimal”, is a comprehensive and scalable Python AutoML toolkit with imbalanced handling, ensembling, stacking and built-in feature selection. Featured in Medium article.
  • PyOD -> Python Outlier Detection, comprehensive and scalable Python toolkit for detecting outlying objects in multivariate data. Featured for Advanced models, including Neural Networks/Deep Learning and Outlier Ensembles.
  • steppy -> Lightweight, Python library for fast and reproducible machine learning experimentation. Introduces very simple interface that enables clean machine learning pipeline design.
  • steppy-toolkit -> Curated collection of the neural networks, transformers and models that make your machine learning work faster and more effective.
  • CNTK - Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit. Documentation can be found here.
  • auto_ml - Automated machine learning for production and analytics. Lets you focus on the fun parts of ML, while outputting production-ready code, and detailed analytics of your dataset and results. Includes support for NLP, XGBoost, CatBoost, LightGBM, and soon, deep learning.
  • machine learning - automated build consisting of a web-interface, and set of programmatic-interface API, for support vector machines. Corresponding dataset(s) are stored into a SQL database, then generated model(s) used for prediction(s), are stored into a NoSQL datastore.
  • XGBoost - Python bindings for eXtreme Gradient Boosting (Tree) Library.
  • Apache SINGA - An Apache Incubating project for developing an open source machine learning library.
  • Bayesian Methods for Hackers - Book/iPython notebooks on Probabilistic Programming in Python.
  • Featureforge A set of tools for creating and testing machine learning features, with a scikit-learn compatible API.
  • MLlib in Apache Spark - Distributed machine learning library in Spark
  • Hydrosphere Mist - a service for deployment Apache Spark MLLib machine learning models as realtime, batch or reactive web services.
  • scikit-learn - A Python module for machine learning built on top of SciPy.
  • metric-learn - A Python module for metric learning.
  • SimpleAI Python implementation of many of the artificial intelligence algorithms described on the book “Artificial Intelligence, a Modern Approach”. It focuses on providing an easy to use, well documented and tested library.
  • astroML - Machine Learning and Data Mining for Astronomy.
  • graphlab-create - A library with various machine learning models (regression, clustering, recommender systems, graph analytics, etc.) implemented on top of a disk-backed DataFrame.
  • BigML - A library that contacts external servers.
  • pattern - Web mining module for Python.
  • NuPIC - Numenta Platform for Intelligent Computing.
  • Pylearn2 - A Machine Learning library based on Theano.
  • keras - High-level neural networks frontend for TensorFlow, CNTK and Theano.
  • Lasagne - Lightweight library to build and train neural networks in Theano.
  • hebel - GPU-Accelerated Deep Learning Library in Python.
  • Chainer - Flexible neural network framework.
  • prophet - Fast and automated time series forecasting framework by Facebook.
  • gensim - Topic Modelling for Humans.
  • topik - Topic modelling toolkit.
  • PyBrain - Another Python Machine Learning Library.
  • Brainstorm - Fast, flexible and fun neural networks. This is the successor of PyBrain.
  • Surprise - A scikit for building and analyzing recommender systems.
  • implicit - Fast Python Collaborative Filtering for Implicit Datasets.
  • LightFM - A Python implementation of a number of popular recommendation algorithms for both implicit and explicit feedback.
  • Crab - A flexible, fast recommender engine.
  • python-recsys - A Python library for implementing a Recommender System.
  • thinking bayes - Book on Bayesian Analysis.
  • Image-to-Image Translation with Conditional Adversarial Networks - Implementation of image to image (pix2pix) translation from the paper by isola et al.[DEEP LEARNING]
  • Restricted Boltzmann Machines -Restricted Boltzmann Machines in Python. [DEEP LEARNING]
  • Bolt - Bolt Online Learning Toolbox.
  • CoverTree - Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree
  • nilearn - Machine learning for NeuroImaging in Python.
  • neuropredict - Aimed at novice machine learners and non-expert programmers, this package offers easy (no coding needed) and comprehensive machine learning (evaluation and full report of predictive performance WITHOUT requiring you to code) in Python for NeuroImaging and any other type of features. This is aimed at absorbing the much of the ML workflow, unlike other packages like nilearn and pymvpa, which require you to learn their API and code to produce anything useful.
  • imbalanced-learn - Python module to perform under sampling and over sampling with various techniques.
  • Shogun - The Shogun Machine Learning Toolbox.
  • Pyevolve - Genetic algorithm framework.
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind.
  • breze - Theano based library for deep and recurrent neural networks.
  • Cortex - Open source platform for deploying machine learning models in production.
  • pyhsmm - library for approximate unsupervised inference in Bayesian Hidden Markov Models (HMMs) and explicit-duration Hidden semi-Markov Models (HSMMs), focusing on the Bayesian Nonparametric extensions, the HDP-HMM and HDP-HSMM, mostly with weak-limit approximations.
  • mrjob - A library to let Python program run on Hadoop.
  • SKLL - A wrapper around scikit-learn that makes it simpler to conduct experiments.
  • neurolab
  • Spearmint - Spearmint is a package to perform Bayesian optimization according to the algorithms outlined in the paper: Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle and Ryan P. Adams. Advances in Neural Information Processing Systems, 2012.
  • Pebl - Python Environment for Bayesian Learning.
  • Theano - Optimizing GPU-meta-programming code generating array oriented optimizing math compiler in Python.
  • TensorFlow - Open source software library for numerical computation using data flow graphs.
  • pomegranate - Hidden Markov Models for Python, implemented in Cython for speed and efficiency.
  • python-timbl - A Python extension module wrapping the full TiMBL C++ programming interface. Timbl is an elaborate k-Nearest Neighbours machine learning toolkit.
  • deap - Evolutionary algorithm framework.
  • pydeep - Deep Learning In Python.
  • mlxtend - A library consisting of useful tools for data science and machine learning tasks.
  • neon - Nervana’s high-performance Python-based Deep Learning framework [DEEP LEARNING].
  • Optunity - A library dedicated to automated hyperparameter optimization with a simple, lightweight API to facilitate drop-in replacement of grid search.
  • Neural Networks and Deep Learning - Code samples for my book “Neural Networks and Deep Learning” [DEEP LEARNING].
  • Annoy - Approximate nearest neighbours implementation.
  • TPOT - Tool that automatically creates and optimizes machine learning pipelines using genetic programming. Consider it your personal data science assistant, automating a tedious part of machine learning.
  • pgmpy A python library for working with Probabilistic Graphical Models.
  • DIGITS - The Deep Learning GPU Training System (DIGITS) is a web application for training deep learning models.
  • Orange - Open source data visualization and data analysis for novices and experts.
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Go, Javascript and more.
  • milk - Machine learning toolkit focused on supervised classification.
  • TFLearn - Deep learning library featuring a higher-level API for TensorFlow.
  • REP - an IPython-based environment for conducting data-driven research in a consistent and reproducible way. REP is not trying to substitute scikit-learn, but extends it and provides better user experience.
  • rgf_python - Python bindings for Regularized Greedy Forest (Tree) Library.
  • skbayes - Python package for Bayesian Machine Learning with scikit-learn API.
  • fuku-ml - Simple machine learning library, including Perceptron, Regression, Support Vector Machine, Decision Tree and more, it’s easy to use and easy to learn for beginners.
  • Xcessiv - A web-based application for quick, scalable, and automated hyperparameter tuning and stacked ensembling.
  • PyTorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration
  • ML-From-Scratch - Implementations of Machine Learning models from scratch in Python with a focus on transparency. Aims to showcase the nuts and bolts of ML in an accessible way.
  • Edward - A library for probabilistic modeling, inference, and criticism. Built on top of TensorFlow.
  • xRBM - A library for Restricted Boltzmann Machine (RBM) and its conditional variants in Tensorflow.
  • CatBoost - General purpose gradient boosting on decision trees library with categorical features support out of the box. It is easy to install, well documented and supports CPU and GPU (even multi-GPU) computation.
  • stacked_generalization - Implementation of machine learning stacking technic as handy library in Python.
  • modAL - A modular active learning framework for Python, built on top of scikit-learn.
  • Cogitare: A Modern, Fast, and Modular Deep Learning and Machine Learning framework for Python.
  • Parris - Parris, the automated infrastructure setup tool for machine learning algorithms.
  • neonrvm - neonrvm is an open source machine learning library based on RVM technique. It’s written in C programming language and comes with Python programming language bindings.
  • Turi Create - Machine learning from Apple. Turi Create simplifies the development of custom machine learning models. You don’t have to be a machine learning expert to add recommendations, object detection, image classification, image similarity or activity classification to your app.
  • xLearn - A high performance, easy-to-use, and scalable machine learning package, which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data, which is very common in Internet services such as online advertisement and recommender systems.
  • mlens - A high performance, memory efficient, maximally parallelized ensemble learning, integrated with scikit-learn.
  • Netron - Visualizer for machine learning models.
  • Thampi - Machine Learning Prediction System on AWS Lambda
  • MindsDB - Open Source framework to streamline use of neural networks.
  • Microsoft Recommenders: Examples and best practices for building recommendation systems, provided as Jupyter notebooks. The repo contains some of the latest state of the art algorithms from Microsoft Research as well as from other companies and institutions.
  • StellarGraph: Machine Learning on Graphs, a Python library for machine learning on graph-structured (network-structured) data.
  • BentoML: Toolkit for package and deploy machine learning models for serving in production
  • MiraiML: An asynchronous engine for continuous & autonomous machine learning, built for real-time usage.
  • numpy-ML: Reference implementations of ML models written in numpy
  • creme: A framework for online machine learning.
  • Neuraxle: A framework providing the right abstractions to ease research, development, and deployment of your ML pipelines.
  • Cornac - A comparative framework for multimodal recommender systems with a focus on models leveraging auxiliary data.
  • JAX - JAX is Autograd and XLA, brought together for high-performance machine learning research.
  • Catalyst - High-level utils for PyTorch DL & RL research. It was developed with a focus on reproducibility, fast experimentation and code/ideas reusing. Being able to research/develop something new, rather than write another regular train loop.
  • Fastai - High-level wrapper built on the top of Pytorch which supports vision, text, tabular data and collaborative filtering.
  • scikit-multiflow - A machine learning framework for multi-output/multi-label and stream data.
  • Lightwood - A Pytorch based framework that breaks down machine learning problems into smaller blocks that can be glued together seamlessly with objective to build predictive models with one line of code.
  • bayeso - A simple, but essential Bayesian optimization package, written in Python.
  • mljar-supervised - An Automated Machine Learning (AutoML) python package for tabular data. It can handle: Binary Classification, MultiClass Classification and Regression. It provides explanations and markdown reports.

Data Analysis / Data Visualization
  • Cartopy - Cartopy is a Python package designed for geospatial data processing in order to produce maps and other geospatial data analyses.
  • SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
  • NumPy - A fundamental package for scientific computing with Python.
  • AutoViz AutoViz performs automatic visualization of any dataset with a single line of Python code. Give it any input file (CSV, txt or json) of any size and AutoViz will visualize it. See Medium article.
  • Numba - Python JIT (just in time) compiler to LLVM aimed at scientific Python by the developers of Cython and NumPy.
  • Mars - A tensor-based framework for large-scale data computation which often regarded as a parallel and distributed version of NumPy.
  • NetworkX - A high-productivity software for complex networks.
  • igraph - binding to igraph library - General purpose graph library.
  • Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
  • Open Mining - Business Intelligence (BI) in Python (Pandas web interface)
  • PyMC - Markov Chain Monte Carlo sampling toolkit.
  • zipline - A Pythonic algorithmic trading library.
  • PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib.
  • SymPy - A Python library for symbolic mathematics.
  • statsmodels - Statistical modeling and econometrics in Python.
  • astropy - A community Python library for Astronomy.
  • matplotlib - A Python 2D plotting library.
  • bokeh - Interactive Web Plotting for Python.
  • plotly - Collaborative web plotting for Python and matplotlib.
  • altair - A Python to Vega translator.
  • d3py - A plotting library for Python, based on D3.js.
  • PyDexter - Simple plotting for Python. Wrapper for D3xterjs; easily render charts in-browser.
  • ggplot - Same API as ggplot2 for R.
  • ggfortify - Unified interface to ggplot2 popular R packages.
  • Kartograph.py - Rendering beautiful SVG maps in Python.
  • pygal - A Python SVG Charts Creator.
  • PyQtGraph - A pure-python graphics and GUI library built on PyQt4 / PySide and NumPy.
  • pycascading
  • Petrel - Tools for writing, submitting, debugging, and monitoring Storm topologies in pure Python.
  • Blaze - NumPy and Pandas interface to Big Data.
  • emcee - The Python ensemble sampling toolkit for affine-invariant MCMC.
  • windML - A Python Framework for Wind Energy Analysis and Prediction.
  • vispy - GPU-based high-performance interactive OpenGL 2D/3D data visualization library.
  • cerebro2 A web-based visualization and debugging platform for NuPIC.
  • NuPIC Studio An all-in-one NuPIC Hierarchical Temporal Memory visualization and debugging super-tool!
  • SparklingPandas Pandas on PySpark (POPS).
  • Seaborn - A python visualization library based on matplotlib.
  • bqplot - An API for plotting in Jupyter (IPython).
  • pastalog - Simple, realtime visualization of neural network training performance.
  • Superset - A data exploration platform designed to be visual, intuitive, and interactive.
  • Dora - Tools for exploratory data analysis in Python.
  • Ruffus - Computation Pipeline library for python.
  • SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis).
  • somoclu Massively parallel self-organizing maps: accelerate training on multicore CPUs, GPUs, and clusters, has python API.
  • HDBScan - implementation of the hdbscan algorithm in Python - used for clustering
  • visualize_ML - A python package for data exploration and data analysis.
  • scikit-plot - A visualization library for quick and easy generation of common plots in data analysis and machine learning.
  • Bowtie - A dashboard library for interactive visualizations using flask socketio and react.
  • lime - Lime is about explaining what machine learning classifiers (or models) are doing. It is able to explain any black box classifier, with two or more classes.
  • PyCM - PyCM is a multi-class confusion matrix library written in Python that supports both input data vectors and direct matrix, and a proper tool for post-classification model evaluation that supports most classes and overall statistics parameters
  • Dash - A framework for creating analytical web applications built on top of Plotly.js, React, and Flask
  • Lambdo - A workflow engine for solving machine learning problems by combining in one analysis pipeline (i) feature engineering and machine learning (ii) model training and prediction (iii) table population and column evaluation via user-defined (Python) functions.
  • TensorWatch - Debugging and visualization tool for machine learning and data science. It extensively leverages Jupyter Notebook to show real-time visualizations of data in running processes such as machine learning training.
  • dowel - A little logger for machine learning research. Output any object to the terminal, CSV, TensorBoard, text logs on disk, and more with just one call to logger.log().

Misc Scripts / iPython Notebooks / Codebases

Neural Networks
  • nn_builder - nn_builder is a python package that lets you build neural networks in 1 line
  • NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.
  • Neuron - Neuron is simple class for time series predictions. It’s utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm.
    =======
  • NeuralTalk - NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.
  • Neuron - Neuron is simple class for time series predictions. It’s utilize LNU (Linear Neural Unit), QNU (Quadratic Neural Unit), RBF (Radial Basis Function), MLP (Multi Layer Perceptron), MLP-ELM (Multi Layer Perceptron - Extreme Learning Machine) neural networks learned with Gradient descent or LeLevenberg–Marquardt algorithm.
  • Data Driven Code - Very simple implementation of neural networks for dummies in python without using any libraries, with detailed comments.
  • Machine Learning, Data Science and Deep Learning with Python - LiveVideo course that covers machine learning, Tensorflow, artificial intelligence, and neural networks.
  • TResNet: High Performance GPU-Dedicated Architecture - TResNet models were designed and optimized to give the best speed-accuracy tradeoff out there on GPUs.

Kaggle Competition Source Code

Reinforcement Learning
  • DeepMind Lab - DeepMind Lab is a 3D learning environment based on id Software’s Quake III Arena via ioquake3 and other open source software. Its primary purpose is to act as a testbed for research in artificial intelligence, especially deep reinforcement learning.
  • Gym - OpenAI Gym is a toolkit for developing and comparing reinforcement learning algorithms.
  • Serpent.AI - Serpent.AI is a game agent framework that allows you to turn any video game you own into a sandbox to develop AI and machine learning experiments. For both researchers and hobbyists.
  • ViZDoom - ViZDoom allows developing AI bots that play Doom using only the visual information (the screen buffer). It is primarily intended for research in machine visual learning, and deep reinforcement learning, in particular.
  • Roboschool - Open-source software for robot simulation, integrated with OpenAI Gym.
  • Retro - Retro Games in Gym
  • SLM Lab - Modular Deep Reinforcement Learning framework in PyTorch.
  • Coach - Reinforcement Learning Coach by Intel® AI Lab enables easy experimentation with state of the art Reinforcement Learning algorithms
  • garage - A toolkit for reproducible reinforcement learning research
  • metaworld - An open source robotics benchmark for meta- and multi-task reinforcement learning
  • acme - An Open Source Distributed Framework for Reinforcement Learning that makes build and train your agents easily.
  • Spinning Up - An educational resource designed to let anyone learn to become a skilled practitioner in deep reinforcement learning

参考(文章主要来源于Github)

  • https://github.com/taylorlu/MachineLearningDOC
  • https://github.com/josephmisiti/awesome-machine-learning
  • https://github.com/mrgloom/awesome-semantic-segmentation
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
聚类算法是一种常用的无监督学习方法,可以将数据集分成若干个组,每个组内的数据具有相似性。下面是一些常用的聚类算法对应实例代码。 1. K-Means算法 K-Means算法是一种基于距离的聚类算法,其核心思想是将数据集分成K个簇,使得每个数据点都属于离其最近的簇。K-Means算法的步骤如下: 1. 随机选择K个质心(簇中心)。 2. 将每个数据点分配到距离其最近的质心所在的簇中。 3. 重新计算每个簇的质心。 4. 重复步骤2和3,直到簇中心不再改变或达到最大迭代次数。 下面是K-Means算法Python实现代码: ```python from sklearn.cluster import KMeans # 创建数据集 X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]] # 创建K-Means模型 kmeans = KMeans(n_clusters=2) # 训练模型 kmeans.fit(X) # 预测结果 y_pred = kmeans.predict(X) # 输出聚类结果 print(y_pred) ``` 2. 层次聚类算法 层次聚类算法是一种划分聚类算法,其核心思想是从单个数据点开始,将最相似的点组合成一个簇,逐步合并成更大的簇,直到所有数据点都被合并到同一个簇中。层次聚类算法有两种方式:自下而上的聚合和自上而下的分裂。下面是自下而上的聚合层次聚类算法Python实现代码: ```python from scipy.cluster.hierarchy import dendrogram, linkage import matplotlib.pyplot as plt # 创建数据集 X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]] # 计算距离矩阵 Z = linkage(X, 'ward') # 绘制树状图 plt.figure(figsize=(10, 5)) dendrogram(Z) plt.show() ``` 3. DBSCAN算法 DBSCAN算法是一种基于密度的聚类算法,其核心思想是将密度相连的数据点划分为同一个簇。DBSCAN算法的步骤如下: 1. 选择一个未访问的数据点。 2. 如果该点周围的密度达到预设的阈值,则将其作为一个新的簇的中心点,并将其密度可达的所有点加入该簇。 3. 重复步骤2,直到所有数据点都被访问。 下面是DBSCAN算法Python实现代码: ```python from sklearn.cluster import DBSCAN # 创建数据集 X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]] # 创建DBSCAN模型 dbscan = DBSCAN(eps=1, min_samples=2) # 训练模型 dbscan.fit(X) # 预测结果 y_pred = dbscan.labels_ # 输出聚类结果 print(y_pred) ``` 以上就是几种常用的聚类算法对应实例代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值