Skip to content

Latest commit

 

History

History
91 lines (86 loc) · 2.45 KB

README.md

File metadata and controls

91 lines (86 loc) · 2.45 KB

Alchemy

Alchemy 是一个使用C++编写的CV库,包含传统算法和机器学习算法。

依赖

必须

  • libjpeg: 读取jpeg图片, sudo apt install libjpeg8-dev
  • libpng/zlib, sudo apt install libpng-dev
  • fftw: 进行快速傅里叶变换,sudo apt install libfftw3-dev
  • gtk-2.x: 显示图片使用, sudo apt install libgtk2.0-dev
  • FFmpeg: 读取摄像头/视频数据, sudo apt install ffmpeg
  • BLAS: ATLAS, sudo apt install libatlas-base-dev
  • CUDA 9.0/cuDNN 7: GPU计算,安装见官网
  • Glog: 日志,方便调试, sudo apt install libgoogle-glog-dev
  • NNPACK, CPU快速计算卷积
git clone https://github.com/Maratyszcza/NNPACK.git
cd NNPACK
mkdir build
cd build
cmake ..
make
sudo make install

可选

  • OpenCV

CMake构建

mkdir build
cd build
cmake ..

测试

make runtest

Todo

  • 保存图像的基本类:_Matrix
  • 使用BLAS重写矩阵运算
  • 分别实现CPU/GPU版本的矩阵运算
  • jpeg图像读写
  • png图像数据读取
  • 摄像头(Linux:v4l2)数据读取
  • mp4等视频数据读取 -[x] VideoCapture 读取Gif图片
  • 再次支持Windows(主要VS好用)
  • ROI

  • 颜色空间转换:cvtColor()
  • 线性滤波:boxFilter()/blur()/GassionBlur()
  • 非线性滤波: medianBlur()/bilateralFilter()
  • 形态学滤波: morpEX()
  • 图像轮廓: findContours()/findOutermostContours()
  • 阈值: threshold()
  • DFT: FFTW实现(自己实现的后来更新_Matrix类后出现问题了,没有修改)
  • 图像金字塔: pyrUp()/pyrDown()
  • canny/sobel边缘检测(实现简单,效果不好)
  • 仿射变换
  • 256 LBP/ELBP (TODO: 任意r和P)
  • Haar
  • HOG
  • SIFT

  • 实现张量类Tensor(也就是N维数组)
  • 调整结构为: Tensor -> Layer -> Network -> Optimizer 结构
  • weight/bias初始化方法: normal/uniform/xavier
  • GPU版本实现
  • L1/L2正则化
  • Accuracy Layer
  • Convolution Layer
  • Pooling Layer
  • Inner Product
  • Dropout Layer
  • ReLU Layer
  • sigmoid Layer
  • tanh Layer
  • Softmax Layer
  • Softmax Loss Layer
  • Euclidean Loss Layer
  • Sigmoid cross-entropy Loss Layer
  • SGD Optimizer
  • Momentum Optimizer
  • Nesterov Optimizer
  • AdaDelta Optimizer
  • Adam Optimizer