Skip to content

RimoChan/waifu-age

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

waifu年龄检测器!

大家和头像是美少女的网友搭讪的时候,是不是经常问「小妹妹,你今年多大了啊」?

每次都这样问很麻烦,而且还会被当作性骚扰被对方拉黑!

不过好在聪明的莉沫酱发明了waifu年龄检测器,只要对着她的头像检测1下就知道她几岁啦!

原理

本来是想直接给mllm输入动漫图片,然后问它图中的角色几岁了,但这样的结果不靠谱,mllm也不知道角色几岁反正它就乱猜16岁!

所以我们换1个方式,用排序+插值的方式来做这件事。比如我们有n张不同角色的图片,如果直接问mllm只能问n次,但如果问a角色和b角色哪个年轻的话,就可以问n2次了,这样1来我们就可以根据n2次的比较结果将所有的角色从大到小排序,最后选出几个能查到年龄的角色作为锚点,把中间的角色都插值出来就好了!

至于怎么排序,这里用的方法比较简单,如果假设年轻具有传递性,那么对于任意的角色B和任意比B年轻的角色A,在取另外1个人C,那么C比B年轻的概率就1定大于C比A年轻的概率。然后这个概率我们可以根据上面的n2次估计出来,所以其实只要把每个角色的胜率从高往低排就可以了。

测试结果

来测1测游戏里的角色到底是多大!

先试试碧蓝档案

年龄计算结果:

[
    [12.100536210381026, 0.9476071798605472, 'niko_(blue_archive)'],
    [12.450076960922253, 0.8804141721882525, 'natsu_(blue_archive)'],
    [12.453945276500553, 0.8796705571507238, 'reisa_(blue_archive)'],
    [12.511369104632639, 0.8686318450169387, 'momoi_(blue_archive)'],
    ...
    [20.12052606046695, -0.6614834098927499, 'satsuki_(blue_archive)'],
    [20.129351227554224, -0.662794277775692, 'eimi_(blue_archive)'],
    [20.691935134556726, -0.7463590610661006, 'ako_(blue_archive)'],
    [21.0, -0.8061312893783226, 'hasumi_(blue_archive)']
]

看起来学生的平均年龄是15.7岁,小就是好!

最小的学生是niko,12.1岁,还有小桃居然只排到第4!最大的是hasumi(羽川莲实),21岁。

niko niko (欸不是你是谁啊怎么还有这个角色)

hasumi hatsumi

试试碧蓝航线

年龄计算结果:

[
    [13.20987963488479, 0.7343555886842011, 'nagato_(azur_lane)'],
    [13.44576356639901, 0.6890110879486949, 'tashkent_(azur_lane)'],
    [13.812943996300563, 0.6184271648859632, 'yuudachi_(azur_lane)'],
    [14.083021812156765, 0.5486445465236665, 'eldridge_(azur_lane)'],
    ...
    [21.0, -0.8158751506900993, 'admiral_graf_spee_(azur_lane)'],
    [21.0, -0.815875150690099, 'ibuki_(azur_lane)'],
    [21.0, -0.8122253805599491, 'implacable_(azur_lane)'],
    [21.0, -0.8121993994261927, 'belfast_(azur_lane)']
]

船的平均年龄是18.1岁,居然还成年了!

然后最小的船是长门,13.2岁,最大的船是贝尔法斯特,21岁。

(之所以都是21岁是因为插值的上限就是21岁,就总不能真的拿那些495岁的角色来插吧)

试试莉沫酱

最后再用我的照片跑1跑,看看我今年几岁了:

啊,它说是15.85岁!

其实我只有14岁,太大了,不行!

训练

首先下载1个danbooru2023数据集,它的original文件夹里面有1000个包,非常大,这里用到的数据不多所以就手动下前20个包就可以了。

运行生成排序.py,这个文件会不停地随机抽取图片,然后问Qwen2-VL-7B-Instruct哪张图的角色年轻,并把结果存在json里,不用等它跑完,我大概1晚上跑了50000张就停了。

接下来运行小.py,它会把上1步存储的结果排序,最终生成1个包含每个角色的年龄表。

如果你懒得自己跑的话,可以直接在人年龄.json这个文件里面搜索角色的名字,就可以偷偷看她的年龄啦!

结束

就这样,我要去和网上的老婆亲热了,大家88!

还有我突然想起来这实际上是在回归,所以不是waifu年龄检测器而是waifu年龄回归器吧!

About

waifu年龄检测器!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages