微信官方都闢謠,可真有技術人用 AI、大數據實現頭像添加聖誕帽了!

2020-12-18 CSDN

點擊上方「 CSDN 」,選擇「置頂公眾號」

關鍵時刻,第一時間送達!

從昨天到現在,朋友圈裡便持續性地見到了許多「請給我一頂聖誕帽@微信官方」,正如前文《 如何從技術上實現「朋友圈@微信官方頭像添加聖誕帽」? 》所說,朋友們紛紛求問如何給自己的頭像加上聖誕帽,然後,一場花式求聖誕帽的儀式開始刷屏了,還混入了各種奇怪的東西。但是卻發現 @微信官方 並不能帶上聖誕帽,才知道「被騙」了。

而昨晚,微信官方還特地發了一篇《 聽說你們都在@我? 》的文章就此事情進行闢謠,表示:

然而,技術人們紛紛表示不服!「雖然微信沒這個功能,但並不代表實現不了!在現有的技術環境下,這點需求都實現不了也未免太看不起我們程式設計師了吧?!」

閱文集團首席架構師徐海峰老師就表示,使用大數據分析+AI+圖片動態處理實現能夠實現「朋友圈@微信官方頭像添加聖誕帽」,並為此撰文進行了架構上的分析。

而在 CSDN 文章的微信留言中,也有許多程式設計師小夥伴們表示「從技術上講這個功能完全可以實現」,並為此紛紛出了主意。

@微信官方,聖誕節就在眼前,能不能如願就看你的了!實在不行來年也是可以的。

接下來,我們有請徐海峰老師,從架構上分享,如何全自動無手工幹預地實現「朋友圈@微信官方頭像添加聖誕帽」。

以下為正文(經授權轉自 徐海峰老師個人公眾號「94geek的大嘴」)

我們先變身為產品,分析需求,如下:

從上圖可以看出:「@」是發動者,頭像更變是最後的結果。對於程式設計師來說,需要處理的問題點有幾個:

如何知道用戶發起來需要戴聖誕帽的要求;

如何識別出用戶頭像圖片中的頭部位置及其走向,然後儘可能正確的加上聖誕帽;

如何通知微信程序更新最新頭像。

首先,我們來解決第一個難點:如何知道用戶發起需要戴聖誕帽的要求?

用戶發一條朋友圈,微信伺服器可以完整地得到該朋友圈的內容,所以微信後臺可以對其進行內容解析。只要解析到朋友圈內容中帶有「@微信官方」並且內容是「加/戴聖誕帽」相關的,就將該條朋友圈看做是用戶需要更改頭像。

在技術上,我們將其視為給微信發送了一個通知,考慮到朋友圈的發送量和改變圖片的實時性需求,稍微延遲一點更改頭像也沒有特別大的關係,所以將處理頭像設計成異步模式,最簡單的辦法就是將通知放入隊列,緩存起來。架構圖如下:

第二步:解決圖片識別問題。

鑑於頭像圖片識別頭部的需求,我們不需要太過於精確,所以也沒有必要大張旗鼓地使用很多的 AI 臉部識別技術(PS:當然有更好),目前開源的項目中 OpenCV 即可解決識別問題。OpenCV 可以識別出人臉在圖片中位置,將其用坐標的形式「框」起來。考慮到有些用戶頭像的頭部有幹擾項:比如頭部正好是黑色背景、頭像中的人是光頭……,可以適當的增加一些抗幹擾的考慮項;如果要求更高一些,還可以根據眼睛、鼻子、耳朵等頭部特徵將頭部的走向(防止有歪頭的)大體計算清楚。

這樣,在得到頭部大體大小、坐標、走向的情況下,適當的調整聖誕帽的大小、坐標、走向,合併成一張圖片即可。這部是整個技術的核心,如果需要提高正確率,可以對圖片進行大數據分析,儘量的找到圖片的公共點,提高識別的準確率。

最後:通知微信更新最新頭像。

微信作為一個社交產品,它肯定會考慮加聖誕帽這個需求的時間效應:聖誕帽頭像嚴格意義上說是具有極強時間效應的,所以這個頭像存在的時間很短。用戶更改頭像的初衷並不是出於真心的喜歡,而只是圖新鮮,2-5 天度過聖誕節後即沒用了。

