标签 deep_learning 下的文章

github 上面有一个 onnx 模型的仓库,里面有关于修改图像风格的,直接按照里面的说明即可。 有多种风格,碎玻璃,棒棒糖等等。

参考: https://github.com/onnx/models/tree/master/vision/style_transfer/fast_neural_style
https://github.com/pytorch/examples/blob/master/fast_neural_style/neural_style/utils.py
https://github.com/onnx/models/tree/master/vision
https://github.com/onnx/models/tree/master/vision/classification/mobilenet
https://github.com/onnx/models/blob/master/vision/classification/imagenet_preprocess.py
https://github.com/onnx/models/blob/master/vision/classification/imagenet_inference.ipynb
https://github.com/onnx/models/tree/master/vision/classification/squeezenet

使用已有训练集

  1. 下载 https://pan.baidu.com/s/15GSPiJ59dg4kNyUch6W5Xw 提取码 wja4, 先下载口罩的训练集。
  2. 解压训练集,修改训练集中的 data.yaml,把里面的 train 和 val 这两个目录修改为从 yolov5 的 train.py 出发的路径。
  3. 把 yolov5 中的 models/yolov5s.yaml 复制到训练集下面,修改里面的 nc 数值为 2,和训练集的 class number 匹配。
  4. python train.py --img 640 --batch 16 --epochs 300 --data ../dataset/Mask_Wearing.v1-416x416-black-padding.yolov5pytorch_2/data.yaml --cfg ../dataset/Mask_Wearing.v1-416x416-black-padding.yolov5pytorch_2/yolov5s.yaml --weights '' --workers 1 开始训练。 提示有包没有,安装 pip install tensorboard
  5. 发现报错,OSError: [WinError 1455],然后修改 batch 数值,改为 4,就可以了。python train.py --img 640 --batch 4 --epochs 300 --data ../dataset/Mask_Wearing.v1-416x416-black-padding.yolov5pytorch_2/data.yaml --cfg ../dataset/Mask_Wearing.v1-416x416-black-padding.yolov5pytorch_2/yolov5s.yaml --weights '' --workers 1. 参考: https://github.com/ultralytics/yolov5/issues/3182
    https://blog.csdn.net/mr_wei_/article/details/111407093
  6. 训练后的模型在 runs\detect\exp \weights\best.pt 可以直接拿来用。
  7. 测试 python detect.py --weight runs\train\exp3\weights\best.pt --source ..\dataset\Mask_Wearing.v1-416x416-black-padding.yolov5pytorch_2\test\images\126202-untitled-design-13_jpg.rf.56b50d413464989bb2232448a8fbb915.jpg 输出在 runs\detect 下面。

参考:

https://www.bilibili.com/video/BV1Pf4y1R7wD/?spm_id_from=autoNext
https://xugaoxiang.com/2020/07/02/yolov5-training

自己标记

  1. 下载 coco128, https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip
    参考: https://www.gitmemory.com/issue/ultralytics/yolov5/12/757330226

参考:

https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data

转换模型

  1. pip install coremltools>=4.1 onnx>=1.9.0 scikit-learn==0.19.2 安装报错,没有 msvc, 和相应的库。
  2. 下载 https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0, 只要 Build Tools for Visual Studio 就可以了,不需要 visual studio 整个安装。安装好后,把 C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037 加入环境变量 MSVC,然后把 %MSVC%\bin\Hostx64\x64 加入环境变量 PATH里面即可。 参考: https://blog.csdn.net/qq_38204686/article/details/108493511
    https://blog.csdn.net/a517858177/article/details/114525735
    https://blog.csdn.net/kaige_zhao/article/details/80315697
  3. 需要安装 libgcc, libquadmath, musl, libgfortran, lapack-dev 库 参考: https://github.com/scipy/scipy/issues/9481
  4. 转换 参考: https://github.com/ultralytics/yolov5/issues/251

参考:

https://github.com/ultralytics/yolov5/issues/251
https://zhuanlan.zhihu.com/p/358176744

参考:

