使用PaddlePaddle写的Mnist手写数字识别,测试集准确率99.50%。
代码如下:
1 | import paddle |
使用PaddlePaddle写的Mnist手写数字识别,测试集准确率99.50%。
代码如下:
1 | import paddle |
发现一个华为出的深度学习框架,同时支持静态图和动态图,尝试一下,将代码收藏起来方便以后使用。
需要先下载数据集:
1 | mkdir -p ./data/train ./data/test |
代码如下:
1 | import mindspore |
SMPLX
是一个带手势和表情的线性人体模型,官方地址:smpl-x.is.tue.mpg.de,需要注册后才能下载模型。
官方提供的smplx算法是基于pytorch的,可以直接使用pip进行安装。
1 | pip install smplx |
现在还不能直接使用,需要到官网下载对应的模型。
这里使用随机参数来创建一个模型,代码如下:
1 | import smplx |
给定一个原点、一个在坐标轴上的点和一个不在坐标轴上点,可以唯一的确定一个3维空间下的直角坐标系。
代码如下:
1 | import numpy as np |
使用原点和一组正交基来表示一个坐标系,将坐标由原空间变换到目标空间,就是求向量在每个基上的投影,将坐标由目标空间变换到原空间,就是求基的线性组合。
代码如下:
1 | # 5.坐标变换:原空间->目标空间 |
由正交基组成的矩阵,其逆与转置相同,代码如下:
1 | # 7.由正交基组成的矩阵,其逆矩阵和转置矩阵相同 |
今天在编译custom_op
时发现一个gcc
的bug
,我用的是Ubuntu 21.04
系统,编译时报/usr/include/c++/10/chrono:428:27: internal compiler error: 段错误
的错误,查了一通后解决问题。
nvcc
默认使用的gcc 10.3.0
,只需要在nvcc后面添加--compiler-bindir /usr/bin/gcc-x
就可以了。
使用如下命令安装OpenCV
:
1 | pip install opencv-python |
要使用OpenCV
,首先需要引入:
1 | import cv2 |
OpenCV
有多种方式读取图像,常用的有彩色模式和灰度模式。
1 | im = cv2.imread("icon.jpg") # 读取彩色图像 |
注意:读取的图像是bgr
格式的numpy.ndarray
对象。
使用cv2.imshow(winname, mat)
函数显示图像,注意:第一个参数是窗口名,第二个才是图像。
调用显示方法后,通常要调用cv2.waitKey()
函数启动消息循环,之后调用cv2.cv2.destroyAllWindows()
关闭窗口。
完整代码如下:
1 | import cv2 |
注意:默认创建的窗口是不可以调整大小,我们可以先创建一个可调大小的窗口,之后再显示图像,完整代码如下。
1 | import cv2 |
如下代码展示如何以灰度模式读取图像,然后再保存到文件中。
1 | import cv2 |
北京时间9月16号凌晨3点半,CNTK终于发布2.2版本了(话说,定的不是9月15号吗!!!),终于支持CSharp了!于是,赶紧down下来体验一把~
后来才发现,只需要装一个Nuget包就行了,Nuget里面已经集成了所需的各种依赖,傻瓜式安装(微软式风格)。不过,Gpu版的包有200多M,cpu版的也有50多M,网速慢的话可以手动拷离线包。
CNTK以计算网络为基础(与数据流图的概念很像,表达式树有助于理解这个概念),在计算之前需要先构建好计算网络,然后准备并传入数据,就可以完成计算了。乍一看,采用这种方式似乎有点麻烦,但是如果你习惯了这种方式,你就会喜欢上她。
CNTK有几个不可忽视的优点:
最近在研究基于NPU的推理方法,编写的demo已经测试通过,但集成到项目中却发现各种问题。
1 | /home/killf/data/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libz.so, needed by /home/sensing/face-api-deps/HIAI/HiAI_DDK_100.300.010.010/HiAI_DDK_100.200.010.011/DDK/ai_ddk_mixmodel_lib/lib64/libhiai.so, not found (try using -rpath or -rpath-link) |
期初以为这个错误是因为在不到libz.so
和libstdc++.so
引起的,事实上只需要加上-rpath-link
即可解决问题。
1 | target_link_options(test_performance PRIVATE -Wl,-rpath-link=/home/killf/data/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/26/) |
一切都编译没问题,但启动的时候直接报Segmentation fault
,连main
函数中第一行代码都没有执行,所以这肯定是链接的问题,通过逐一排除的方法,发现问题出现在libhiai.so
上面。
1 | [libprotobuf ERROR /home/sensing/github/protobuf-3.6.1/src/google/protobuf/descriptor_database.cc:58] File already exists in database: google/protobuf/descriptor.proto[libprotobuf FATAL /home/sensing/github/protobuf-3.6.1/src/google/protobuf/descriptor.cc:1358] CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): terminating with uncaught exception of type google::protobuf::FatalException: CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): |
这是因为libhiai.so
中存在静态链接的protobuf
,而我们的项目也是静态链接了protobuf
,造成二次链接的问题。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true