李剛
(上海信聯(lián)信息發(fā)展股份有限公司 上海市 200333)
對(duì)照片檔案的人物標(biāo)注是一項(xiàng)重要的工作。照片檔案上的人物標(biāo)注是否準(zhǔn)確、完整直接影響其利用價(jià)值。目前照片檔案主要是通過(guò)人工標(biāo)注,存在的問(wèn)題是需逐張對(duì)照片上每個(gè)人進(jìn)行標(biāo)注,存在重復(fù)人物標(biāo)注,效率較低。
為解決此問(wèn)題,本文提出一種照片檔案的人物自動(dòng)標(biāo)注的方法,利用人臉檢測(cè)技術(shù)、人臉相似度比對(duì)算法和標(biāo)注智能推薦算法,解決不同照片重復(fù)人物自動(dòng)標(biāo)注問(wèn)題。該方法能夠有效降低工作量,提高工作效率。
如圖1所示,本文提出的標(biāo)注方法的實(shí)現(xiàn),主要包含流程:
本文通過(guò)創(chuàng)建人臉樣本庫(kù),然后將待標(biāo)注圖像的人臉與人臉樣本庫(kù)的每個(gè)人臉逐一進(jìn)行比對(duì),當(dāng)識(shí)別為相似人臉時(shí),則會(huì)為該人臉進(jìn)行自動(dòng)標(biāo)注,并合理選擇圖像的標(biāo)注位置,自動(dòng)標(biāo)注完成后,可對(duì)標(biāo)注結(jié)果進(jìn)行人工確認(rèn),并完善人臉樣本庫(kù)。
本文需先創(chuàng)建人臉樣本庫(kù),其中人臉樣本包括用于人臉比對(duì)的人臉指紋P 和用于標(biāo)注的標(biāo)注文本T。每個(gè)人臉樣本的人臉指紋P和標(biāo)注文本T 以鍵值對(duì)的形式表示。
如圖2所示,人臉指紋P 方法如下:將人臉圖像縮小到8x8 的尺寸,總共64 個(gè)像素。這一步的作用是去除圖像的細(xì)節(jié),只保留結(jié)構(gòu)、明暗等基本信息,摒棄不同尺寸、比例帶來(lái)的圖像差異。將縮小后的圖像,轉(zhuǎn)為64 級(jí)灰度。計(jì)算所有64 個(gè)像素的灰度平均值。將每個(gè)像素的灰度,與平均值進(jìn)行比較。大于或等于平均值,記為1;小于平均值,記為0。將上一步的比較結(jié)果組合在一起,構(gòu)成一個(gè)64 位的整數(shù),即為這張圖像的指紋[1]。
將圖像指紋P 與人臉圖像標(biāo)注文本T 組成鍵值作為人臉指紋樣本,并將樣本添加到人臉樣本庫(kù)。
本文涉及到人臉比對(duì)的過(guò)程,主要包含以下步驟:
第1 步:提取人臉;
第2 步:人臉指紋與樣本指紋對(duì)比;
第3 步:篩出相似人臉;
針對(duì)待標(biāo)注的照片圖像,使用人臉檢測(cè)算法,檢測(cè)人臉是按照從上往下,從左往右的順序依次進(jìn)行檢測(cè),使用f(x,y,w,h)標(biāo)記檢測(cè)到的人臉圖像區(qū)域,則第i 個(gè)人臉圖像區(qū)域可以記作f(xi,yi,wi,hi),其中xi、yi為檢測(cè)到的第i 個(gè)人臉的坐標(biāo),wi、hi為該人臉的寬度、高度。在總共檢測(cè)到n 個(gè)人臉的情況下,該照片的n 個(gè)人臉區(qū)域分別為:f(x1,y1,w1,h1),f(x2,y2,w2,h2),……,f(xn,yn,wn,hn)。
使用漢明距離算法將待標(biāo)注人臉的指紋,與樣本庫(kù)中的每個(gè)人臉樣本的指紋逐一進(jìn)行比對(duì),從而得到待標(biāo)注人臉指紋與樣本指紋的不同數(shù)位個(gè)數(shù),以此識(shí)別待標(biāo)注人臉與人臉樣本是否相似。[2]
人臉圖像指紋的漢明距離計(jì)算方法如下:
公式(1)人臉圖像指紋漢明距離計(jì)算方法
圖1:整體流程
圖2:人臉灰度圖像生成64 位指紋
圖3:自動(dòng)標(biāo)注流程圖
其中,x,y 表示待標(biāo)注人臉指紋與人臉樣本指紋;i=0,1,…,63表示指紋的64 位編碼,⊕表示異或。
當(dāng)發(fā)現(xiàn)待標(biāo)注人臉指紋與人臉樣本指紋不同數(shù)位個(gè)數(shù)低于一定閾值時(shí),則認(rèn)為是同一人。本文規(guī)定閾值位數(shù)為5,即如果不同數(shù)位個(gè)數(shù)低于5,則說(shuō)明待標(biāo)注人臉和人臉樣本相似,比對(duì)結(jié)果為同一人。
當(dāng)識(shí)別出相似人臉時(shí),本文自動(dòng)智能計(jì)算標(biāo)注文本的合理位置,避免標(biāo)注文本遮擋人臉或者標(biāo)注文本相互遮擋的情況。
針對(duì)照片檔案人物排列呈現(xiàn)多樣性的特點(diǎn),本文依據(jù)照片中檢測(cè)出的人臉區(qū)域的排列特征,將標(biāo)注位置與人臉位置居中對(duì)齊,并標(biāo)到人臉正上方。然后判斷標(biāo)注與其他區(qū)域是否有遮擋,通過(guò)左右移動(dòng)、上移、移動(dòng)到照片整體上方或者下方進(jìn)行標(biāo)注,有效避免了標(biāo)注遮擋的問(wèn)題,實(shí)現(xiàn)有效標(biāo)注[3]。如圖3所示。
圖4:標(biāo)注文本四頂點(diǎn)示意圖
圖5:向右移動(dòng)避免遮擋
圖6:空白位置避免遮擋
在自動(dòng)標(biāo)注時(shí),標(biāo)注區(qū)域優(yōu)先選擇人臉上方區(qū)域,標(biāo)注過(guò)程如下:
2.4.1 計(jì)算標(biāo)注默認(rèn)尺寸和位置
(1)設(shè)定該標(biāo)注區(qū)域T(xt,yt,wt,ht),獲取待標(biāo)注人臉區(qū)域f(x,y,w,h),相似人臉樣本的標(biāo)注文本T;
(2)設(shè)置標(biāo)注默認(rèn)字體和字號(hào),根據(jù)標(biāo)注文本T 的文字個(gè)數(shù)和文字默認(rèn)大小計(jì)算標(biāo)注文本所占區(qū)域大小,計(jì)算標(biāo)注區(qū)域T 的值wt與ht,當(dāng)標(biāo)注區(qū)域的寬度wt比人臉區(qū)域的寬度w 大的時(shí)候,縮小標(biāo)注文本的字體大小,保證標(biāo)注文本的寬度與人臉區(qū)域的寬度一致。標(biāo)注區(qū)域T 默認(rèn)位置是對(duì)應(yīng)人臉區(qū)域的f 居中對(duì)齊,并向上平移ht 個(gè)像素值,作為標(biāo)注區(qū)域的初始位置,從而得出T(xt,yt,wt,ht)四個(gè)頂點(diǎn)的坐標(biāo)分別為[4]:
p1(xt,yt)、p2(xt+wt,yt)、p3(xt,yt+ht)、p4(xt+wt,yt+ht)。
2.4.2 判斷標(biāo)注有無(wú)遮擋
判斷當(dāng)前待標(biāo)注人臉的標(biāo)注區(qū)域四個(gè)頂點(diǎn)是否與其他人臉及標(biāo)注區(qū)域重疊,即p1、p2、p3、p4 四個(gè)頂點(diǎn)是否落在該照片的其他人臉或者標(biāo)注區(qū)域,如果沒(méi)有,則直接繪制標(biāo)注文本即可;如果有,則繼續(xù)下述步驟進(jìn)行平移以避免重合。
2.4.3 判斷標(biāo)注能否移動(dòng)
(1)移動(dòng)總體規(guī)則:判斷能否向左、向右、向上移動(dòng),每個(gè)方向可以移動(dòng)一次;
(2)判斷是否能夠向右移動(dòng),判斷標(biāo)準(zhǔn)是:標(biāo)注右邊線的xt+wt比右側(cè)人臉區(qū)域的x 的值小,并且標(biāo)注左邊線的xt比目標(biāo)人臉區(qū)域的x+w/2 值?。?/p>
(3)判斷是否能夠向左移動(dòng),判斷標(biāo)準(zhǔn)是:標(biāo)注左邊線的xt比左側(cè)人臉區(qū)域和左側(cè)標(biāo)注區(qū)域的x+w 的值大并且標(biāo)注右邊線的xt+wt比目標(biāo)人臉區(qū)域的x+w/2 值大;
(4)判斷能否向上移動(dòng),判斷標(biāo)準(zhǔn)是:標(biāo)注上邊線yt要大于上方人臉區(qū)域的y+h 的值。
2.4.4 橫豎移動(dòng)
通過(guò)移動(dòng)標(biāo)注以避免遮擋,標(biāo)注移動(dòng)之后,還是要再次驗(yàn)證是否與其他人臉以及標(biāo)注區(qū)域是否有遮擋。
2.4.4.1 向右平移
(1)假設(shè)p1(xt,yt)落在f(xi,yi,wi,hi)區(qū)域中。
(2)確定移動(dòng)距離d=xi+wi-xt,判斷xt+wt+d 是否比右側(cè)人臉區(qū)域x 小,并且xt+d 比目標(biāo)人臉區(qū)域x+w/2 值小,如果驗(yàn)證通過(guò),則標(biāo)注向右平移距離d 以避免遮擋;否則無(wú)法通過(guò)向右平移避免遮擋。
(3)標(biāo)注向右平移距離d 之后,得到標(biāo)注四個(gè)頂點(diǎn)新的坐標(biāo)如下:
p1(xt+d,yt)、p2(xt+wt+d,yt)、p3(xt+d,yt+ht)、p4(xt+wt+d,yt+ht)。
2.4.4.2 向左平移
(1)假設(shè)p2(xt+wt,yt)落在f(xi,yi,wi,hi)區(qū)域中。
(2)確定移動(dòng)距離d=xt+wt-xi,判斷xt-d 是否比左側(cè)人臉區(qū)域和左側(cè)標(biāo)注區(qū)域x+w 大,并且xt+wt-d 比目標(biāo)人臉區(qū)域x+w/2 值大,如果驗(yàn)證通過(guò),則標(biāo)注向左平移距離d 以避免遮擋;否則無(wú)法通過(guò)向左平移避免遮擋。
(3)標(biāo)注向左平移d 之后,得到標(biāo)注四個(gè)頂點(diǎn)新的坐標(biāo)如下:
p1(xt-d,yt)、p2(xt+wt-d,yt)、p3(xt-d,yt+ht)、p4(xt+wt-d,yt+ht);
2.4.4.3 向上移動(dòng)
(1)假設(shè)p3(xt,yt+ht)落在f(xi,yi,wi,hi)區(qū)域中。
(2)確定移動(dòng)距離d=yt+ht-yi,判斷yt-d 是否大于上部人臉區(qū)域的y+h 值,如果判斷通過(guò),則標(biāo)注向上移動(dòng)距離d 以避免遮擋;否則無(wú)法通過(guò)向上移動(dòng)避免遮擋;
(3)標(biāo)注向上移動(dòng)距離d 之后,得到標(biāo)注四個(gè)頂點(diǎn)新的坐標(biāo)如下:
p1(xt,yt-d)、p2(xt+wt,yt-d)、p3(xt,yt+ht-d)、p4(xt+wt,yt+ht-d);
2.4.5 繪制標(biāo)注文本當(dāng)標(biāo)注與其他人臉區(qū)域和標(biāo)注區(qū)域沒(méi)有遮擋時(shí),可以直接將標(biāo)注本文繪制到標(biāo)注區(qū)域中。
2.4.6 空白區(qū)域引線標(biāo)注
當(dāng)無(wú)法通過(guò)移動(dòng)以避免遮擋,則將標(biāo)注區(qū)域沿y 軸向上或者向下移動(dòng)到照片空白區(qū)域中,將標(biāo)注文本繪制到標(biāo)注區(qū)域中并增加指引線。如圖6所示。
2.4.7 人工確認(rèn)及完善樣本庫(kù)
當(dāng)自動(dòng)標(biāo)注完成后,由人工進(jìn)一步確認(rèn),比如對(duì)標(biāo)注文本位置進(jìn)行調(diào)整。人工繼續(xù)手工確認(rèn)新的人臉,確認(rèn)新的人臉時(shí)候,將新的人臉圖像指紋和標(biāo)注文本添加到人臉樣本庫(kù)中,這樣待下一張照片檔案進(jìn)行識(shí)別時(shí),就可以使用更加完善的樣本庫(kù)進(jìn)行對(duì)比[5]。
本文基于人臉檢測(cè)算法、人臉相似度比較算法和標(biāo)注位置智能推薦算法,實(shí)現(xiàn)重復(fù)人物自動(dòng)標(biāo)注為主、手工標(biāo)注為輔的標(biāo)注方式,使得標(biāo)注在保證質(zhì)量情況下,工作效率得到明顯提高。