- 博客(754)
- 资源 (1)
- 收藏
- 关注
原创 手机指令集:armv7 & armv8
经验总结:手机指令集主要跟芯片相关,如果是c端,就默认是arm芯片了,也只有arm芯片才有armv7和armv8之分。如果上MNN的话,MNN的量化都是做在armv8上的现在c端大部分都是64位APP,对应的架构是armv8。寄存器个数不一样,指令集也不一样。需要针对这些不同重新设计计算的方式。armv7:一般偏低端机才有armv7,而armv7 是可以优化的。模型一般在armv7上跑得较慢,而MNN现在对armv7不能加速。但是据说抖音的都跑在armv7上,且还能加速。armv8:
2021-11-03 00:30:46 1742
原创 推理引擎:tnn & ncnn & 自研
经验总结目前开源的框架int推理做的都比较一般,有比较大的优化空间。在我们测试的case下,tnn相对来说会比ncnn好一些。不少大点的公司主要还是基于开源版本,适配自己的模型,针对性优化。其实搞优化大部分时间就是提高缓存命中率,高效利用neon寄存器。...
2021-11-03 00:29:15 843
原创 【美妆】上美妆的全流程与问题定位
上美妆的流程点位 -> 绑妆(素材+配置文件) -> 渲染上妆流程:模型预测给到点位;配置文件对素材进行绑妆(不同素材对应不同的绑妆配置文件);送入同一套渲染引擎(每家都有自己的一套统一代码)进行渲染。绑妆环节的常见错误某个三角面片的点位顺序和整体相反按照统一顺序的面片叫做“正面”,反顺序的就成了“背面”。渲染环节有“背面剔除”原则,只渲染正面,背面不做渲染。因此“背面”区域会呈现皮肤的原色。跳点连接会导致有些面片重叠(互相重叠的,最终渲染效果依照最后渲染的那
2021-10-31 16:11:17 397
原创 【pytorch】ncnn
onnx转ncnn完整实现:def onnx2ncnn(self): assert os.path.isfile(simplified_onnx_path) os.system('onnx2ncnn {} {} {}'.format(simplified_onnx_path, param_path, bin_path)) print('\n param has been save to {}'.format(param_path)) print(' bin has
2021-09-22 01:03:19 337
原创 【pytorch】tensorboardX
关于自定义runs下为什么不能正常保存tb记录(一直为空)的原因,可以尝试把 SummaryWriter 的如下参数实时打印出来:self.logdir = logdirself.purge_step = purge_stepself._max_queue = max_queueself._flush_secs = flush_secsself._filename_suffix = filename_suffixself._write_to_disk = write_to_diskself.k
2021-09-22 00:52:51 162
原创 【pytorch】tnn
首先确保已经安装了tnn环境:onnx2tnn转tnn:def onnx2tnn(self): assert os.path.isfile(simplified_onnx_path) os.system('cd {}\n' 'python onnx2tnn.py {} -version=v1.0 -optimize=1 -half=1 -o {} -input_shape input:1,{},{},{}' .format(C.o
2021-09-22 00:49:08 1099
原创 【pytorch】dropout
在pytorch中,nn.Dropout(xx) 中的参数表示要丢弃的比例,和tensorflow的定义是反过来的。
2021-09-22 00:46:50 204
原创 【pytorch】onnx
pytorch任意形式的model(.t7、.pth等等)转.onnx全都可以采用固定格式:model_dir = './'pth_path = model_dir + 'A.pth'onnx_path = model_dir + 'A.onnx'batch_size = 1input_shape = (3, 112, 112)cfg = Config()cfg.load_from_file(args.model_cfg_file)model = PFLD_SE3_eval(cfg.mo
2021-09-22 00:45:26 435
原创 【pytorch】bn
bn接口定义:torch.nn.BatchNorm2d:def init(self,num_features,eps=1e-5,momentum=0.1,affine=True,track_running_stats=True)args:momentum:默认为 0.1 。要freeze的时候就设置为0.0(和 tf 里面是反着来的,tf是设置为1.0才能freeze)。rack_running_stats:计算running_mean和running_var(即mo
2021-09-22 00:41:14 701
原创 【pytorch】model
打印网络结构(不带节点名称):for ele in model.modules(): print(ele)打印named_parameters():for (name, param) in model.named_parameters(): if not param.requires_grad: print(name, param.data)几个主要api的区别:pytorch model.named_parameters() ,model.parameters(
2021-09-22 00:37:41 318
原创 【pytorch】freeze
freeze bn:把所有相关的bn设置为 momentum=1.0 。freeze 正常参数:先比较两个state_dict,来freeze交集:def freeze_model(model, defined_dict, keep_step=None): for (name, param) in model.named_parameters(): if name in defined_dict: param.requires_grad = Fals
2021-09-22 00:34:33 545
原创 【pytorch】tensor
import torcha = torch.tensor([1, 2, 3])print(a) # tensor([1, 2, 3])print(a.item()) # 会报错,因为 item() 只适配输出单个变量,无法适配list或者np.ndarrayprint(a.numpy()) # [1, 2, 3]
2021-09-22 00:30:11 151
原创 【pytorch】lr
scheduler唯一作用就是 改optimizer的lr 。所以scheduler可以弃用,自己写个函数来实时 optimizer.param_groups[0][‘lr’] = lr 即可。因此,虽然print lr有 optimizer.param_groups[0][‘lr’] 和 scheduler.get_lr()[0] 这两种形式,但是前者才是正道,后者只是借用scheduler调控optimizer的lr时,才附加送的便捷方式。...
2021-09-22 00:29:21 246
原创 【linux】服务器账户操作
新建账户目录sudo useradd -d /data0/jning -m jning切换到自己账户sudo su jning设置不再需要密码切换到root用户sudo -i 在ansible账号下编辑/etc/sudoerssudo vim /etc/sudoers 加入这句:jning ALL=(ALL) NOPASSWD:ALL 保存并退出。如果因为 readonly 无法操作成功,就用 :wq! 来强制保存退出。...
2021-09-17 01:54:04 182
原创 【linux】机器间互传数据
机器间互传数据(记住在始发机操作):tar -c <本地(始发机)文件地址> | ssh <用户名>@<目的机器> 'tar -xvf - -C <目的文件夹地址>'
2021-09-17 01:48:54 169
原创 【windows】压缩 / 解压
安装推荐使用7z,这个需要先额外安装好。压缩对若干文件打包压缩:7z a A.zip a.txt b.txt c.txt 压缩文件夹:7z a A.zip f:/A/**压缩为 .tar.gzwindows下如何生成tar或gz压缩包通过界面操作:1.右键选择“tar”,生成 .tar 。2.将 .tar 右键选择“gzip”生成 .tar.gz 。(如果要切分成多个连续文件,则在分卷里面选择对应大小即可)3.解压时,记得先合并所有拆分的压缩小包,然后才能解压之: ca
2021-09-17 01:43:12 368
原创 【linux】大文件:拆分 / 合并
拆分例如拆分为若干个2G:cat A.zip | split -b 2G - A.zip合并cat A.zip.a* > A.zip
2021-09-17 01:31:03 324
原创 【windows】Xshell使用
配置1.新建会话属性:2.双击要选择的会话:3.填写登录的用户名:xxx4.输入密码:xxx传输文件local 向 server 上传文件:rz local 从 server 下载文件(文件夹下载不了,必须打包):sz ...
2021-09-17 01:26:25 444
原创 Tmux配置
配置tmux.configvim ~/.tmux.conf 贴入:set -g @plugin 'tmux-plugins/tpm'set -g @plugin 'tmux-plugins/tmux-sensible'set -g @plugin 'tmux-plugins/tmux-resurrect'set -g @continuum-restore 'on'run '~/.tmux/plugins/tpm/tpm'set -g default-shell /bin/zshset
2021-09-17 01:21:45 361
原创 【linux】配置cuda
去 /usr/local/ 下查看cuda安装现状配置cuda路径:vim ~/.bashrc写入:export PATH=/usr/local/cuda-9.0/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH使生效:source ~/.bashrc
2021-09-17 01:05:51 458
原创 【mac】配置 rz / sz
服务器端安装指令包需保证rz、sz指令可用。若还未安装,执行:yum -y install lrzsz本地Mac端安装指令包需保证rz、sz指令可用。若还未安装,执行:复制终端代理命令黏贴进iterm2,可以借用代理来加速安装。brew install lrzsz拷贝脚本把以下两个 .sh 文件拷贝到 /usr/local/bin/ 下:iterm2-recv-zmodem.shiterm2-send-zmodem.sh修改sh脚本如果是在mbp
2021-09-15 00:56:22 500
原创 【python】修改进程优先级
import psutilimport osvip_process_num = <指定最大的生效进程数,例如:1000>counter = 0for proc in psutil.process_iter(): if (proc.name()=='<指定进程名称,例如:python>' and proc.username()=='<指定用户名>'): counter += 1 if counter <= vip
2021-09-15 00:34:47 1935
原创 【python】multiprocess:传递参数
如果需要往多进程传递的参数只有一个,则需要在该参数后面加上逗号:pool.apply_async(self.get_url, args=(name,), callback=update)
2021-09-15 00:30:37 718
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人