据说在人工智能时代,数据标注员是一个很重要的职业,比如自动车子要在马路上跑,需要人工提前在马路上做一些标注,标注好了之后交给机器识别,做判断。
有意思的是,想要获得一只机器狗,或者是造出来的机器人能顺利地和狗说话,互动,咱们总得知道狗有什么习性和行为,于是,动物智能数据标记员这个职业就诞生了。
土地里有一只白狗,有一只黑狗,我们先从这只白狗开始分析,这要从白狗的来源开始说起。
刚屯下这块地时,和租地的中介阿姨吃了顿饭,吃饭的时候也是爆钱、爆装备的时候,因为正常来说两个人吃饭是没什么话说的,如果有话说,有一种情况是互相通过反身性演各自的上级领导。
那个时候吃着吃着,我就爆了一句,有没有小狗?好像我也没想着要小狗,就像强东哥说他都不知道泽天姐很漂亮那种,是真的,就自动飙了一句有没有小狗。
吃完饭,阿姨就把小狗牵了过来,一身酸臭味。然后我直接给他喂了顿板头市场买的烧鸭饭,治好了她的一身酸臭。
故事就开始了,注意,白狗是条母狗,母狗戏不是那么多,一般有这几种行为:
- 四腿奔跑,注意!四腿!看过那个猎豹奔跑没有,两条后摆,两条前挥,跑得很漂亮的那种,这白狗还会压头,我自己以前在学校跑步冲线的时候也会压头,真的是那种压头,她是一起速就压头,很厉害。奇怪的是为什么会在我面前不停地奔跑呢?就是不断提速,然后转弯漂移,奔跑的时候偶尔会带动我给她呐喊。
- 蹲坐。以前听过一句叫好狗不挡路,哎,不是,她专挡路,而且是前两只脚立着,后两只腿卧着,挡道,开车来也挡,有时候走路也会挡。
- 舔你。真不是什么时候都舔,什么时候都舔怎么奔跑。拿着烧鸭来的时候会假装舔,注意!!拿烧鸭饭来的时候是假装舔,各位养狗的别和我杠,您们看看养的狗,舔人的时候分真心舔和假舔,拿饭菜给她吃的时候百分百是假舔。什么时候真舔?她嗨的时候就真舔,关键是我还不知道她什么时候嗨,只能被舔完才知道,哦?原来刚刚嗨了,一般是这样。还有一种是报复性舔,我一个立着走的怎么会去欺负小狗呢?哦,有时候她以为你欺负她,反省完了之后又不说话。一般误会你的时候会试探性舔你,假惺惺式不再有感情的感觉。
- 被小黑狗戏弄,有时候也会跟着小黑狗,小黑狗是公狗。
- 走出围栏,到了其他地里,听其他公狗不停地叫,有意思的是她不会叫回去,一般就是看几眼,但其他公狗看到她还是会不停地叫,屡叫不爽。
白狗作为一条小母狗没什么,戏最多就是那条公狗小黑,详细分析一下!
- 装作很着急的样子!每次见到小狗我手里多多少少都会有点东西,哎,他不停地跳上来去搞我拿着的东西,或者我在地里干活的时候,他冲上来中断我的田园劳作行为,哎!我就纳闷了,还别停下来和他杠,一杠就死翘翘。我试过很多次了,你搞我?我停下来给你搞!哎,停下来他就不搞了,还眼汪汪地看着你,反身性还赢不了一条狗了!每次这样我都直接投降,做下一件事情,换的事情多了,黑狗才会放过我。估计和电脑程序的设计有关,哎,你单线程,本来你可以多线程,单线程黑狗他就搞死你。
- 舔屎。真的是拉出来的那种粪便,他真的会冲上去舔,而且兴趣还很大。什么原理呢?春秋战国的时候有勾践给夫差舔屎的典故,舔了屎知道夫差病好了,健康了,他就能回去越国了。大家看我往后分析,刚开始我以为自己盘下来一块地,搞不好地是狗的,俺都不敢想三千只小狗会是什么情况,反正狗是不会向人类低头的。别说狗啦,地里的蜜蜂、苍蝇、壁虎,蛇,没有一只向我示过弱,被黑狗追杀的兔子临死前也干他一下。
- 玩罩。玩罩是我预想之内的,但是没想到那么地名目猖狂。什么叫玩罩?我地里养了鸭子,鸭子平时吃我喂的白米,本来是好好的,鸭子走鸭子的道,在小河和塘里游泳。自从给黑狗吃了烧鸭之后,我老感觉黑狗干不过鸭子,鸭子是一群,走的也快,升起的阳气应该比狗多,但狗一见我就去冲那个鸭子,去冲啊,真的是撞到人家群里的气势,每次我都感觉他是去给鸭子报信,就是说,那厮来了,你们搞不过他的,让我来~!!然后鸭子们很配合地逃跑,熟练地不得了。狗和鸭子都是我喂的,真金白银地喂,咦?怎么会发展成这样。大概就是我花钱养的狗和鸭子,然后视我为敌,可能给钱我的人也是这么想的,但根源估计还是想要土地吧。
- 找水源。白狗母狗没这么明显,这黑狗公狗还是有点厉害,路过的水源都会尝一下,好像是一种习性。
- 学反身性。黑狗学反身性是最快的,不要说自己读了多少书,懂多少知识,当我自己对着一条狗的时候,有什么本事直接和他干就完了。结果干了个鬼,别和我说有人能赢一条狗,反正我是赢不了,不管我想什么,用心想的东西基本上都能用反身性反弹到狗身上,狗的反应比人快多了,什么小心思都藏不了。
- 真正的示弱。公狗的示弱是真的强,母狗示弱的能力比公狗还是差了一大截。什么叫示弱,就是上面5条他在运用的时候,我一个人竟然生气了,生气了,他立马用身心行动告诉你,其实他什么也没干,他也是无辜的,就你一个人类过来土地搞三搞四,小狗只是演我而已,哎!我立马没话说。
狗的代码附在后篇,一般是人狗互搏,注意,是互搏,不包含指挥,指挥小狗我都不敢想后面会有多好笑,投降罢了。
动物智能估计能帮助我们获得一系列仿生动物,很多时候估计不能放只真动物进去满地跑,不然人类就不能执行各种伟大的计划了。
智能类作业貌似都有数据标记这项工作,下面,基于这次的小狗动作识别,提供一个可视化的人与狗游戏。
首先我们设计一个狗的基类:
public class Dog { // 是否是一只负债的小狗,咱们人有数字记录钱,狗有没有可能也有钱包这个概念呢? boolean inDebt; // 小狗的存款 double depositMoney; }
为啥要给小狗设计一个钱包,我记得自己上小学的时候就有自己有多少钱的概念了,我不过是一只四肢哺乳动物,假设狗也上完了早教和幼儿园,他应该也有钱的概念吧?每只生命都有私心,私心估计就体现在钱这个数字上,这个数字可以用来等价交换,可以用来叫别人做事情,小狗叫我们人类做事的方式可能我们人类不知道罢了,比如反身性?比如同频共振?有时候我们也不知道为啥会对小狗那么好,买狗粮,买狗屋,有没可能是小狗自己赚到了钱,按照他自己的方式在大自然消费而已。
我们依次取小狗的两个习性写一个小案例:
public class Dog { // 是否是一只负债的小狗,咱们人有数字记录钱,狗有没有可能也有钱包这个概念呢? boolean inDebt; // 小狗的存款 double depositMoney; // 目前在生态系统里做事的人貌似都是计费的,熟人之间可能可以隐性付费,那小狗和人类交互有没有可能也是计费的? // public double startBilling(){ // // } public Dog() { this.inDebt = false; this.depositMoney = 100; } // 人和人之间,在单件事情上肯定有高低之分,比如打一场网球,肯定是有得分的,得分高的应该是服务方,得分低的是被服务方 // 两个人见面,在单件事情上PK,估计是得分低的给得分高的人付费,当然国际比赛有奖金公方,本小游戏设计可能有隐性的财产转移 public boolean PK(Human human) { double humanScore = Math.random(); double dogScore = Math.random(); return dogScore > humanScore; } public int getRandomInt(int min, int max) { return min + (int) (Math.random() * (max - min + 1)); } public void inDebtTest() { if (this.depositMoney < 0) { this.inDebt = true; } else { this.inDebt = false; } } public void settleAccount(Human human, double costMoney) { if (this.PK(human)) { System.out.println("本次是人类需要服务小狗,通过反身性演了这个人类,获得钱财!"); this.depositMoney += costMoney; } else { System.out.println("没钱了,需要表演给人类看,哎,哎,怎么表演完还扣钱了呢!"); this.depositMoney -= costMoney; } } // 习性1:四腿狂奔 public void crazyRun(Human human) { double costMoney = 0; int runTime = this.getRandomInt(1, 5); for (int i = 0; i < runTime; i++) { System.out.println("大哥,俺跑给您看!"); costMoney += this.getRandomInt(0, 10); } this.settleAccount(human, costMoney); } // 习性2:蹲坐 public void sit(Human human) throws InterruptedException { int sitTime = this.getRandomInt(1, 5); double costMoney = sitTime; System.out.println("挡你道。。!"); Thread.sleep(sitTime * 1000); System.out.println("我闪!"); this.settleAccount(human, costMoney); } }
接着,我们写一个空的描述人类的类:
public class Human { }
然后就可以写逻辑描述大自然中人与狗的相处了:
public class Main { public static void main(String[] args) throws InterruptedException { Human human = new Human(); Dog dog = new Dog(); dog.crazyRun(human); dog.sit(human); } }
试运行的结果如下:
大哥,俺跑给您看! 大哥,俺跑给您看! 大哥,俺跑给您看! 本次是人类需要服务小狗,通过反身性演了这个人类,获得钱财! 挡你道。。! 我闪! 本次是人类需要服务小狗,通过反身性演了这个人类,获得钱财!
有一种可怕的想象是这样子的,大哥们看,现在抖音、微信、美团都开通了快捷支付,刷地一声钱就从自己口袋里滑走了。假设后面街上多了很多机器狗,并且参与到了人类的日常生活中,关键是他还有钱包!狗有钱包,这样我们就可以和小狗进行交易了。
这里我写个2D小游戏给大家模拟一下,就是类宠物小精灵,赛尔号那种游戏,首先,我们画一只人类和一只小狗,放到cocos引擎画布里:
纯手画的哦,详细可以看视频,视频集合在博客园主页。
然后我们在画面下方放置一个交互框,然后加入“投喂”和“捕捉”两个按钮,并显示小狗的存款:
小狗的脚本参考如下:
捕捉小狗和给小狗投喂的代码参考如下:
export default class Human extends cc.Component { (cc.Node) canvas: cc.Node = null; (cc.Prefab) foodPrefab: cc.Prefab = null; foodInitX: number = -550; foodInitY: number = 190; (cc.Node) dog: cc.Node = null; giveFood() { let food = cc.instantiate(this.foodPrefab); food.x = this.foodInitX; food.y = this.foodInitY; food.parent = this.canvas; food.runAction( cc.jumpTo(1.5, food.x + 1800, food.y, 200, 1) ); } catchDog() { this.dog.runAction(cc.spawn( cc.jumpTo(1.5, this.dog.x - 1800, this.dog.y, 200, 1), cc.scaleTo(1.5, 0.1, 0.1), cc.fadeOut(1.5) )); } }