如果安装 conda,那么据说 cudatoolkit 和 cuDNN 都可以不安装。

cuda

cuda 是 nvidia 提供的运算平台。

  1. 打开 cmd, 然后把目录切换到 C:\Program Files\NVIDIA Corporation\NVSMI,然后输入 nvidia-smi 就可以查看自己显卡的 cuda 版本了,版本信息在右上角。
  2. 浏览器打开 https://developer.nvidia.com/cuda-downloads 然后按照自己的 cuda 版本进行下载,下载 local 的。
  3. 安装 cuda,首先选择的是解压临时目录,安装的目录使用目录的即可。安装完成之后,查看环境变量,应该有 CUDA_PATH 等。

参考:

https://www.jianshu.com/p/622f47f94784
https://developer.nvidia.com/cuda-11.1.1-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
https://developer.nvidia.com/cuda-11.2.2-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal

cuDNN

cuDNN 是 nvidia 提供的深度学习 gpu 加速库。

  1. 打开 https://developer.nvidia.com/cudnn , 注册账号。
  2. 登录后,选择 cuda 对应的 cuDNN 进行下载即可。
  3. 解压,把解压后的 bin include lib 这三个文件夹里面的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1 的对应文件夹里面。
  4. 打开 cmd,运行 nvcc -V 有相应输出即可。

参考:

https://www.bilibili.com/video/BV1L5411Y7pM
https://developer.nvidia.com/rdp/cudnn-download
https://xugaoxiang.com/2019/12/18/windows-10-cuda-cudnn/

conda

安装 miniconda,然后打开并配置环境

  1. conda env list 查看已有虚拟环境,conda env remove -n env_name 删除指定虚拟环境。
  2. conda create -n pytorch_v190 创建一个新环境,如果需要指定 python 版本,那么需要追加 python=3.7 这样的版本语句即可。
  3. activate pytorch_v190 启用新环境,python --version 检查当前 python 版本号。
  4. conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge 安装 pytorch
  5. 安装完成后,可以测试一下:
    python
    import torch
    print(torch.cuda.is_available())
    x = torch.ones(2, 2)
    y = x + 2
    print(y)
    exit()

    参考: https://www.bilibili.com/video/BV1oz411v7cv?from=search&seid=9560127527480640558
    https://pytorch.org/get-started/locally/
    https://blog.csdn.net/qq_18668137/article/details/80807829

编辑环境可以安装 jupter notebook 或者 vscode。

vscode 需要安装 python 插件 参考: https://www.bilibili.com/video/BV18K411w7Vs?from=search&seid=9560127527480640558
https://www.jianshu.com/p/f10fb1a4cc87
https://www.jianshu.com/p/ef1ae10ba950

yolov5

  1. https://github.com/ultralytics/yolov5 下载 yolov5 源码
  2. https://github.com/ultralytics/yolov5/releases 下载权重文件并放到源码目录下面的 weights 文件夹
  3. 修改 detect.py ,parser.add_argument('--weights', nargs='+', type=str, default='weights/yolov5s.pt', help='model.pt path(s)') 修改成这样,detect.py 默认就可以在 weights 文件夹下面找权重文件了,也可以使用的时候使用 weights 这个参数。
  4. 在 conda 里面切换到 yolov5 的目录,直接运行 python detect.py,会读取 data/images 下面的图片,处理完之后,输出到 runs/detect 下面。 也可以附带参数,具体参数使用 python detect.py -h 查看,也可以直接看代码,获得去 github 上面查看。如果碰到缺包,可以安装 pip install opencv-python pandas requests pyyaml tqdm matplotlib seaborn

参考:

https://www.bilibili.com/video/BV1QT4y1J7rm
https://github.com/ultralytics/yolov5
https://xugaoxiang.com/2020/06/17/yolov5
https://blog.csdn.net/weixin_39450145/article/details/104801730
https://blog.csdn.net/weixin_43707402/article/details/107688603

参考:

https://www.thepaper.cn/newsDetail_forward_7815641

image mean 在深度学习中指的就是平均值。 对多个图像进行训练后,在同一个位置,同一个通道上的平均值。

