聊聊交互设计师的成长

关于交互设计师的成长,分享一些想法和经历:
1. 交互设计师应当具备的能力
如果我们简单的将用户体验领域涉及到的技能分为:用户研究、产品(概念/功能)设计、交互设计、视觉设计、工程技术,我认为任何一个交互设计师和视觉设计师等等,都应该具有整体的复合技能,只是哪部分更多哪部分更少的问题。
1) 用户研究:对于交互设计师,不具备基本的用户研究能力,无法吸收来自用户的「信息营养」,如何做出真正以用户为重心的设计呢?观察法、访谈法、问卷法、可用性测试、行为数据分析等等,这些基本的方法应该要有所掌握。
2) 产品(概念/功能)设计和交互设计:这方面不必多说,交互设计师必须有大局观,能够真正的理解产品的思路和方向,从交互的角度实现产品层面的意图。这也是很多交互设计师转向产品设计师、产品经理的原因,在很多方面有交叉。
3) 视觉设计:视觉设计是很多交互设计师的软肋,常常无法忍受一些交互设计师做出的没有美感的文档。现在,特别是在移动互联网的设计领域,交互和视觉往往是高度交叉的。交互会影响视觉,视觉反过来也会影响交互。对于一个交互设计师,在做交互设计师,脑海中就应该浮现出视觉的轮廓,为视觉设计留下能够发挥的空间。另外,交互设计师一定要有很好的视觉设计的感觉,知道如何判断好的和不好的视觉设计。像素眼(能够通过肉眼分辨出一像素的差别)至少要具备吧?
4) 工程技术:交互设计往往直接对口工程开发,对工程技术的理解不可或缺。其实所谓了解技术,并不是一定要能够立刻写代码。如果我们看看周围很多「懂技术」的人,可能已经很久没有自己写代码,但这并不妨碍他们对技术的把握。术业有专攻,对于交互设计师,真正要做的是理解技术可行性区间,知道在现有的技术下有哪些可能性,这需要不断的积累,包括系统的学习和不断向工程师学习。我自己在做 iOS 和 Android 的设计时,都读过相应的开发书籍,另外也会注意看新的产品,让自己的知识库更充实。以上是交互设计时所应具备的几方面的能力,在这样的前提下,交互设计师的成长,其实就是不断的提升自己在这些方面的能力。具体如何去学习,每个人都会有自己的途径,即使没有专门的老师来教(事实上这个行业早期的交互设计师主要都是自学),现有的各种资源也已经足够学习,同时还要注意实践。


2. 再大的热情也不如立刻行动
我在面试设计师时,发现一个问题,一些面试者会告诉我他们对这个领域多么有热情、多么看好,希望以后能够成长为一名优秀的设计师。这时候,如果他之前还没有过实践经验,我就会问,那么你都读过哪些交互设计师相关的书籍,很多时候,得到的答复让我很失望,寥寥无几。很多人只是读过一些网上的碎片化的文章就上战场了。现在市面上已经有非常多的和用户体验、交互设计有关的图书,在豆瓣上能搜到一堆的推荐,如果有热情,就付诸实施,在没有实践之前,先多去吸收营养。


3. 动态学习与快速学习
交互设计本身是多学科的领域,越是深入,就越发现多种学科知识的重要性。前两年我读的比较多的书是建筑设计、城市规划等等方面的书籍和资料,因为发现一个交互设计师和建筑设计师在很多方面是相通的,都需要处理人和物的关系,甚至很多方法也是可以通用。现在阅读的范围更杂,社会学、技术思想等等,都能对平时的设计工作起到间接的帮助。自学能力非常重要,如果你需要研究数据,却缺乏统计学方面的知识,怎么办?很简单,找点资料学习就可以,需要用什么就学习什么。


4. 成为 Geek
交互设计师本身需要是超级用户,这意味着需要大量的、甚至疯狂的用相关领域的各种产品,让自己沉浸到产品里面去。例如,对于移动互联网领域的交互设计师来说,手机里没有几百应用、或者没有不同平台的手机,都是不正常的。我遇到的一些朋友追求简单的生活,并不希望被科技所左右,这没有错,但是作为交互设计师,这是工作,这是修炼,这是成长中必须的。量的积累非常重要。我的一些朋友,见面时坐在一起都习惯拿对方的手机看看里面有什么好的应用,对于好应用、好设计的敏感是一种职业习惯。我们做最美应用(这是广告吧),最开始就是这样的目的。


