Author Archives: jkl

玩转StableDiffusion.1 ——安装与试运行

去年曾经用手头mac本装过一次StableDiffusion,当时运行也成功了,但过了一段时间,突然就不行了。因当时忙于别事,没再深究。春节闲来无事,便准备在手头的windows台式机上试试。由于这台windows之前只用来玩游戏,比较“纯洁”,所以安装过程基本顺利。网上有很多StableDiffusion的安装教程,这里只说一下自己碰到的坑吧:python的版本要求。
开始没多想,直接先去python官网找最新版本的python安装,然后下载stable-diffusion-webui安装包,在已打开科学上网的前提下,启动里面的webui.bat,居然失败了…后来发现问题:StableDiffusion所使用的pytorch,python版本不能大于3.10.6。于是回头一路找python降级的方法~~看大家评价,好像不太容易。
那就换个思路吧,用conda装多版本~~安装conda以后,单独create一个AICG专用的python环境,然后将下面的语句加到webui.bat的靠前位置:
set PYTHON=C:/Dev/conda/envs/aipy3.10/python.exe
再次启动,OK,安装成功、web界面成功打开!
(后来才知道,国内有大神做的“秋叶安装包”,里面集成了环境、安装、模型管理等各种功能,NB到掉渣,大家有需要的,可以拿它试试)
~~测试效果,简单提示词这里就不放了,给个复杂点的:best quality,1girl,((color hair)),[pink:blue:pink:blue] hair,purple long dress,(1dog),flowers meadows,[red flower:0.5],[yellow flower::0.6],出来效果:


这里用的大模型是majicmixRealistic_v7,比较写实,效果还不错吧^_^
不过也有瑕疵,可能因为要素过多,裙子颜色、狗,都不太稳定,定义的花海颜色的生效时间也不太对
好在,脸比较完美o(* ̄︶ ̄*)o
~~当然,这么完美的脸,是用了魔法的,具体是什么,下次再说^_^
————
对了,补充一句:相对mac的m1max,StableDiffusion在3080显卡上的出图速度提升了不下5倍,小分辨率的基本都是秒出!!
——over
转载请注明出处: 昆仑的山头

pandas日期的高效处理方法

每次碰到dataframe里有datetime字段,都会感觉很麻烦,明明知道pandas里有很多批量处理的方法,但一个datetime改字符串日期,之前试过过很多写法,都不成功,又不甘心用低效的apply,于是动个小聪明,直接前置到提取数据的sql里:SUBSTR(created,1,10) day ^_^
今天又碰到这类问题,数据来源十几张表,而且是之前现成的公共模块,不好随便改sql,无奈找pandas里的处理方法,这次居然轻而易举找到了:
df['day'] = df['created'].dt.strftime(‘%Y-%m-%d’)
嗯,其实就这么简简单单一行代码~~继而好奇进一步研究了这里面的“dt”对象,除了搭配strftime()做日期格式化,还可以直接dt.year/dt.month/dt/time/dt.quarter/dt.weekday,还有dt.dayofyear/dt.weekofyear,哈哈,没错,可以理解成里面藏了一个map
除了这些,还可以类似这么用:(df['日期1'] – df['日期2']).dt.days、(df['日期1'] – df['日期2']).dt.total_seconds()

dataframe拆字段

比如,数据源某字段格式:“13/34”,来表示门店每日的新老用户数,现在要把它拆成两个字段,以便下一步分析使用。当然,我们首先肯定想到可以apply,可是如果数据量太大,apply就会变得很慢。那么,有没有更快的办法?
当然有了,毕竟pandas总不会让我们失望
df['new'], df['old'] = df['user_count'].str.split(‘/’, 1).str
简简单单一行代码就完成了

———
over, 参考:https://zhuanlan.zhihu.com/p/343895339

pandas之pivot_table的使用

pivot_table是将多行数据转成多列的一个函数,作用类似exce的透视表,这里咱们先看一下它的实际处理效果:

再看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
#构建测试数据
df = pd.DataFrame({
	'品类': ['苹果', '橘子', '香蕉', '橘子', '香蕉', '橘子'],
	'日期': ['2023-10-21', '2023-10-21', '2023-10-21', '2023-10-22', '2023-10-23','2023-10-23'],
	'销量': [13, 24, 25, 27, 19, 21]
	},
	columns=['品类', '日期', '销量']
)
print(df)
#日期列转行 index 行索引,columns 要转为列名的行,values 要转为列值的行
df2 = pd.pivot_table(df, index=['品类'], columns=['日期'], values=['销量'])
df2.fillna(0, inplace=True)
print(df2)

———-
over,转载请注明出处:http://www.jiangkl.com/2023/10/pivot_table

macOS to_pickle的一个小坑

本地数据分析,mysql提取初始数据后,中间数据准备用pkl暂存,但是实际执行,to_pickle这行报错了:
OSError: [Errno 22] Invalid argument
简单搜了一下解决方案,定位在”pkl对象太大,大于2G,macos无法直接dump”,解决方案是分批存:

不过我没按上面这个方法做,而是用了更偷懒的分段方法:分成两个dkl保存~~(*^▽^*)