图像数据减去均值之后,能够让图像数据在 0 两边比较均匀。

正常情况下, mean 是在 rgb 三个通道上分别求平均值,比如说 [0.5, 0.5, 0.5] 就是三个通道上的分别平均值,还有一个标准差 std,也是三个通道分别求值,比如说 [0.5, 0.5, 0.5]。

transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) 这个执行的计算是: image =(图像 - 平均值)/ std

参考: https://blog.csdn.net/weixin_37251044/article/details/81157344
https://www.cnblogs.com/volcao/p/9089716.html
https://www.zhihu.com/question/330534169
https://www.cnblogs.com/booturbo/p/12688105.html
https://blog.csdn.net/KaelCui/article/details/106175313
https://discuss.pytorch.org/t/understanding-transform-normalize/21730

mobilenet 介绍

目标检测

目标检测算法使用已知的对象类别集合来识别和定位图像中的对象的所有实例。该算法接受图像作为输入并输出对象所属的类别,以及它属于该类别的置信度分数,该算法还使用矩形边界框预测对象的位置和比例。

目标检测的目的是“识别对象并给出其在图中的确切位置”,可以分为三部分:

  • 识别某个对象
  • 给出对象在图中的位置
  • 识别图中所有的目标及其位置

- 阅读剩余部分 -

介绍

Tengine概述:

Tengine是OPEN AI LAB(开放智能)推出的边缘AI推理框架,致力于应用场景下多厂家多种类的边缘智能芯片与多样的训练框架、算法模型之间的相互兼容适配,同时提升算法在芯片上的运行性能,将从云端完成训练后的算法高效迁移到异构的边缘智能芯片上执行,缩短AI应用开发与部署周期,助力加速AI产业化落地。

Tengine重点关注嵌入式设备上的边缘AI计算推理,为大量应用和设备提供高性能AI推理的技术支持。一方面可以通过异构计算技术同时调用CPU、GPU、DSP、NPU等不同计算单元来完成AI网络计算,另一方面,它支持TensorFlow、Caffe、MXNet、PyTorch、MegEngine、DarkNet、ONNX、ncnn等业内主流框架,是国际上为数不多的通过ONNX官方认证的战略合作伙伴之一。

- 阅读剩余部分 -

win 安装

  1. Miniconda 安装好以后,把安装路径 Miniconda3Miniconda3\Scripts 添加到 path 里面。
  2. 从开始菜单里面开始 conda,然后 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ 添加阿里的源,清华的源安装好像有点问题。
  3. cd 命令打开到代码目录
  4. conda env create -f environment.yml 安装相应的环境软件
  5. conda activate gluon 开启 gluon 环境,conda deactivate 退出环境。
  6. jupyter notebook 启动 jupyter,浏览器也会自动打开。如果不能打开,就在浏览器中输入 http://localhost:8888
  7. 安装 gpu 版本. 首先卸载 cpu 版本的 mxnet pip uninstall mxnet, 然后安装 cuda conda install cudatoolkit=10.0, 修改 environment.ymlmxnet 修改为 mxnet-cu100,然后执行 conda env update -f environment.yml 或者直接 pip install mxnet-cu100==1.5.0 这样就安装好了。

深度学习基础

线性回归

误差公式其中常数1/2使对平方项求导后的常数系数为1,这样在形式上稍微简单一些。

参考

https://stackoverflow.com/questions/44597662/conda-command-is-not-recognized-on-windows-10
https://discuss.gluon.ai/t/topic/12816/4
https://zhuanlan.zhihu.com/p/109939711
https://discuss.gluon.ai/t/topic/13576

原理

人脸属性识别与算法

人脸是一种非常重要的生物特征,具有结构复杂、细节变化多等特点,同时也蕴含了大量的信息,比如性别、种族、年龄、表情等。主流的人脸属性识别算法主要包括:性别识别、种族识别、年龄估计、表情识别等。 目前主流的人脸属性识别算法主要包括:性别识别、种族识别、年龄估计、表情识别等。

- 阅读剩余部分 -