張 爽, 王 華, 高金剛
(長(zhǎng)春工程學(xué)院 機(jī)電工程學(xué)院, 長(zhǎng)春 130012)
實(shí)際應(yīng)用中的許多物體都存在數(shù)字或字符標(biāo)記在物體或?qū)ο笊嫌脕?lái)標(biāo)記信息的情形, 如身份證號(hào)、 車牌號(hào)及銀行卡號(hào)等. 近年來(lái), 二維碼及各種電子標(biāo)簽的方式應(yīng)用廣泛, 但均為一種易于計(jì)算機(jī)軟件識(shí)別的方式獲取實(shí)體世界中的信息[1]. 而賦予機(jī)器設(shè)備能像人眼一樣讀懂字符和數(shù)字, 而不是以二維碼或條形碼方式獲取信息, 是人工智能發(fā)展的一個(gè)重要方向[2-3].
目前, 字符識(shí)別系統(tǒng)應(yīng)用廣泛, 如車牌字符自動(dòng)識(shí)別[4]等. 實(shí)踐表明, 目前已有的這些算法具有良好的識(shí)別效果[5], 但其應(yīng)用范圍受環(huán)境影響, 如車輛行駛速度、 字符大小及格式、 光照條件等[6]. 隨著科學(xué)技術(shù)的發(fā)展, 各行業(yè)的管理發(fā)展趨勢(shì)都是逐步從人工管理轉(zhuǎn)變?yōu)樽詣?dòng)化管理[7]. 對(duì)于機(jī)械制造業(yè)中生產(chǎn)的零部件, 通常都要求在零部件上標(biāo)記字符, 以表示零件名、 零件編號(hào)、 生產(chǎn)日期和批次號(hào)等. 列車轉(zhuǎn)向架輪對(duì)端面刻有數(shù)字和英文字母的字符, 以表述生產(chǎn)日期和時(shí)間、 零件編號(hào)、 操作員編號(hào)等重要生產(chǎn)過(guò)程追溯信息. 生產(chǎn)過(guò)程追溯信息是產(chǎn)品質(zhì)量控制分析和內(nèi)外部物流跟蹤、 轉(zhuǎn)向架生產(chǎn)組織管理及售后質(zhì)量問(wèn)題分析的重要參考信息. 列車轉(zhuǎn)向架輪對(duì)軸端刻印的字符如圖1所示. 本文以列車轉(zhuǎn)向架的關(guān)鍵部件輪對(duì)軸端刻印字符為研究對(duì)象, 提出一種在生產(chǎn)車間復(fù)雜的背景下, 適應(yīng)實(shí)際環(huán)境的字符識(shí)別方法, 自動(dòng)識(shí)別這些零部件上的字符, 用以指導(dǎo)生產(chǎn)、 車間物流及生產(chǎn)信息記錄等.
圖1 列車轉(zhuǎn)向架輪對(duì)軸端字符Fig.1 Characters on train wheel set bogie
人工蜂群算法[8]源于蜜蜂尋找蜜源及采蜜的行為方式, 包括蜂群的分工、 信息傳遞等群體行為, 完成對(duì)尋優(yōu)問(wèn)題的求解[9]. 相比于蟻群算法、 遺傳算法和粒子群算法等其他群智能優(yōu)化算法, 其具有更顯著的尋優(yōu)能力, 廣泛應(yīng)用于各領(lǐng)域[10].
算法基本流程如下: 蜜源為整個(gè)搜索域內(nèi)相對(duì)有價(jià)值的解, 選取合理的函數(shù)使蜜源的價(jià)值與求解問(wèn)題的函數(shù)建立聯(lián)系, 即收益度函數(shù)值能衡量蜜源價(jià)值. 初始時(shí), 蜂群分為采蜜蜂和跟隨蜂兩類. 設(shè)蜜蜂總數(shù)為Ns, 跟隨蜂數(shù)量為Nu, 采蜜蜂數(shù)量為Ne, 對(duì)于蜂群分組通常將采蜜蜂的數(shù)量設(shè)為蜂群總數(shù)的一半, 另一半蜂群被設(shè)為跟隨蜂. 對(duì)于每個(gè)蜜蜂, 其搜索區(qū)域即為待優(yōu)化問(wèn)題解的變量空間, 變量空間的維數(shù)設(shè)為D. 蜂群設(shè)為x={x1,x2,…,xNe},xi為任意一只采蜜蜂, 則
(1)
(2)
其中第xi個(gè)收益度函數(shù)值用f(xi)表示. 每次迭代后, 采蜜蜂招募跟隨蜂對(duì)已搜索到位置的鄰域進(jìn)行搜索, 然后比較搜索到的新位置vi與原位置xi的收益度函數(shù)值大小, 并選擇其中收益度大的位置作為該蜜蜂下一次鄰域搜索的位置. 鄰域搜索位置公式為
vi,j=xi,j+fi,j(xi,j-xk,j),
(3)
其中:j∈{1,2,…,D},k∈{1,2,…,Ne},k,j為搜索范圍內(nèi)隨機(jī)自然數(shù), 且k≠j;fi,j為[-1,1]內(nèi)的隨機(jī)系數(shù), 其作用是保持鄰域搜索時(shí)的隨機(jī)性. 將蜂群按收益度大小排序, 跟隨蜂優(yōu)先選擇收益度高的采蜜蜂, 跟隨其在鄰域內(nèi)搜索. 若在鄰域新位置找到的蜜源收益度更高, 則令新位置替代采蜜蜂的原位置.
若采蜜蜂的鄰域搜索次數(shù)超過(guò)設(shè)定的規(guī)則, 但仍未找到收益度更高的蜜源, 則其身份轉(zhuǎn)變?yōu)閭刹榉? 并繼續(xù)在全局內(nèi)隨機(jī)產(chǎn)生新位置作為下一輪迭代的搜索位置. 當(dāng)滿足預(yù)先設(shè)定的停止條件時(shí), 如總迭代次數(shù)或未滿足收益值提高的閾值等, 則算法停止并輸出結(jié)果; 若未滿足算法停止條件, 則蜂群將進(jìn)行下一輪迭代過(guò)程. 人工蜂群算法流程如圖2所示.
圖2 人工蜂群算法流程Fig.2 Flowchart of artificial bee colony algorithm
人工蜂群算法通過(guò)模擬蜂群信息溝通, 控制蜂群在相對(duì)收益大的位置進(jìn)行鄰域搜索, 放棄適應(yīng)度值低的位置, 并對(duì)在全局內(nèi)隨機(jī)產(chǎn)生的新位置進(jìn)行搜索, 即可實(shí)現(xiàn)在每次迭代中逐步優(yōu)化搜索值的目的, 并最終搜索到問(wèn)題的最優(yōu)解. 對(duì)采蜜蜂、 跟隨蜂和偵查蜂進(jìn)行不同分工及將其身份互相轉(zhuǎn)化, 實(shí)現(xiàn)算法在全局搜索的優(yōu)異性能及鄰域求解的更高精度.
小生境是指在生物學(xué)的特定環(huán)境中由一種生物群體組成的群體組織. 在自然界中, 常見(jiàn)一些習(xí)性或特征等相似的物種聚集并生活在一起組成群體, 并逐漸形成一種物種及其特定的生存空間. 小生境技術(shù)通常被應(yīng)用于處理多模函數(shù)優(yōu)化問(wèn)題中. 多模優(yōu)化問(wèn)題是搜索問(wèn)題的全局最優(yōu)解及局部最優(yōu)解[11]. 小生境技術(shù)能控制群體優(yōu)化方向, 并形成多個(gè)物種, 即使算法最終收斂到多個(gè)不同的解空間, 從而避免了算法過(guò)早收斂于局部最優(yōu)空間, 可增強(qiáng)算法的局部搜索性能.
人工蜂群算法可用于尋找全局最優(yōu)解, 具有收斂速度快、 求解精度高、 參數(shù)設(shè)置少等特點(diǎn). 為優(yōu)化人工蜂群算法局部最優(yōu)解的搜索能力, 在算法中引進(jìn)小生境技術(shù), 在各局部搜索空間形成所需物種, 從而在兼顧全局最優(yōu)解能力的基礎(chǔ)上, 增強(qiáng)算法局部搜索能力. 小生境識(shí)別、 跟隨蜂選擇策略是將小生境技術(shù)應(yīng)用到人工蜂群算法中的關(guān)鍵. 本文選擇限制競(jìng)爭(zhēng)策略作為小生境保持策略, 即設(shè)定每個(gè)子種群各自的獨(dú)立搜索空間, 從而限制子種群之間在搜索域內(nèi)的競(jìng)爭(zhēng), 避免了算法在局部搜索域內(nèi)過(guò)早收斂于某個(gè)特定的位置.
在人工蜂群算法中, 蜜源效益度高的采蜜蜂群體具有引導(dǎo)跟隨蜂的職能, 控制這些采蜜蜂的搜索方向, 可實(shí)現(xiàn)在迭代運(yùn)算過(guò)程中引導(dǎo)整個(gè)蜂群的搜索范圍. 采用設(shè)定小生境半徑的方法限定每個(gè)子種群的搜索范圍, 對(duì)于進(jìn)入其他小生境搜索范圍的采蜜蜂, 賦予其新的位置, 通過(guò)限制與引導(dǎo)的策略控制多次迭代中算法能按預(yù)定的方式搜索.
小生境人工蜂群算法步驟如下:
1) 設(shè)置基本參數(shù), 包括限制次數(shù)limit、 最大迭代次數(shù)maxCycle、 子種群的數(shù)目N、 子種群規(guī)模Bee total、 小生境半徑R-niche等;
2) 在規(guī)定的搜索范圍內(nèi), 隨機(jī)產(chǎn)生子種群的搜索位置, 結(jié)束搜索后計(jì)算每個(gè)子種群內(nèi)蜜蜂的適應(yīng)度函數(shù)值, 將數(shù)值按大小排序, 并存儲(chǔ)相對(duì)優(yōu)異的位置及函數(shù)值;
3) 子種群內(nèi)的采蜜蜂按設(shè)定的方法搜索新蜜源, 并與上次迭代中存儲(chǔ)的蜜源收益比較, 當(dāng)新蜜源效益度值高于存儲(chǔ)的蜜源效益度時(shí), 令新蜜源替換之前的蜜源, 即存儲(chǔ)本次新搜索到的蜜源效益度值及位置;
4) 根據(jù)蜜源效益度值的大小排序, 效益度高的采蜜蜂獲得大概率招募跟隨蜂, 并引領(lǐng)跟隨蜂在上次迭代位置的鄰域附近搜索新的潛在蜜源位置;
5) 若在鄰域內(nèi)搜索效益度更高的蜜源次數(shù)達(dá)到設(shè)定閾值, 但仍未找到更優(yōu)的蜜源位置, 則將這只采蜜蜂身份轉(zhuǎn)化為偵查蜂, 并在下次迭代中執(zhí)行隨機(jī)全局搜索;
6) 計(jì)算每個(gè)子種群內(nèi)每個(gè)蜜蜂的效益度值, 排序并保存更新后的各子種群內(nèi)最優(yōu)解的效益度值及位置;
7) 判斷蜜蜂是否進(jìn)入其他子種群搜索范圍內(nèi), 如果存在則重新設(shè)定該蜜蜂的搜索位置;
8) 檢查算法是否已達(dá)到設(shè)定的迭代次數(shù)上限值, 如果達(dá)到則算法結(jié)束, 輸出結(jié)果; 如果次數(shù)未達(dá)到, 則算法返回步驟3).
考慮字符圖像的邊緣特性, 并合理設(shè)置小生境人工蜂群算法參數(shù), 包括子種群數(shù)量、 算法結(jié)束條件、 小生境半徑、 群體規(guī)模、 解的保存方式和效益度函數(shù). 算法結(jié)束條件的設(shè)置常用限定循環(huán)次數(shù)或效益度函數(shù)值大于設(shè)定的閾值. 小生境半徑合理的設(shè)定可合理分配蜂群的搜索能力, 以獲得包含多個(gè)局部最優(yōu)解的結(jié)果. 在蜂群上次搜索的最優(yōu)解對(duì)應(yīng)的八鄰域內(nèi)繼續(xù)搜索與效益度函數(shù)值最接近中心的點(diǎn), 將搜索到的新位置替代原位置, 并作為下一次搜索的中心位置. 算法循環(huán)執(zhí)行直至算法滿足結(jié)束條件并停止. 提取出每次循環(huán)搜索到的位置, 即得到了對(duì)應(yīng)圖像的邊緣圖像.
蜂群的數(shù)量是決定算法搜索能力的重要參數(shù). 若蜂群數(shù)量設(shè)定過(guò)多, 則會(huì)導(dǎo)致運(yùn)算能力的浪費(fèi), 且結(jié)果中會(huì)包含劣勢(shì)解. 若蜂群數(shù)量設(shè)定過(guò)少, 則會(huì)導(dǎo)致搜索能力不足[12]. 合理的蜂群數(shù)量應(yīng)該是根據(jù)圖像邊緣信息及圖像的尺寸確定. 本文采用將圖像中所有像素點(diǎn)之和的平方根作為蜂群數(shù)量, 計(jì)算公式為
(4)
其中:N表示圖像的像素行數(shù);M表示圖像的像素列數(shù);Ns表示蜂群的總數(shù)量. 跟隨蜂Ne的數(shù)量為
Ne=Ns/2.
(5)
子種群數(shù)量N由圖像內(nèi)容及布局設(shè)定, 對(duì)于字符圖像, 可設(shè)定為字符的數(shù)量, 即每個(gè)子種群對(duì)應(yīng)一個(gè)字符, 即可保證子種群的搜索能力覆蓋到每個(gè)字符. 對(duì)于本文中待識(shí)別的字符, 每個(gè)字符像素點(diǎn)相對(duì)接近, 對(duì)于子種群規(guī)模Bee total設(shè)定時(shí), 將蜂群總體平均分配到每個(gè)子種群中以簡(jiǎn)化算法. 為避免種群搜索空間交叉的現(xiàn)象, 小生境半徑可設(shè)為字符中心之間的距離.
選擇與圖像邊緣點(diǎn)強(qiáng)相關(guān)的函數(shù)作為小生境人工蜂群算法的效益度函數(shù)表達(dá)式[13-14]. 本文算法的效益度函數(shù)采用像素點(diǎn)八鄰域的灰度突變值函數(shù), 效益度函數(shù)為
f(Ii,j)=|Ii-1,j-1-Ii+1,j+1|+|Ii-1,j-Ii+1,j|+|Ii-1,j+1-Ii+1,j-1|+|Ii,j-1-Ii,j+1|,
(6)
其中: (i,j)表示圖像中任意一個(gè)像素點(diǎn)的位置;Ii,j表示位置(i,j)的灰度值.f(Ii,j)的八鄰域如圖3所示.
圖3 八鄰域示意圖Fig.3 Schematic diagram of 8 neighbor area
圖4 圖像邊緣及灰度值Fig.4 Edge image and gray value
若某像素點(diǎn)八鄰域灰度梯度值大于或等于設(shè)定的判定閾值, 則設(shè)定該像素點(diǎn)為邊緣點(diǎn), 并將該點(diǎn)的灰度值標(biāo)記為1, 如圖4所示. 圖像灰度梯度值的閾值為
T=fix(std2(image))×1.5.
(7)
以如圖5所示的實(shí)際生產(chǎn)線上零部件采集到的單個(gè)字符為例說(shuō)明本文算法的有效性. 圖5中圖像大小為193×103, 則蜂群數(shù)量
圖5 初始圖像Fig.5 Initial image
待搜索的字母為4個(gè), 子種群規(guī)模
Beetotal=140÷4=35;
閾值
T=fix(std2(image))×1.5=93;
總迭代次數(shù)iter為10次, 鄰域搜索次數(shù)設(shè)定為5次. 由圖5可見(jiàn), 圖像寬度為193個(gè)像素, 其中每個(gè)字母在整個(gè)圖像中寬度的分布列于表1. 在小生境算法中, 設(shè)定規(guī)則保證每個(gè)子種群的搜索范圍固定在對(duì)應(yīng)字母的整體圖像寬度分布內(nèi), 從而保證每個(gè)字母得到均衡的搜索能力.
表1 字母寬度分布Table 1 Distribution of alphabet width
圖6為未應(yīng)用小生境半徑算法得到的字符邊緣圖像, 圖7為應(yīng)用小生境算法得到的字符邊緣圖像. 對(duì)比圖6與圖7可見(jiàn), 圖6的邊緣點(diǎn)明顯分布不均, 以致于第一個(gè)字母V下部明顯缺失.
圖6 未應(yīng)用小生境算法的邊緣圖像Fig.6 Edge image without niche algorithm
圖7 應(yīng)用小生境算法的邊緣圖像Fig.7 Edge image obtained by niche algorithm
分別統(tǒng)計(jì)圖6和圖7中每個(gè)字母的邊緣點(diǎn)數(shù)量, 結(jié)果列于表2. 由表2可見(jiàn), 應(yīng)用小生境算法得到的對(duì)應(yīng)每個(gè)字母的邊緣點(diǎn)數(shù)量一致, 均為249個(gè), 而未應(yīng)用小生境算法得到的圖像邊緣點(diǎn)在4個(gè)字母上分布不均勻, 字母B上的數(shù)量為393個(gè), 是字母T邊緣點(diǎn)150個(gè)的2.62倍, 而應(yīng)用了小生境算法得到的字母T的邊緣點(diǎn)數(shù)量為249個(gè), 是未應(yīng)用小生境算法得到字母T邊緣點(diǎn)的1.66倍. 實(shí)例測(cè)試結(jié)果表明, 應(yīng)用小生境技術(shù)的人工蜂群算法采集到的邊緣圖像邊緣點(diǎn)分布均勻, 更利于下一步的字符識(shí)別.
表2 邊緣點(diǎn)數(shù)量對(duì)比Table 2 Quantity comparison of edge points
綜上所述, 本文將小生境人工蜂群優(yōu)化算法與圖像邊緣檢測(cè)原理相結(jié)合, 提出了一種針對(duì)字符圖像的邊緣檢測(cè)新方法. 利用小生境技術(shù)合理布置搜索能力, 通過(guò)控制子種群規(guī)模和搜索位置, 提高了局部搜索精度, 加強(qiáng)了算法的總體搜索能力. 對(duì)圖像進(jìn)行小生境人工蜂群算法的字符邊緣檢測(cè), 可按需求控制搜索的位置和能力, 極大地方便了后續(xù)處理過(guò)程. 實(shí)驗(yàn)結(jié)果表明, 該方法不僅能快速地識(shí)別出字符, 且對(duì)較模糊或亮度不均勻的圖像也能準(zhǔn)確識(shí)別, 適用于生產(chǎn)車間的復(fù)雜環(huán)境, 可滿足圖像檢測(cè)的實(shí)時(shí)性需求.