分类 AI 下的文章

安装

pip3 install onnxruntime --user 会报错找不到对应的版本。 python3 -m pip install --upgrade pip 更新 pip,结果报错 Permission denied: '/usr/bin/pip'。 python3 -m pip install --upgrade pip --user 成功更新 pip。 pip3 install onnxruntime --user 安装 onnxruntime.

使用

python3 import onnxruntime 报错 Illegal instruction (core dumped)。 gdb python3 r import onnxruntime 报错

Program received signal SIGILL, Illegal instruction.
0x0000007fa8ca5f54 in gotoblas_dynamic_init ()
   from /home/openailab/.local/lib/python3.6/site-packages/numpy/core/../../numpy.libs/libopenblasp-r0-32ff4d91.3.13.so

解决方法, export OPENBLAS_CORETYPE=ARMV8 然后再使用 python3 就可以了。问题就是 openblasp 在 cpu 检测的地方除了问题,所以明确告诉它 cpu 类型就可以了。

参考:

https://github.com/opencv/opencv-python/issues/485
https://github.com/numpy/numpy/issues/18131

主要方法

  1. 基于知识的检测方法:检测器官特征和器官之间的几何关系。主要利用先验知识将人脸看作器官特征的组合,根据眼睛、眉毛、嘴巴、鼻子等器官的特征以及相互之间的几何位置关系来检测人脸。 主要的检测方法:模板匹配,人脸特征,形状与边缘,纹理特征,颜色特征。

  2. 基于统计的检测方法:像素相似性度量。将人脸看作一个整体的模式——二维像素矩阵,从统计的观点通过大量人脸图像样本构造人脸模式空间,根据相似度量来判断人脸是否存在。 主要的检测方法:成分分析与特征脸,神经网络方法,支持向量机,隐马尔可夫模型,Adaboost算法。

- 阅读剩余部分 -

最全资料:https://github.com/Mikoto10032/DeepLearning

https://github.com/zhanggyb/nndl

CNN学习资料: https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/ https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/ https://zhuanlan.zhihu.com/p/26954569?utm_source=qq&utm_medium=social https://cs231n.github.io/assets/conv-demo/index.html?tdsourcetag=s_pcqq_aiomsg https://blog.csdn.net/zouxy09/article/details/9993371 https://zhuanlan.zhihu.com/p/28173972 https://zhuanlan.zhihu.com/p/27908027 https://zhuanlan.zhihu.com/p/37878381 https://www.zhihu.com/question/22298352/answer/228543288

1. torch.Tensor 生成一个 tensor 类型。

>>> import torch
>>> x=torch.Tensor([[1,2,3],[4,5,6]])
>>> x
tensor([[1., 2., 3.],
        [4., 5., 6.]])

参考: https://www.jianshu.com/p/314b6cfce1c3 https://pytorch-cn.readthedocs.io/zh/latest/package_references/Tensor/ https://blog.csdn.net/weixin_42018112/article/details/91383574

2. torch.nn.functional.softmax(input, dim=None, _stacklevel=3, dtype=None) 用于对设置的维度上的数进行收缩,让他的和为 1.

>>> import torch
>>> from torch import nn as nn
>>> input = torch.randn(2, 3, 4)
>>> input
tensor([[[-0.1335,  0.1574, -0.4618, -0.1629],
         [-1.1302, -0.2782,  0.2689,  1.4722],
         [ 1.8547,  3.0593,  1.7146, -0.4395]],

        [[-0.0102,  1.4679,  0.0138,  0.5245],
         [ 2.2345,  2.0089,  2.0074,  0.4197],
         [-1.4187, -0.0887,  0.9257,  0.2516]]])
>>> torch.nn.functional.softmax(input)
tensor([[[0.4692, 0.2124, 0.3833, 0.3346],
         [0.0334, 0.0922, 0.1495, 0.7413],
         [0.9635, 0.9588, 0.6876, 0.3338]],

        [[0.5308, 0.7876, 0.6167, 0.6654],
         [0.9666, 0.9078, 0.8505, 0.2587],
         [0.0365, 0.0412, 0.3124, 0.6662]]])
>>>
>>> torch.nn.functional.softmax(input, dim=0)
tensor([[[0.4692, 0.2124, 0.3833, 0.3346],
         [0.0334, 0.0922, 0.1495, 0.7413],
         [0.9635, 0.9588, 0.6876, 0.3338]],

        [[0.5308, 0.7876, 0.6167, 0.6654],
         [0.9666, 0.9078, 0.8505, 0.2587],
         [0.0365, 0.0412, 0.3124, 0.6662]]])
>>> torch.nn.functional.softmax(input, dim=1)
tensor([[[0.1153, 0.0504, 0.0841, 0.1452],
         [0.0426, 0.0326, 0.1746, 0.7447],
         [0.8421, 0.9171, 0.7413, 0.1101]],

        [[0.0936, 0.3415, 0.0923, 0.3757],
         [0.8835, 0.5866, 0.6779, 0.3383],
         [0.0229, 0.0720, 0.2298, 0.2860]]])
