Month: February 2024

  • 视觉生成式AI技术简介及可能的应用创新点

    最近几年生成式AI(generative AI)的技术很火,和人类的大脑类比,生成式AI类比于人类的文档撰写,绘画设计和视频制作等,好的AI技术可以服务人类,将人类从一部分的工作中解放出来,去做更有创造性和创新型的事情。这里简要阐述一下视觉生成模型技术的一些技术思路,不正确的地方欢迎批评指正。 在图像生成方面,生成式AI经历了几次技术方案的迭代,从VAE,GAN,到diffusion models,效果越来越好,而且已经在视频生成领域取得了很大的技术进步,如最近的sora模型,效果好,是最近很热门的话题,小视频的介绍也有不少。图像生成都是从一个二维的随机高斯分布的image作为输入,通过模型的计算得出最后生成的模型,生成的结果的多样性在于输入中高斯输入的随机性以及训练数据的多样性。独立高斯分布可以理解为输入中的每一个像素点的值服从高斯分布,每一个像素点可以理解为图像中对应位置特征的值,不同点的独立高斯分布作为输入说明每一次输入的对应特征不一样,从而会带来丰富多样的结果。从随机的输入(根据训练集的特性随机效果的生成)或者再加上有意义的prompt生成满足特定场景的视觉效果。 1、VAE,VAE生成式算法主要是生成一个隐空间(latent space)假设隐变量服从高斯分布,而且尽可能的接近均值为0,标准差为1的标准正态分布(可以通过KL loss进行约束)而且在VAE中,隐变量的值也是通过训练集中数据的输入通过网络计算得出的,从数据输入到隐空间的计算相当于一种编码器,然后隐空间经过解码器恢复到原始数据空间。在生成的时候可以通过随机生成器生成隐空间的数据后再decode即可; 2、GAN,一度非常火热的算法,根据高斯随机分布的输入数据或条件数据通过生成网络和判别网络间的相互博弈交替训练去动态生成。大概轮流交替训练过程如下:(1)、先训练生成式网络,生成网络的loss,以及生成的结果在判别网络中的输出为true为ground truth;(2)、然后训练判别式网络,将生成网络的结果(fake)在判别网络中的输出为false为ground truth,而真实的数据在判别网络中的数据结果为true。具体一点的说明为:在训练生成式网络阶段(判别器网络参数固定),判别器尽可能将任务生成的结果判别为真实的,并且满足生成的条件(如条件生成,如风格迁移等),而在训练判别式网络阶段(生成式网络参数固定),判别器尽可能将生成网络生成的结果判别为fake,而真实的数据结果判别为true,这样在生成网络训练过程中,生成的结果越来越和真实的接近,生成的能力越来越强,而且判别式网络训练的过程中,生成的结果和真实的结果尽可能区分开,判别式网络的能力越来越强,这样不断的在生成网络和判别网络相互不段变强博弈的过程中,最后达到判别器网络”真假不分”的状态,也就是判别器区分不了是ground truth还是生成器生成的结果。 3,diffusion models,采用迭代的去噪过程,从原始的高斯随机数据一步步去噪生成结果的图像数据,数学推导比较繁琐,可以参考引文。其中stable diffusion models在图像生成领域是一个里程碑式的结果,其首先将图像用VAE模型将其转换到隐空间,然后在压缩后的隐空间进行模型的训练,并根据transformer的kv特性将条件prompt进行(CLIP进行text encoding)融合,从而实现文生图的功能。最近的sora的原理没有看到,但感觉应该是二维图像空间的扩展,据说也是在隐空间进行的训练。具体细节以后有机会再去详细了解。 最后总结畅想一下,未来视觉生成领域的可能创新和进步:(1)、条件视觉生成,这个可以用来一致性视觉生成的实现,如现在生成一段文字描述的视频,其中的人物或场景能否提取作为条件作为后续文字的背景条件生成?如果可以实现,生成长剧本的影视场景倒也是有可能的;(2)、多模态生成,影视短视频中视频加语音混合生成,比如人说话,或者和环境交互产生的动作和语音效果;(3)、可编辑式视频生成,生成的视频可能大部分满足自己的要求,但有些内容和场景需要进一步去编辑调整,可以通过文字表达的方式,也比如基于视频的control net的约束生成实现。 References

  • 云计算专业企业实践(一)-技术概要了解

    今天上午去浦东参加了合作企业的实践活动,合作企业位于浦东软件园,今天去的是他们的一个楼层,一层楼敞开的大空间里坐了好几百办公人员,沟通起来倒也方便,将这么多人组织起来去行动劳动创造数字化产业的市场价值,企业的组织者们也应该也是挺有成就感的吧。 今天是第一次参加企业实践活动,一起讨论了近一个半小时,初步定下来后续一周要去一两天去进行工程实践,给定一个云计算平台搭建的完整任务,可以从服务器的布置和组网,交换机之间的网络连接,原生操作系统的安装,到openstack的安装和部署,云存储模块的搭建(对象存储,块存储等),到上层的容器,k8s的搭建部署,以及云平台的监控等。这些技术内容涵盖云计算技术的方方面面,对于云计算专业的实践老师来说,这些技术的实践技能基本都是需要掌握的。 简单梳理一下相关技术概念,还不是特别的详细,期待后续有更多的实践经验记录。 1、云存储,ceph云存储技术,可以实现块存储(虚拟机里边的硬盘块这种容量比较大的存储),对象存储(通过URL实现访问)和文件存储,不同种存储方式存储协议不同,对象存储一般为bucket和object两级结构,文件存储一般为类似于nfs(network file system)和windows里边的共享文件的形式。存储模块中也要对存储机制的背后原理要有所了解,如crush算法等。 2、openstack云计算平台,openstack由很多个组件组成,对每个组件要有比较详细的了解,有些模块如管理界面等都可以进行二次开发来丰富其功能。如用户(租户)管理组,怎么管理局域网和公网等,openstack的源码中外围的管理界面等模块由python实现,其他的核心模块由c/c++实现。 3、云平台的物理服务器的功能分配,有计算存储融合在一起的搭建方式,也可以有专门的计算节点和存储节点,具体的组件方式到时候要看实践经验去总结,哪种性能更好更稳定。以及考虑云平台的备份功能,集群节点数的设计也要需要考虑。 4、容器,k8s等相关PAAS平台工具和框架,以及devops,cicd等研发和运维持续集成和部署等上层的工具和应用也是后续需要进一步熟悉的内容。以及算力平台的需求,GPU异构芯片的加入,使得网络配置(如InfiniBand 网络)和调度方法都会有不同。 云计算平台的优势是资源利用率高,管理方便等。和企业的相关合作,通过项目制的方式来熟悉掌握相关技术,是数字化时代对技术教育和学习的一个很好的方法和途径,感谢企业的支持,期待后续的合作中能够有对云计算平台技术栈有更深入的认识,更多的收获,也会及时将感受感想和学习到的经验分享给大家。 References

  • 嵌入式开发相关概念知识系列(一)-硬件基础知识和开发环境

    嵌入式开发是个比较大的宽泛的应用开发范畴,有基于智能家居物联网的嵌入式应用,也有车载嵌入式芯片这种功能较为庞大复杂的应用。宽泛源于实际应用需求的多样性带来的所需计算设备的多样性,下面就计算设备和开发环境的相关知识和概念做一下说明和归类,有的内容不一定完全正确,欢迎批评指正以便后续进行勘误。 1、指令集:几种常见的cpu架构和指令集的关系如下:(1)、intel x86架构,CPU可能实现了多个指令集x86,x86-64,MMX,SSE,SSE2,SSE3,SSSE3 ,而这些指令集中的指令让cpu完成的动作都比较复杂,所以也称为CISC(Complex Instruction Set Computers 复杂指令集);(2)AMD amd64架构的cpu 兼容了x86指令集还拓增了3D-Now!指令集,用于加强对3D显示的支持。(3)ARM ARMv1~ARMv7架构的cpu实现了Thumb指令集和ARM指令集。这些指令集中的一条指令让cpu完成的动作都比较简单,所以也称为RISC指令集(Reduced Insturction Set Computers 精简指令集)。(4)Atmel AVR系列是一种基于改进的哈佛架构、精简指令集(Reduced Instruction Set Computing, RISC)的微控制器,Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。在此需要注意的是处理器架构和指令集架构的区别。我们常用的嵌入式设备开发板有:(1),基于arduino硬件的微控制器的应用,arduino的开发板作为优秀的硬件开发平台,在嵌入式开发中经常会用到;(2)基于Cortex-M0为32位、3级流水线RISC处理器,其核心仍为冯.诺依曼结构,是指令和数据共享同一总线的架构。Kinetis® EA系列32位Arm® Cortex®MCU广泛适用于质量要求和长期供货保证要求都很高的汽车和工业应用。(3)soc片上系统,是为特定的功能设计的完成特定目标功能的系统。 2、单片机和计算机:单片机和CPU是包含关系,单片机通过超大规模集成电路技术将处理器CPU、随机存储器RAM、存储器ROM、输入输出和中断系统、定时器/计数器等功能集成在硅片上。(主要分为CPU、硬盘、内存、主板四部分)单片机主要应用于嵌入式系统,如智能家居、工业控制、汽车电子等领域,因为它们小巧、低功耗、高可靠性。计算机采用存储器与处理器分离的硬件架构,其中存储器与处理器由不同的芯片实现,并通过总线进行通信。而soc是片上系统,是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。如nvidia的orin soc系统就是基于智能驾驶系统及应用构建的片上系统。 3、开发环境:(1),支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件的keil mdk集成开发环境,包括行业领先的ARM C/C++编译工具链等;(2)、arduino集成开发环境Arduino IDE;单片机通常不具备操作系统。简单来说,单片机是一种集成了微处理器、内存、输入输出和其他外设的微型计算机系统。它通常被用于嵌入式系统中,用于执行特定的任务,如控制和监控设备。由于资源有限,单片机通常使用裸机编程,即直接编写和操作硬件的程序,程序员直接管理硬件资源和任务调度,实现输入输出、数据处理、控制等功能,而不依赖于操作系统。上述的IDE编译的程序会烧制到开发板直接启动程序运行。至于带有操作系统的soc甚至异构多核soc上面的开发,一般也会提供专有的开发环境工具实现程序的编写,调试和烧制。 References

  • 沟通协作和管理

    每个人对这个世界的理解千差万别,人类的认知差异和多样性使得人类的个性化特征显得那么特殊。人们是否能够完全相互理解,或者能够相互理解多少都是因人而异的,科学的语言相对来说比较严谨,二义性比较少,如果都能理解,那么理解基本是同质的。但是人们日常的语言交流和交互则因文化背景,个人认知状态和成长背景都有关系,真正达到完全的同理心很难,我们要做的就是在独处的时间外,在和别人交往的过程中尽可能的理解别人,站在别人的认知状态,性格和对事物的理解的基础上进行理解,这样相互之间的沟通交流和处事都相对比较顺利。 团队的协作是建立在良好的相互理解和自我承担中才能达到较好实现,协作就像工厂车间的流水线上的工人,任务之间能够顺畅的衔接起来,形成高效的并行执行的流水线,也可以和分布式计算机相比拟,一个团队就是一个计算集群,实现高效的通信和并行执行,才能够更好的协作。 现代社会,管理能力越来越凸显重要,很多程式化的工作后面将会陆续被AI取代,而管理性的工作则是一门综合性的学问,是多学科的融合和创新,管理需要有良好的沟通,团队之间的交流沟通使得整体的意图能够较好理解;同样管理也需要搭建好的协同工作氛围和环境,使得整个团队这个“大集群”能够实现1+1>2的功能。 管理不仅仅是指管理一个团队,也包括个人的管理和家庭的管理。每个人都是自己这个创业公司的CEO,也是家庭里的管理成员,leadship development is character development, 领导力的培养和发展是个人人格逐步完善进步的培养和发展的过程。每个人都是团队的成员,也承担了整个团队职能的部分管理工作,而不仅仅是单纯负责机械执行的机器人,因此也要考虑怎么在团队中发挥更大的正能量,做出对整个团队有利的高效发展的事情。

  • 开学季

    时间过的挺快,一晃寒假就结束了,迎来了新学期,希望自己也能在新的一年里有新的气象,更好的表现,做更好的自己,更好的利益他人。 首先在为人处事上,第一表现在心态上,保持乐观向上的心态,心态的重要是特别明显的,古时有阳明心学,现在有积极心理学,可见乐观的积极的稳定的情绪和心态对一个人的成长经历轨迹是多么的重要;第二表现在和人的关系相处上,能有更好的同理心,站在别人的角度去理解和利益他人;第三表现在更安静和丰富的独处以及与他人处事的能力,不急不躁,静而不争,做好自己的事。 其次在工作任务上,除了做好课程教学外,做好工程项目,做一点有意义的研究都是值得去好好实践的,希望自己能有更多的技术和相关领域的知识积累,不断丰富自己对这个世界的理解,保持不断的进步,学如逆水行舟,不进则退。 人是一切社会关系的总和,可见人是群体性的智慧物种,要对得起每一个角色,就要知晓每个角色中自己所承担的责任和义务,并且通过合理的分配精力去做好每个角色,虽是一件不容易的事情,但也要尽力去做好,不辜负时光和期待。 新学期,加油!

  • 云计算专业发展的一点思考

    学校申请下来了云计算专业,而且有三年制和五年一贯制两个班级,怎么更好的去设计教学内容和规划,是需要用点心思去考虑而且要在过程中有好的执行的。 首先,要有比较好的教师队伍,职业学校的同学们基础不是特别突出,老师对专业的知识和技能更要有好的理解和掌握,才能将相关知识点内容深入浅出的介绍给同学们。特别是技术技能方面的专业,老师们的特长不仅仅在于表达,而且要有较为熟练的动手实践和解决相关专业问题的能力,这样才能更接地气的将工程类的课程传授给同学。 其次,也要有好的课程设计,特别是实践类的课程,知识点的罗列讲解,同学们接受的知识也可能是零散的记忆,怎么将知识技能点串联起来并通过项目的形式进行具体化,通过项目实践中碰到的问题去触发知识的进一步理解和掌握并解决问题,也是不错的课程设计,将知识点和实践进行紧密结合,学以致用。 再次,要考虑产学相结合,有机会能将同学们的实践和相关企业的需求相结合,锻炼同学们切实解决实际应用中的需求问题,以问题驱动锻炼动手实践能力,比较适合较为高年级的同学们在实习和毕业设计阶段去拓展相关专业能力。 也可以考虑到时候建立一个社区,同学们可以在社区相互讨论问题,不仅仅是老师的一带多,这样精力也许也吃不消,同学们之间也可以在社区养成互相帮助协作解决问题的良好氛围,锻炼团队友好合作的能力。 教学过程和软件过程管理也有相似之处,要对同学们的学习积极性,效果等状态进行记录和跟踪,并适时的进行调整和督促,动态去掌握每个同学的学习情况,针对每个同学的特殊性进行个性化教学,最终实现同学们整体的学习效果有好的表现,尽可能使得同学们在学校养成良好的工程师的思维方式和素养。

  • 新时代的教育

    这两天看到了数字化教育的国际大会的新闻消息,也看了下制作的微型纪录片,拍的挺好的,遂记录一下相关的信息和感想。 1、数字化教育可以在全世界共享优秀的教学资源,著名学校的明星老师的课程是值得广泛传播的,我记得比较清楚的是MIT的教授线性代数课程的老教授,他的课程娓娓道来,线性代数的推导过程以及空间含义解释的清晰有序,更容易理解和接受。好的中小学课程资源可以在更广范围共享和传播,特别是不发达或欠发达地区的教育,有了好的资源是孩子们相比他们的父辈们实现跨越成长的更好的支撑; 2、新型发明的电子设备可以采集同学们的各种信息,如云笔可以记录同学的作业答题情况,电子手表或相关设备可以记录同学的运动状态,从而方便分析同学们的体育锻炼的情况;更多的或可以再发明出的电子设备可以在德智体美劳各方面发挥作用; 3、数字化教育也可以用在特殊教育上面,每一个人都应该享有好的教育,因材施教或因个人特殊情况而享有特殊的教育条件,使得每个人的成长都得到合理的关注,发展和尊重; 4、职业教育是新时代数字化教育的新要求,信息产业从早期的PC到互联网再到AI,技术的不断进步使得各种产业都在随着技术发生着巨大的变革,当前智能制造,无人车间以及黑灯工厂等先进的工业生产,以及智慧有机农业等产业不断创新和发展,数字化技术中的人工智能,万物互联的物联网,机器人技术等都存在着需要专业性要求比较强,技能专业的新需求,职业教育的发展能够更快的向社会输送这些专业性的技术技能人才; 5、更广的国际合作,当前国际关系比较复杂,竞争对立的形势需要去改变,打破隔阂更好的合作,实现不同国家的人们更好的合作协同,更好的数字化教育可以作为更好国际合作的桥梁,不同国家的同学可以通过网络,元宇宙等技术建立更广泛的链接,从他们的小时候就可以生活在更宽阔的地球环境中,相互友好合作的基因自然就能够逐渐更好养成。 今天农历小年,祝大家小年快乐,生活越来越美好! References