Stability AI 公司在上个月 19 号推出了 Alpha 版本 StableLM 大语言模型,包含了 30 亿和 70 亿参数,并且支持商用。如今他们再次推出了 AI 图像生成平台 StableStudio,这可是距上次大开发仅过去一个月啊!
该平台是 DreamStudio 开源版的实现,目前可以在线完成 AI 图像生成、编辑、修复工作,未来还将新增 AI 聊天机器人、插件系统、桌面应用、WebGPU 本地推理、ControlNet 工具等新特性,让人期待不已。
GitHub:http://github.com/Stability-AI/StableStudio
自 2020 年离开 OpenAI 团队后,Stability AI 的创始人 Emad Mostaque 一直致力于开源开放的理念,推出了多款 AI 开源模型。其中最广为人知的是文本生成图像模型 Stable Diffusion。
近几个月,Stability AI 持续不断地进行开源,这也让许多网友大呼过瘾,称其为"真正的 OpenAI"!
该项目的安装与使用也比较简单,下面讲下具体安装流程。
首先,克隆该项目到本地,并进入文件夹:
git clone http://github.com/Stability-AI/StableStudio.git
cd StableStudio
然后安装 yarn 依赖,并运行本地服务器:
yarn
yarn dev
项目运行成功后,在网页访问地址(端口默认为 3000):localhost:3000
然后,你便能看到如下所示界面:
到这一步,证明项目已成功部署。
如果要使用 AI 绘图功能,你需要配置下 DreamStudio API Key。
DreamStudio 是 Stability AI 旗下的一个 AI 图像生成平台,每个新注册的账户,会赠送 25 个积分。
PS:1000 个积分价格是 10 刀,可生成大约 5000 次图像。
DreamStudio 账号注册也比较简单,你可以直接使用 Google 账号授权登录:
登录地址:http://dreamstudio.ai/generate
成功注册登录后,到设置页面复制 API Key:http://dreamstudio.ai/account
复制成功后,再去到 StableStudio 设置页面,将 Key 填入页面底部的输入框:http://localhost:3000/settings
然后,你便可以在 Prompt 输入框中填写提示词,愉快的使用 StableStudio 了。
图像支持动漫、电影、朋克、科幻、像素艺术等多种风格,点击 Style 按钮即可展开查看。
StableStudio 默认用的是最新的图像生成模型 Stabile Diffusion XL (SDXL),一个为企业客户打造的最新图像生成模型,擅长生成更加真实的照片级图像。
SDXL 能够产生比其前身 Stable Diffusion 2.1 更为详细的图像和构图,并具备以下功能:
除了基于文本生成图像,SDXL 还支持图生图、图像修复、图像风格扩展等功能。
目前该模型还是 Beta 阶段,等功能完善后,会在 GitHub 开源。
Stable Diffusion XL is currently in beta on DreamStudio and other leading imaging applications. Like all of Stability AI’s foundation models, Stable Diffusion XL will be released as open source for optimal accessibility in the near future.
AI 绘画技术的进步已经让我们看到了许多惊人的成果,比如不需要任何绘画背景的人也能创作出高质量的艺术作品,或者是可以根据用户提供的照片自动创作出艺术作品等等。
由此可见,未来 AI 绘画技术的应用将会越来越广泛,不仅仅是在艺术创作领域,还会涉及到许多其他领域,比如设计、室内装修等等。
随着 StableStudio 的开放,未来 AI 绘画平台的搭建成本将会急剧下降,这将为更多的科技公司、个人创作者以及艺术机构提供机会,推动 AI 绘画技术的应用和发展。
每个人都可以轻松地使用 AI 绘画平台进行创作,并且可以将自己的想法和创意通过 AI 画作呈现出来,这将会是一个充满创意和想象力的时代。
此外,随着 AI 绘画技术的进步,还会涌现出更多的 AI 绘画工具和软件,这些工具和软件将大大提高 AI 绘画的效率和质量,并且为更多的人提供更加便捷、高效、低成本的 AI 绘画服务。
最近几天,我深入了解了不少关于 ChatGPT 的干货内容。
为了方便自己后续学习与阅读,便整理了一些 ChatGPT 玩法技巧和实用工具,最终弄成了这么一本《玩转 ChatGPT》手册,有需要的同学,可以学习下。
手册地址:玩转 ChatGPT 手册,正式开放!
参考链接:Java多线程ThreadPoolExecutor是JDK并发包提供的一个线程池服务,基于ThreadPoolExecutor可以很容易将一个Runnable接口的任务放入线程池中。 ThreadPoolExecutor的构建参数: publicThreadPoolExecutor(intcorePoolSize, intmaximumPoolSize, longkeepAliveTime, TimeUnitunit, BlockingQueue<Runnable>workQueue, RejectedExecutionHandlerhandler){ this(corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue, Executors.defaultThreadFactory(),handler); } 1.参数解释corePoolSize
简介Incomputing,internationalizationandlocalizationaremeansofadaptingcomputersoftwaretodifferentlanguages,regionalpeculiaritiesandtechnicalrequirementsofatargetlocale.术语i18n internationalization英[ˌɪntəˌnæʃnəlaɪ'zeɪʃn],国际化。 由于首字母"i"和末尾字母"n"间有18个字符,所以简称i18n。 internationalization指为了使应用程序能适应不同的语言和地区间的变化而不作系统性的变化所采取的设计措施。 l10n localization,本地化。 由于首字母"l"和末尾字母"n"间有10个字母,所以简称l10n。localization指为了使应用软件能够在某一特定语言环境或地区使用而加入本地特殊化部件和翻译后文本的过程。 locale:指语言和区域进行特殊组合的一个标志
一:直接报废1.事务代码:MIGO,(A07发货,R10其他,移动类型551O)2.输入物料、数量、工厂、供应商3.检查过账4.查看会计凭证得知,成本归结到待处理资产损益科目中。二、向成本中心发料1:从供应商分包库存调回中心库房事务代码MIGO(A08转移过账,R10其他,移动类型542),输入物料、接收工厂、库存地点,发出供应商、数量等信息2.向成本中心发料3:查看会计凭证得知成本归结到物料消耗-库存领料-半成品里面。三、直接盘点1:事务代码:MI10(无盘点凭证),输入工厂,选择特殊库存O(需要盘点凭证的盘点操作通过MI01,MI04,MI07操作,都需要选择特殊库存O)2:输入供应商、物料、盘点后的数量,保存过账3:查看会计凭证得知,成本归结到待处理财产损益里面
当我们在使用JavaScript时,有时需要用到setTimeout函数来强制代码延迟运行。比如:setTimeout(()=>{ ...代码... //这里的代码将延迟运行 },0);复制我很讨厌这样写代码,我希望它变得简洁,所以我们可以把setTimeout函数抽象成装饰器。首先创建一个timeout生成装饰器方法来简化我们的代码(TypeScript):functiontimeout(milliseconds:number=0){ returnfunction(target,key,descriptor){ varoriginalMethod=descriptor.value; descriptor.value=function(...args){ setTimeout(()=>{ originalMethod.apply(this,args); },milliseconds); }; returndescriptor; } }复制在typescript或者babel中装饰函数需要传三个参数:target:要么是被装饰函数的类的构造函数,要么是被装
计算机上的辅助功能主要是为残疾人士提供方便,可以在控制面板的辅助功能选项中设置也可以由API设置,所有辅助功能的设置主要由SystemParametersInfo来完成:BOOLSystemParametersInfo( UINTuiAction,//[IN]systemparametertoretrieveorset指定要获取和设置的功能 UINTuiParam,//[IN]dependsonactiontobetaken PVOIDpvParam,//[IN/OUT]dependsonactiontobetaken UINTfWinIni//[IN]userprofileupdateoption );复制这个函数主要是用来设置和获取操作系统的一些设置(大部分可以通过控制面板来操作).在这里主要介绍有关辅助功能的设置:SPI_GETACCESSTIMEOUT SPI_SETACCESSTIMEOUT: 用来获取和设置使用辅助特性的超时时间,所谓辅助特性的超时时间就是指从开启辅助特性到系统自动关闭辅助特性的这一段时间,当开启了辅助特性后,若在这个时间内没有键盘和鼠标的输入则系统自动将辅
selenium提供了我们add_cookie()方法来跳过验证码直接登录的方法。我们现在以博客园登录为例,现在博客园登录要拼图验证,比验证码还恶心。 先在网页打开到登录界面:打开这个登录页面以后,打开你的fiddler:点Removeall即可清除下面的信息。然后回到博客园登录页面进行登录操作,登录成功以后,进入fiddler查看: 找上图方框的Host地址。点击,然后看右侧的cookie:看下面Cookies标签,就是方框里面的内容,等号前面的是'name',等号后面的是对应的value。只需要加上'name','value','domain'三个cookie值就可以了。好,我们看代码:#coding:utf-8 fromseleniumimportwebdriver fromtimeimportsleep driver=webdriver.Firefox() driver.get("https://www.cnblogs.com/") driver.add_cookie({
学习《利用python进行数据分析》第三章IPython:一种交互式计算和开发环境的笔记,共享给大家,同时为自己作为备忘用。安装ipython用pip即可。ps.博主用的是win7系统,所以接下来的都是在windows系统下操作的。一.Ipython基础启动:开始菜单-输入cmd-回车-输入ipython初尝试二.Tab键自动完成在shell中输入表达式时,只要按下Tab键,当前命令控件中任何与输入的字符串相匹配的变量(对象、函数等)就会被找出来。ps.之前我发现我的ipython没有Tab键自动补全功能,tab键的功能是缩进。最后pipinstallpyreadline即可解决。下面这个例子,输入b.后按下<tab>键即可得到下图的结果。三.内省在变量的前面或后面加上一个问号(?)就可以将有关该对象的一些通用信息显示出来。这就叫做对象的内省。如果对象是一个函数或实例方法,则其docstring也会被现实出来。使用??还将显示出该函数的源代码。一些字符串配以通配符(*)即可显示出所有与该通配符表达式相匹配的名称。例如,我们可以列出Numpy顶级命名空间中含有“load”的所
[CQOI2017]小Q的表格 [题目链接] 链接 [思路要点] \[\begin{align} ans&=\sum_{i=1}^{k}\sum_{j=1}^kf(i,j)\\ &=\sum_{d=1}^kf(d)\cdot\sum_{i=1}^{\left[\frackd\right]}\sum_{j=1}^{\left[\frackd\right]}[(i,j)==1]\cdotij\\ \end{align} \]令$$g(lim,x)=\sum_{i=1}^{lim}\sum_{j=1}^{lim}[(i,j)==x]\cdotij$$,则\(ans=\sum_{d=1}^kf(d)\cdotg\left(\left[\frackd\right],1\right)\) 不妨设\(lim\)已确定,并且此时\(g[i]=g(lim,i)\),考虑\(g[i]\)怎么求 运用莫比乌斯反演,设 \[G[i]=\sum_{i|d}g[d] \]则 \[g[i]=\sum_{i|d}\mu\left(\left[\fracdi\right]\right)G(d) \]而
最近vue项目路由改成了懒加载方式,刚开始并没有什么问题,清空项目文件,重新下载配置运行后,就发现控制台报以下错误: [vue-router]Failedtoresolveasynccomponentdefault:Error:Loadingchunk10failed. 刷新页面后,就不会再报错,思来想去应该使用路由懒加载后,组件加载异常导致的,但是究竟是什么原因,暂时不知,有知道的朋友可以留言。解决方案:VueRouter中有个错误处理函数onError,用于处理路由异常情况,请看说明: 渲染一个路由的过程中,需要尝试解析一个异步组件时发生错误。这种情况想来应该是符合咱们的错误情况,因为刷新页面后,就不会报错,所以假设错误预想成立,那么下一步,我们在onError方法中,重新加载我们的目标页面,应该就可以解决问题。请看方案: /*路由异常错误处理,尝试解析一个异步组件时发生错误,重新渲染目标页面*/ router.onError((error)=>{ constpattern=/Loadingchunk(\d)+failed/g; constisChunkLoadFailed
因为这三种基本的排序算法原理都很简单,所以在思路这块我就不做过多的解释了,我们把重点放在最后的冒泡排序如何优化上面 一、选择排序 选择排序的思路:比如一个数组arr=[9,6,2,5,10,20,1]进行从小到大排序,我们让每一个数字都和后面的数字进行比较,比自己小的就交换位置,比自己大的就进行下一个比较,将这个数放到相应的位置,下面是代码的实现: functionselectSort(arr){ vartemp; //定义一个变量用来操作数字交换 for(vari=0;i<arr.length-1;i++){ for(varj=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ //简单的交换位置逻辑,相信你可以看的懂 temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } returnarr; }复制 二、快速排序 快速排序的思路:从一个数组中任意的挑选一个元素(通常来说我们会选择中间的那个元素),将这个元素作为中轴元素,然后把剩下的元素以这个中轴元素的大小
共勉~ 在许多编程语言中,传递参数和赋值是通过值的直接复制或者引用复制完成的。在JavaScript中,对于值是直接进行复制还是引用复制在语法上是没有区别的,完全是根据值的类型来决定的。 在JavaScript中,简单值总是通过值的直接复制来进行赋值传递的(null,undefined,字符串,数字,布尔,symbol),而复合值(对象(包括数组等)和函数)总是通过引用复制的方式来进行赋值和传递的。 下面的例子能加深理解: vara=1; varb=a; b++; a;//1 b;//2 varc=[1,2]; vard=c; d.push(3); c;//[1,2,3] d;//[1,2,3]复制 数组的浅拷贝 上面例子对于数组的赋值操作就是数组的浅拷贝,不难发现问题当一个数组改变的时候,其他赋值的数组也会改变,在很多类似备份的情况中,这并不是我们想要的结果。 varc=[1,2]; vard=c; d.push(3); c;//[1,2,3] d;//[1,2,3]复制 数组的深拷贝 我们可以通过两种方法来实现数组的深拷贝: vara=[1,2,3];
题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。 测试样例: "aeiou"复制 返回:True复制 "BarackObama"复制 返回:False假设字符范围为‘a’-‘z’复制 1importjava.util.*; 2 3publicclassDifferent{ 4publicbooleancheckDifferent(StringiniString){ 5if(iniString.length()>3000) 6returnfalse; 7longtem=0; 8for(inti=0;i<iniString.length();++i){ 9intval=iniString.charAt(i)-'a'; 10if((tem&(1<<val))>0){ 11returnf
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王? 输入格式:输入在一行中给一个正整数N(≤1000)。 输出格式:在一行中输出当选猴王的编号。 输入样例:11 输出样例:7 代码如下: #include<stdio.h> #include<string.h> intmain() { intx; scanf("%d",&x); chardata[x]; memset(data,'+',sizeof(data)); intflag=1,count=0,i=0,accum=0,temp; while(flag) { if(data[i]=='+')count++; if(count==3) { data[i]='-'; count=0; } intj; for(j=0;j<x;j++) { if(data[j]=='+') { accu
<?php //每天早上备份一次MySQL数据库并自动打包,同时删除5天前的备份文件建议在本地运行没有任何问题再传到服务器上以后就可以添加计划任务 ////////////////////////*/ //保存目录,路径要用反斜杠.您需要手动建立它. //WinRAR.exe要把压缩包的exe文件跟当前运行页面放在同一个目录,当然你也可以自己配置,这样才能压缩 ini_set("max_execution_time","0");//代码运行时间不限制防止备份失败 ini_set('memory_limit','128M');//设置内存根据需求可以修改 date_default_timezone_set("PRC"); $store_folder='D:\databse_backup'; if(!file_exists($store_folder)) { mkdir($store_folder); } //用户名和密码 //该帐号须有操作[所有]的数据库及FILE的权限 //否则有些数据库不能备份. $db_username="root"; $db_password="root
HGN:必玩/10 有些作品的分数很难以评估,这主要在于其作品所带有的独特性,其在游戏分类里面甚至都是独一份的。这样的话就很难与其他同类型的作品进行比较并得出优劣胜负。 但这并不意味着无法给到分数,HGN开创性的在数字分数之外引入了形容词分数,就比如《死亡搁浅》的“必玩/10”的评分,与我个人而言,其实这部作品可以给到9分的高分,但是这样的话主观意向又太过严重,导致读者如果只看分数的话,很难知道这个9分里面,有很多的分数是出自“氛围”“音乐”这种其实并不算主流评价参考的部分里面。所以综合考虑之后,我给出了“必玩”的分数。不管你喜不喜欢这一类(开放世界?经营建造?我甚至无法给他分类),又或者你不喜欢剧情向,甚至就算你不喜欢3D游戏,那我也要说,因其太过于独特的“韵味”所以请务必游玩一下这部作品。 我文笔甚差,所以写出的文字未必能将我真实的意思表达出来,但我依然觉得记录一下也是有益的。 距离游玩结束已经很久了,这部作品给我最深刻的印象,是那种行走在天地间的孤独感,孤独贯穿了整部作品。 个体是孤独的,即使在人群里,个体也是孤独的,因为每个人的灵魂都被囚禁在了一个个独立的牢房里,只能通过可怜的
原创,转载请注明出处:STL库list::sort()实现深度解析 list模板的定义以及一些基本成员函数的实现这里我就不赘述了,还不清楚的同学可以到网上查找相关资料或者直接查看侯捷翻译的《STL源码剖析》相应章节。我之所以写这篇笔记是因为当时看到list::sort()源码时一时没看懂,后来在VS项目里一步步跟踪数据变化发现了其中的奥秘,被其简洁高效的非递归归并排序的实现方法所震撼(侯捷在《STL源码剖析》上注释说此sort实现使用了快排,应该是弄错了),下面直接进入主题。 list::sort()源码(摘自《STL源码剖析》) template<classT,classAlloc> voidlist<T,Alloc>::sort(){ //判断链表是否为空或者只有一个元素 if(node->next==node||link_type(node->next)->next==node){ return; } list<T,Alloc>carry; list<T,alloc>counter[64]; i
数据无处不在 而您能否真正发挥出其价值? 好用的工具 可以让强大的统计 行业领先的数据分析以及 动态可视化为您所用 获得更多机遇 MinitabStatisticalSoftware是 一个统计和数据分析软件包 通过审视当前及过往的数据 以找出趋势并预测规律 发现变量之间隐藏的关系 并创建完整的可视化 从而减少工作问题且提高生产力 开发商介绍 Minitab,LLC是一家质量改进和统计学教育方面的软件和服务提供商,总部设在美国宾夕法尼亚州州立大学,在全球的多个地方(包括英国、法国、德国、中国香港和澳大利亚)设有分公司。 Minitab通过提供一套全面的一流统计分析和过程改进工具,帮助公司和机构找出趋势、解决问题和发掘宝贵见解。Minitab的这些工具除了易用性极佳之外,还使获得深入数据见解变得前所未有的简单。 在近50年里,Minitab推出的专有解决方案已帮助
Tracking-by-detection的思想用discriminative外观模型来在线训练和更新分类器,将采样的样本在分类器上获得的最大值标定为新目标。压缩跟踪(CT)是压缩域中的一种特征提取方法,其缺点是:1检测样本的跟踪框大小固定2采样半径固定,当运动机动性较大,采样不准确3学习因子固定 多尺度压缩跟踪[1]将CT与粒子滤波(PF;自举粒子滤波--bootstrapfilter)结合。粒子滤波在非高斯、非线性贝叶斯模型的应用上较为突出,基于PF的跟踪通常使用轮廓(contours)和颜色(color,其对光照变化或者相似颜色较为敏感)作为观察模型(observationmodel),如文献[2-5],存在的共性问题是计算量大。根据表观模型,可以将跟踪算法分为基于生成式的(generative)和判决式的(discriminative),其具体介绍可在CT论文中看到。参考visualtrackerbenchmark和FCT,生成式的算法有Frag、IVT、(SCM、L1T和ASLA,字典学习)等,判决式的方法有MIL(多实例学习,亦可结合PF)、Struck(评分高)、