>>> torch.nn.functional.softmax(input, dim=2)
tensor([[[0.2482, 0.3320, 0.1788, 0.2410],
         [0.0479, 0.1122, 0.1939, 0.6460],
         [0.1885, 0.6287, 0.1638, 0.0190]],

        [[0.1232, 0.5403, 0.1262, 0.2103],
         [0.3626, 0.2894, 0.2889, 0.0591],
         [0.0487, 0.1843, 0.5081, 0.2589]]])

默认是对于第一维进行伸缩。 dim = 0, 0.4692 + 0.5308 = 1 dim = 1, 0.1153 + 0.0426 + 0.8421 = 1 dim = 2, 0.2482 + 0.3320 + 0.1788 + 0.2410 = 1

参考: https://blog.csdn.net/m0_46653437/article/details/111610571 https://pytorch.org/docs/master/nn.functional.html#torch.nn.functional.softmax https://blog.csdn.net/chengyq116/article/details/106893773

3. torch.clamp(input, min, max, *, out=None) → Tensor 用于限制数值的上限和下限,把所有数据限制在设定好的上下限之间。

>>> a = torch.randn(4)
>>> a
tensor([-1.7120,  0.1734, -0.0478, -0.0922])
>>> torch.clamp(a, min=-0.5, max=0.5)
tensor([-0.5000,  0.1734, -0.0478, -0.0922])

参考: https://pytorch.org/docs/stable/generated/torch.clamp.html

参考数目:

https://pytorch.apachecn.org/docs/1.0/tensors.html

1. .SessionOptions 生成一个配置, 打印 log 的多少:0:Verbose, 1:Info, 2:Warning. 3:Error, 4:Fatal. Default is 2.

sess_config = ort.SessionOptions()
sess_config.log_severity_level = 3

2. .InferenceSession(path_or_bytes, sess_options=None, providers=None, provider_options=None) 加载模型

self.sess = ort.InferenceSession(onnx_file, sess_options=sess_config)

3. sess.run(["Y"], {"X": ortvalue}) 第二个参数里面的 ortvalue 就是图像数据。

参考: https://www.onnxruntime.ai/python/api_summary

环境

  1. 安装 tensorflow,使用命令 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow --user
  2. 如果使用虚拟机,不适用 gpu ,可以安装 cpu 版本的 tensorflow-cpu,使用命令pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-cpu --user
  3. 安装 pandas,使用命令 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas --user

符号约定

  1. 标量元素使用普通小写字母标识,如 x, y.
  2. 向量使用粗体小写字符标识,如 x, y.
  3. 向量默认使用竖着的列向量方向。向量的长度称为向量的维度 dimension.
  4. 维度这个词在不同上下文有不同含义。向量和轴的维度被用来标识向量和轴的长度,即向量和轴的元素数量。然后张量的维度用来表示张量具有的轴数。在这个意义上,张量的某个轴的维度就是这个轴的长度。
  5. 矩阵使用粗体大写字母表示,如 X, Y.
  6. 矩阵中使用位置进行索引,第 i 行,第 j 列 的元素可以表示为 [A]ij 或者 aij ,只有在索引容易造成误解的时候,才需要在行和列的索引中使用 , 隔开,如 a2,3j.
  7. 交换矩阵的行和列,成为矩阵转置 transpose, 使用符号 AT 来表示 A 的转置矩阵。 如果矩阵和转置矩阵相等,那么就称为对称矩阵。
  8. 张量的符号和矩阵类似,但是使用特殊字体的大写字母表示。
  9. 矩阵按元素乘法,称为 Hadamard 积,使用一个圆圈中间一个点来表示。 10.可以使用求和的方式对矩阵降维,可以对轴 0 降维,意思是每行求和。也可以对轴 1 降维,意思是每列求和。
  10. 点积 xTy 表示相同位置元素乘积后求和。 常用的情况,一组向量是值,一组向量是权重,点积就是这些值的加权和,如果权重非负和为1,那么也称为加权平均。
  11. 矩阵向量积,有要求:数据类型一致,都是浮点或者整数;矩阵的列数量要和向量的长度一致。计算方法如下:矩阵的每一行和向量相乘后求和,因为是按照元素相乘,所以要求列和向量长度一致,才能按元素相乘;然后把求和后的数据作为元素,放到结果的向量中,最后的结果就是一个向量,长度是原来的行数。
  12. 矩阵矩阵乘法类似矩阵向量积,要求是第一个矩阵的列数和第二个矩阵的行数一致。计算时,第二个矩阵每一列作为一个向量和第一个矩阵做矩阵向量积,结果还是一个列向量;第二个矩阵有几列就做几次运算,最后的结果按列拼起来,称为一个矩阵。 第一个矩阵时 m x n 矩阵,第二个矩阵时 n x k 矩阵,最后的结果就是 m x k 矩阵。
  13. 范数

参考

Python安装tensorflow
https://blog.csdn.net/weixin_41103006/article/details/112425367
Tensorflow libcudart.so.11.0错误的解决
https://zhuanlan.zhihu.com/p/439772235