初识Android | 青训营笔记
这是我参与「第四届青训营」笔记创作活动的的第9天
端智能
- 定义:
- 端智能(On-Device Machine Learning)是指把机器/深度学习算法模型应用和部署到端设备上,这里“端设备”是相对于云服务而言的,可以是手机,也可以是物联网IoT设备。 (as:抖音换装特效、离线文本识别、肢体检测、手势识别....)
- 优势:
- Latency:低延迟、实时性高
- Privacy:保护隐私
- Power:端设备算力越来越强大
- Offline:可离线
- Low Cost:低成本
- 端云协同:端智能并不是云智能的替代,是云端机器学习的延伸,是要结合云和端各自的优势,在云端之间合理分配任务以获取问题最优解。
- 学习框架:
- Google:Tensorflow Lite、ML Kit
- Meta:PyTorch Mobile、PyTorch Live
- Apple: CoreML
- 腾讯:NCNN、TNN
- 阿里:MNN
- 百度:Paddle-Lite
- 华为: HiAI 、ML Kit
- 小米:Mace
- 其他:字节(ByteNN、Pitaya),快手(KwaiNN、Ykit)……
- 设计步骤:
- 首先,提出问题和方案:问题描述和定义->设计机器学习解决方案
- 然后,训练AI模型:数据收集->模型设计,模型训练->模型压缩,模型转换
- 最后,AI模型在移动端部署应用->拿到需求结果。
性能优化
- 定义:
性能优化,简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。
- 主要目标:
- 快:最快显示效率、最快网络速率、最快UI响应
- 稳:最佳用户体验,减少强打断
- 省:最低存储、最低功耗、最低流量消耗、最低计算资源
- 广义分类:
- 流畅度、资源、稳定性、系统级
- 流畅性优化基础介绍:
卡顿优化:减少布局嵌套层级,相同层级使用性能更好的布局。绘制优化:避免过度绘制,不要给View设置不必要的背景(其他无用属性也应该避免),避免过多的层级嵌套....启动速度优化:避免在Activity生命周期中进行耗时操作
- 资源优化基础介绍:
最大化资源调度:满足快,我们需要在网络、渲染等领域提供更多的资源;满足多,深度剖析系统资源使用,需要从系统层榨取更多的可用资源。最小化资源使用:保证业务基本面的前提下,通过降级或者优化等手段,将占用的资源做到最小。
- 稳定性优化基础介绍:
内存优化:页面销毁时,移除多余数据...网络优化:初始界面接口划分合理,减少网络请求时间....电量优化:网络请求时,先判断网络状态,并设置合理的超时时间,避免一直在后台等待数据....
- 系统级优化基础介绍:
安装包优化:移除无用代码、资源、删除无用功能.....
- 性能优化检测工具:
- Layertool
- CPU Profiler
- TraceView
- Systrace
- Battery Historian