5. 超出用户与回到用户
掌握大量信息之后,还需要能够回到用户的视角。交互设计师永远不代表自己,而是代表用户,自己随时要化身为用户,动态切换。张小龙之前讲过类似的意思。对于交互设计师来说,超出自我很重要,当我们看一个产品时,应该能够很快找到交互的问题所在,而这些问题都不应该和我们自身的认知有关,而是同我们所采取的用户视角有关。当我们不断了解用户、不断积累领域经验时,我们会自己积累一些经验点,知道目标用户群会在哪些地方容易犯错,而我们要对这些地方高度敏感。对于交互设计师,去亲自做做用户研究非常有必要。当我们亲自做过几十个可用性测试后,对于用户会有非常切身的感受,通常都会发现,我们原本想象的用户行为很多都是错误的。有时仅仅是用观察法也很有用。我曾经在地铁上观察了上百名用户使用手机的行为,其实是非常简单的事,只要去做。


6. 重新学会写字与说话
交互文档需要清晰、易懂,文档本身应当具备很好的可用性(Usability)。能够写好 PPT 也非常重要,其实所有输出都需要设计,很多交互设计师能够做好设计,却做不出清晰、明确并且令人赏心悦目的 PPT,这实在不应该。交互设计师还应该训练自己有很好的语言表达能力,做出好的设计是一方面,另一半功夫是要让大家都知道这是正确的设计。


7. 学会「推动」
交互设计师需要和团队中不同的角色和协同配合,想要真正做好工作,不仅仅是做好自己的输出,还要能够推动各种资源去做事情,当然前提必须是正确的事情。这和具体的团队有关,有的团队这种工作大多由产品经理承担,而有的团队则需要交互设计师自己去做(例如我在过的团队几乎都是同时做交互设计师和产品经理),这时沟通能力、知识面(例如对技术的了解)甚至是毅力会非常重要。以前合作过的工程师,某一次向别人介绍我们,说这是他见过的最「残忍」的设计团队…当然最终成果也很理想。


8. 和团队其他成员的同理心


好的交互设计师,都有不错的气场,能够被团队的其他角色所信任。这种信任,其实是建立在长期的声誉积累之上。交互设计师和开发工程师的合作往往很多,有一个非常重要的原则,就是珍惜工程师的劳动。


一个简单的设计,可能意味着做开发的兄弟要加班很久,所以问题来了,这个设计是好的么?有没有替代的设计,能够让工程投入的性价比最高?我在做设计时经常会和做开发的兄弟们一起讨论,询问设计方案可能的开发工作量,然后深入的弄清楚具体哪一点的投入大,我们有没有办法去绕过。和我合作过的工程师加班是必须的(因为总是想做出更好的东西),但是我会尽量确保他们的工作都不是无意义的。曾经在某企业,和我合作过一个项目的工程师做完就升职了^_^ 互相都开心,这对于大家也是一种回报。


但是当然,交互设计师自己的素质要够强,能够了解门门道道。有一次,我请一个做开发的兄弟实现一个设计,兄弟可能工作太多,直接和我说这个实现不了…我就说了一句话“你蒙我”。然后兄弟就回去考虑了,过了一会回来说“我刚才蒙你了...想清楚了,能做啊”(当然大家都是玩笑,团队内的感情很重要,互相在原则问题上要非常信赖)。


9. 找一个好项目,一个好团队


交互设计师非常依赖具体的项目和团队,没有好的机会,自己再使劲也不出来。这些项目应当是能够给交互设计师充分发挥的空间。而好的团队,必须要重视交互设计的作用。在行业当中,其实很多企业并不重视交互设计,或者是并不真正了解交互设计,没有足够的支持,这里面的机会成本需要设计师好好衡量。


10. 细节与理想主义者
交互设计师(实际上所有设计师)都需要关注细节,带给用户哪怕一点点改进,都应该让我们感到快乐。当然这需要处理好优先级,将好钢用在刀刃上,优先改进那些最重要的部分。只有理想主义者才能做好设计!每时每刻,我们都坚信,创造更好的体验,是我们的使命。无论遇到多少困难,我们都会尽最大努力去创造一个「更美」的产品。


本文来自UI中国,作者:马力(微信公众号:可能性与大设计)

