Alchemy icon indicating copy to clipboard operation
Alchemy copied to clipboard

CV DL

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

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

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

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