所以,微信沒必要真正地去更改用戶的頭像,這也就意味著我們根本不需要更改任何資料庫的操作,我們直接從原頭像的基礎上更改,將更改好的圖片使用原來頭像的文件名推入緩存系統、並且通知微信 App 更新即可。只要保證在 2-5 之內頭像存在就可以完成任務。當然,如果需要永久保留圖片,這就增加資料庫標誌位欄位,然後將加好帽子的圖片存入到圖片伺服器,並且更新緩存伺服器的頭像圖片。

綜上所述,整套架構如下所示:

整個架構圖都畫出來,但是肯定還有很多的同學會懵逼,竟然不把生成的圖片都存儲下來?好吧,順便也科普一下行業內存儲圖片和處理圖片的常用方案。

業內處理圖片有一個不成文的規定: 存原圖,給效果圖。展開來說就是:

程序在存儲用戶上傳圖片的時候儘量不處理或者少處理用戶的圖片,等到用戶獲取的時候再由程序根據當時的需求給出不同的圖片。

我們最常見的圖片操作:加水印、裁剪圖片、縮放圖片、壓縮圖片大小……,很多時候我們都在上傳的時候解決了。這種方案不是不可以,但是並不好。不好的地方主要有 2 個:

浪費存儲空間。上傳的時候進行處理,也就意味著程序要存儲一張原圖,還有 N 張效果圖。這就是存儲可能被擴大了 N 倍;

擴展難。目前的業務需求圖片是 200200;過了 3 個月,業務方需要 400400;又過了 2 個月,業務方又需要一個 300*300 的……,縱使我們新需求可以通過更改代碼來解決,老圖片是不是還要創建一個 job 來遍歷的跑一下才行?

所以,圖片處理正確的做法應該是:在用戶獲取圖片的時候交給圖片的 HTTP 伺服器處理。這種解決方案會在一定程度上增加 HTTP 伺服器的壓力,但我們可以使用 Varlish/Squid/CDN 等成熟的緩存系統將其做到「儘可能的一次寫 N 次讀」。

圖片只有在第一次被訪問的時候需要圖片 HTTP 伺服器對其進行處理,以後只要這張圖片不過期/不被回收,這張圖片一直存在於緩存中,根據反向代理原理,請求在緩存處已經獲取文件,故不會對圖片 HTTP 產生任何壓力。雖然技術實現難度有所增加,但是卻解決上面提到的 2 個最主要的問題。

作者聲明:以上方案純屬大體方向和個人揣測,實踐中還需要再根據具體的業務做具體的調整。如有雷同,純屬巧合!