<think>好的,我现在要处理用户关于Android 12中RKNN开发配置和使用教程的问题。首先,我需要回顾用户提供的引用内容,看看是否有相关的信息。 用户提供了三个引用。引用1提到了RKNN Model Zoo和RKNN Toolkit2的环境配置,包括安装Miniconda3。引用2是关于系统镜像下载,特别是Ubuntu 22.04版本和导出ONNX模型。引用3讨论了RV1808/1126使用RKNN作为MediaPipe推理后端的步骤,包括配置参数如use_rga、use_mmap和data_type的设置,以及反量化的处理。 用户的问题集中在Android 12上,所以需要将引用中的信息与Android系统关联起来。引用3提到了MediaPipe和RKNN的集成,这可能适用于Android开发,但需要确认是否支持Android 12。此外,RKNN Toolkit2的环境配置可能在不同平台上有所不同,用户可能需要针对Android进行调整。 接下来,我需要考虑Android开发中RKNN的一般步骤,比如环境准备、模型转换、集成到Android应用、配置参数和性能优化。结合引用中的信息,模型转换部分可以参考引用2提到的导出ONNX模型,然后使用RKNN Toolkit转换为RKNN格式。引用3中的配置参数(如use_rga、use_mmap、data_type)可能在Android中同样适用,但需要查阅相关文档确认。 可能还需要指导用户如何将RKNN库集成到Android项目中,比如添加依赖项或NDK配置。此外,性能优化方面,引用3提到的反量化处理可能需要特别注意,尤其是在Android设备上的实现。 最后,确保回答结构清晰,分步骤说明,并引用提供的资料。需要验证引用中的信息是否适用于Android 12,例如系统镜像是否支持,或者是否有特定版本的要求。如果某些步骤在引用中没有明确说明,可能需要提示用户参考官方文档或社区资源。</think>### Android 12 RKNN 开发配置与使用教程 #### 1. **环境准备** - **系统镜像与工具链**: 根据引用[2],建议使用Ubuntu 22.04作为开发环境,并下载Orange Pi 5 Pro等支持RKNN的硬件镜像。对于Android 12开发,需确保RKNN Toolkit2适配Android NDK版本(推荐NDK 21+)[^2]。 - **安装RKNN Toolkit2**: 参考引用[1],通过Miniconda3配置Python环境(建议Python 3.8),并安装RKNN Toolkit2以支持模型转换与推理。命令示例: ```bash pip install rknn_toolkit2 ``` #### 2. **模型转换(ONNX转RKNN)** - **导出ONNX模型**: 使用PyTorch或TensorFlow等框架导出模型为ONNX格式(引用[2])。 - **转换为RKNN格式**: 编写RKNN配置文件(`config.yml`),指定输入尺寸、量化方式等参数。示例代码: ```python from rknn.api import RKNN rknn = RKNN() rknn.config(target_platform='rk3568', mean_values=[[127.5]], std_values=[[127.5]]) rknn.load_onnx(model="model.onnx") rknn.build(do_quantization=True, dataset="dataset.txt") rknn.export_rknn("model.rknn") ``` #### 3. **Android项目集成** - **添加RKNN库依赖**: 将编译好的RKNN动态库(`librknnrt.so`)和模型文件(`model.rknn`)放入Android项目的`jniLibs`目录。 - **JNI接口开发**: 通过JNI调用RKNN的C/C++ API实现推理。关键配置参考引用[3]: ```cpp #include <rknn/rknn_runtime.h> rknn_context ctx; int ret = rknn_init(&ctx, model_path, 0, 0, nullptr); ret = rknn_inputs_set(ctx, input_num, input_attrs); ret = rknn_run(ctx, nullptr); ret = rknn_outputs_get(ctx, output_num, output_attrs, nullptr); ``` #### 4. **关键配置参数** - **use_rga与use_mmap**: 根据引用[3],若Android设备不支持硬件加速(如RGA),需将`use_rga`和`use_mmap`设为`false`。 - **数据量化类型**: `data_type`可选`uint8`或`fp32`。若选`uint8`,需手动实现反量化;若选`fp32`,RKNN会自动处理[^3]。 #### 5. **性能优化** - **多线程推理**: 利用Android的`ThreadPoolExecutor`并行处理输入数据。 - **内存优化**: 启用`use_mmap`(若支持)减少内存拷贝开销,或通过零拷贝技术直接操作物理内存。 #### 6. **调试与验证** - **日志输出**: 启用RKNN的调试模式(`RKNN_LOG_LEVEL=DEBUG`)查看详细运行信息。 - **性能分析**: 使用`rknn.query(RKNN_QUERY_PERF_DETAIL)`获取各层耗时,针对性优化模型结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值