相關焦點

  • 如何從技術上實現「朋友圈@微信官方頭像添加聖誕帽」?
    聖誕將至,還不趕快@">點開朋友圈,你會發現許多好友的頭像,都戴著一頂紅色的聖誕帽,附帶刷屏的「給我一個聖誕帽!@">事情起源是這個樣子的......23號夜裡,一些網友用「一鍵聖誕帽」H5幫好友 P 了幾張帶有聖誕帽的微信頭像,從小圈層的聖誕帽微信頭像開始,覆蓋並引起了他們的微信好友的好奇,紛紛求問如何給自己的頭像加上聖誕帽。
  • 給我個聖誕帽吧,@微信官方
    聖誕節馬上就要到了,從昨天晚上開始,大家的朋友圈應該都被這樣一句話刷屏了吧,「給我個聖誕帽吧,@微信官方。」然後,你會發現朋友圈裡的很多好友頭像都戴上了聖誕帽。難道微信最近加了一個聖誕帽的彩蛋?發送一句話就能讓自己的微信頭像自動戴上聖誕帽嗎?於是就有很多「不明真相」的吃瓜群眾紛紛效仿,但是。。。幾個小時過去了,怎麼我的頭像沒有一點變化啊?其實吧,這只是網友的惡搞罷了,@微信官方就能為自己的頭像帶來一頂聖誕帽?不存在的,你以為是「芝麻開門」的通關密語嗎?
  • 微信頭像自動戴聖誕帽教程來了!今年不用@微信官方了
    路上都是情侶,我一個人顯得格格不入。昨天明明是周二,地鐵居然也限流!我恨!今天早上起床,微信好友又有新動作。怎麼齊刷刷地換上了聖誕帽呢。原來今天是聖誕節。微信好友又開始換聖誕帽頭像了。這一幕讓我想起了2017年聖誕節的朋友圈,大家都在@微信官方,求一頂聖誕帽。
  • 微信朋友圈頭像怎麼加聖誕帽 @微信官方 給我頭像加一頂聖誕帽是真...
    微信朋友圈聖誕帽怎麼領,請給我一頂聖誕帽@微信官方是真的嗎,不少網友被請給我一頂聖誕帽刷屏了,這到底怎麼回事呢?發出這樣的朋友圈,你的頭像就能自動被戴上聖誕帽嗎?
  • 我替微信,送你一頂聖誕帽(綠的也有)
    本文轉載自:IT之家公號(微信搜索IT之家)還記得去年聖誕節嗎,很多人在朋友圈@微信官方,讓微信給他一頂聖誕帽。啟人跟你說,其實都是假的。你想,每個人的頭像都是不一樣的,有的大、有的小、有的正、有的歪。為啥「微信官方」能非常準確的在圖片上扣帽子?答案只有一個:這些人先用P圖軟體,給自己P上聖誕帽,然後故意發布一條@微信官方的朋友圈炸魚。你要是真信他們了,那你就太單純了。
  • 微信頭像聖誕帽怎麼弄 微信頭像聖誕帽子裝飾教程
    這幾天微信上有人說發送「聖誕快樂」四個字微信頭像就會自動生成一個聖誕帽,這是真的嗎?具體是怎麼實現的?  據說是要先去微信團隊助手那裡申請~  作為用戶,我們其實什麼都不用做,只需要按照要求發送聖誕快樂這四個字給三十位好友即可,如果之後頭像還沒改變,試一下刷新或者重啟程序。
  • 怎麼樣在微信頭像上加聖誕帽 添加聖誕帽方法教程get起來
    春節從現金紅包變成了微信紅包,聖誕禮物從當面贈送變成了快遞派件。這兩年的聖誕節,居然還流行微信頭像戴聖誕帽的一大奇觀。又到了一年一度聖誕狂歡的時候了,按照往常的慣例,給微信頭像戴上一個聖誕帽子是每年聖誕節的標配。2019微信頭像聖誕帽怎麼添加?很多小夥伴們都還不知道,下面小編為大家整理了2019微信頭像聖誕帽添加方法教程,一起來看看吧。1、首先這個@官方的方法是沒用的,這個應該是用戶自己設計的。
  • 刷屏的「聖誕帽」是意外造就的「騙局」?5000字還原事件始末
    通過微信指數可看出:在24小時內達到全網熱點No.1,在朋友圈出現率將近2.9億次。中國網民數據現在約有8億,也就說這段時間內每8個人當中,就有3個人在求聖誕帽。雖說現在看來,有些人會吐槽這些「上當」用戶很傻;但我們不妨從用戶的角度,且對用戶進行分類,以便更好理解整個過程是如何發生的—— 第一類用戶:普通用戶看到朋友圈小夥伴在微信通過@微信官方求獲得聖誕帽,並且每個求聖誕帽的小婊砸都戴上了
  • 如何給微信頭像添加聖誕帽?讓你做朋友圈最酷的仔!
    一年一度的聖誕狂歡夜即將來臨,作為西方節日的它卻受到了廣大朋友的熱愛。在節日到來之前,很多朋友都會用自己獨特的方式去迎接它的到來。那我們應該如何在不下載任何軟體的情況下給微信頭像上帶上聖誕帽和製作一份精美的電子祝福賀卡呢?
  • 2020微信頭像聖誕帽子怎麼弄 微信聖誕帽製作教程方法指南
    朋友圈@微信團隊請給我一頂聖誕帽是真是假?相信很多人已經嘗試過並不行,每年都有很多的人傻傻的受騙,其實就是給頭像p個聖誕帽,很多軟體和小程序都可以完成,微信聖誕帽怎麼弄?下面帶來介紹。  2020微信頭像聖誕帽子怎麼弄?  重要的事情說三遍:@微信團隊並不能有聖誕帽!@微信團隊並不能有聖誕帽!@微信團隊並不能有聖誕帽!
  • 手把手教你給微信頭像戴上聖誕帽,一分鐘搞定!
    又到了一年一度聖誕狂歡的時候了,按照往常的慣例,給微信頭像戴上一個聖誕帽子是每年聖誕節的標配。以往大家製作聖誕帽子頭像的時候大多都是使用第三方工具來實現的,但是這些工具的功能往往參差不齊而且有的平臺還會有一些不良的信息。
  • 微信團隊聖誕帽子怎麼弄 @微信團隊請給我一頂聖誕帽真的假的
    隨著一年一度聖誕節臨近,@微信團隊求聖誕帽子的「活動」又再度在朋友圈熱鬧起來。微信聖誕帽子怎麼弄?請給我一頂聖誕帽是真的嗎?怎麼自己發了並沒有用?這就來看看這個微信聖誕帽子要怎麼操作吧。@微信團隊請給我一頂聖誕帽 是真的嗎?
  • 微信就能一鍵製作「聖誕頭像」,別再@微信官方了
    又是一年聖誕節,蘋果和聖誕帽似乎成為了節日的標誌,尤其是聖誕帽,說起這個帽子,早在17年的時候,朋友圈就開始流行@微信官方,請求能夠賜予一頂帽子。關於這個操作還不僅僅局限於聖誕節,就連今年的國慶節也出現了一大批@微信官方的例子,網友的一系列蜜汁操作,這讓微信官方情何以堪。
  • 2020微信頭像怎麼添加聖誕帽?附製作方法
    2020微信頭像添加聖誕帽製作方法  一、進入本地寶專屬製作頁面(點擊進入)  二、點擊「+」號,進入圖庫選擇想要添加的頭像圖片    三、添加頭像後,可以選擇喜歡的帽子、頭飾等,點擊帽子即可進行調整,調整到合適的位置後點擊「預覽」
  • 微信團隊聖誕帽子怎麼弄 再度在朋友圈熱鬧起來
    怎麼自己發了並沒有用?這就來看看這個微信聖誕帽子要怎麼操作吧。 @ 微信團隊請給   原標題:微信團隊聖誕帽子怎麼弄 再度在朋友圈熱鬧起來     隨著一年一度聖誕節臨近,@ 微信團隊求聖誕帽子的「活動」又再度在朋友圈熱鬧起來。微信聖誕帽子怎麼弄?請給我一頂聖誕帽是真的嗎?
  • 為什麼朋友圈@微信官方給我一頂聖誕帽?頭像怎麼沒變原因
    一夜之間整個朋友圈都在@微信官方,給自己的頭像求戴聖誕帽。  表說,還真有人戴上了  猛然發現,朋友圈全是這樣的頭像。  你還別說,帶了這個聖誕帽之後感覺頭像更好看了。  明明看到別人都有但自己卻沒有,這心情,可想而知有多複雜……  你是不是也發了,然後,傻傻的等待著每隔幾分鐘看一次自己的微信頭像。
  • 聖誕節,教你用Python給微信頭像添加一個聖誕帽!
    聖誕節快到了,每年一到聖誕節就會有很多人的頭像上多了一頂小紅帽那麼你有想過如何用Python去實現嗎?如果你嘗試去搜索,會發現網上教程一大堆,但是由於大多數人都將聖誕帽位置固定了,所以放上自己的圖片後,要不就是聖誕帽偏移了,要不就是帽子比頭還大,代碼也不知道在哪裡改,無從下手。
  • 微信頭像上的聖誕帽怎麼加 微信朋友圈聖誕帽頭像是怎麼弄的
    又到了一年一度的聖誕節,很多小夥伴在微信@官方微信想要一頂聖誕帽,其實都是假的,他們是自己p的聖誕帽,在發朋友圈!不清楚的小夥伴們,就讓小編給大家詳細的講講吧,想知道的就一起來看看吧。你還會發現許多好友頭像,戴著一頂紅色的聖誕帽,有許多人問我是不是真的。發了朋友圈的人都成功了!他們都戴上了聖誕帽耶!今天上午,微信悄悄更新為了迎接即將到來的聖誕節!而特意推出的一個特別功能!
  • @微信官方取得聖誕帽都是假的,是時候講解真正的戴帽子技術了
    從昨晚到現在,大家都以為在朋友圈@微信官方 後,自己的微信頭像就會有一頂聖誕帽,那麼,這麼發真的有效嗎?其實呢,這個根本不存在的,聖誕節前過了個愚人節,你們還真的相信了。哎,暴露了一個大家跟風從眾的心理。
  • 微信聖誕帽子怎麼弄 聖誕帽子獲得方法
    微信聖誕帽子怎麼弄 聖誕帽子獲得方法時間:2020-12-14 22:45   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:微信聖誕帽子怎麼弄 聖誕帽子獲得方法 微信聖誕帽子怎麼弄?