Tải bản đầy đủ (.pdf) (75 trang)

Luận văn: Tìm hiểu các kỹ thuật áp dụng cho bài toán nhận dạng ký hiệu người câm pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (12.97 MB, 75 trang )










TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
B MÔN CÔNG NGH PHN MM



INH BÁ THNG – NG BÁC VN



TÌM HIU CÁC K THUT
ÁP DNG CHO BÀI TOÁN
NHN DNG KÝ HIU NGI CÂM



KHÓA LUN C NHÂN TIN HC








TP.HCM, NM 2005









TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
B MÔN CÔNG NGH PHN MM


INH BÁ THNG – 0112446
NG BÁC VN – 0112454

TÌM HIU CÁC K THUT
ÁP DNG CHO BÀI TOÁN
NHN DNG KÝ HIU NGI CÂM


KHÓA LUN C NHÂN TIN HC


GIÁO VIÊN HNG DN
T.S DNG ANH C

Th.S NGUYN TRI TUN



NIÊN KHÓA 2001 - 2005









LI NHN XÉT CA GIÁO VIÊN HNG DN
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………

……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………









LI NHN XÉT CA GIÁO VIÊN PHN BIN
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………

……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………









Li cm n
Chúng em xin chân thành cm n Khoa Công ngh Thông tin, trng i hc

Khoa hc T nhiên TP.HCM đã to điu kin cho chúng em thc hin đ tài lun vn
tt nghip này.
Chúng em xin gi li cm n sâu sc đn Tin s Dng Anh c, Thc s
Nguyn Tri Tun và Thc s Lê ình Duy đã tn tình hng dn chúng em trong sut
thi gian thc hin đ tài. Qua thi gian đc các thy hng dn, chúng em đã bit
cách làm vic khoa hc hn, bit cách “Khi em vit ra mt cái gì không phi ca em thì
em phi cho ngi khác bit cái đó là ca ai”, cng nh “Khi em nói kt qu em đt
đc là khá tt thì phi nó rõ tt là tt th nào”.
Chúng em xin chân thành cm n các Thy Cô trong Khoa đã truyn đt cho
chúng em nhng kin thc quý báu trong nhng nm hc va qua, giúp chúng em có
đc mt nn tng lý thuyt vng chc đ có th tip tc theo hc hay đi tìm vic làm.
Chúng con xin đc bày t lòng bit n sâu sc đi vi Ông Bà, Cha M, ngi
luôn luôn quan tâm chm sóc c v mt vt cht ln tinh thn, luôn to điu kin cho
chúng con chuyên tâm hc tp và nghin cu.
Cui cùng, xin đc nói li cm n chân thành đn các anh ch và các bn đã giúp
đ, khích l cng nh phê bình, góp ý, giúp chúng em hoàn thành công vic mt cách
tt nht.
Tuy chúng em đã n lc ht sc mình và hoàn thành lun vn, nhng chc chn
lun vn vn còn nhiu thiu sót. Chúng em rt mong nhn đc s góp ý, ch bo tn
tình ca các Thy Cô và các bn đ chúng em có th tip tc thc hin nhng gì do
chính chúng em vit ra trong mc “hng phát trin” ca khóa lun này.
Thành ph H Chí Minh, Tháng 7/2005
Nhóm SV thc hin
inh Bá Thng – ng Bác Vn










Li nói đu
S ra đi ca máy tính đã giúp ích rt nhiu cho công vic và cuc sng ca con
ngi. Vi máy tính, con ngi có th son tho vn bn, nghe nhc, xem phim, thit
k đ ha, x lý nh, biên tp phim Tuy nhiên, vic giao tip gia con ngi và máy
tính ph thuc ch yu vào bàn phím và chut, và hu nh con ngi luôn phi ngi
trc máy tính. Dn dn, các nhà sn xut thy đc s bt tin và đã to ra bàn phím
và chut không dây vi mong mun mang li s t do hn cho ngi dùng. Tuy nhiên,
bàn phím không dây thì vn là bàn phím, con ngi cng ch có th tng tác vi máy
tính thông qua h thng 104 phím. Con ngi ch tht s đc “gii phóng” khi vic
tng tác vi máy tính đc thc hin thông qua các c ch trong cuc sng hàng ngày,
tc là máy tính phi “hiu” đc các c ch ca con ngi. ó chính là vn đ đt ra
cho bài toán nhn dng và phân loi c ch. Cho đn thi đim hin nay, dù đã có
nhiu cách tip cn khác nhau cho bài toán này, nhng dng nh vn cha có mt h
thng nhn dng c ch nào thc s hiu qu.
Bên cnh đó, bài toán nhn dng mt ngi đang đt đc mt kt qu rt kh
quan vi mô hình Cascade of Boosted Classifiers do Viola và Jones [1] đ ngh. Mô
hình này đt hiu qu cao c v đ chính xác ln thi gian nhn dng. Eng Jon [14] đã
áp dng mô hình này lên bài toán nhn dng bàn tay và cng đt đc kt qu tt.
Mc tiêu ca khóa lun này là th áp dng mô hình Cascade of Boosted
Classifiers lên bài toán phân loi c ch vi hi vng nó cng s đt đc kt qu tt
nh trên bài toán nhn dng mt ngi và nhn dng bàn tay. Lun vn đc trình bày
trong 6 chng vi b cc nh sau:
• Chng 1-M đu: Nêu lên tm quan trng ca bài toán phân loi c ch và
mô t s b phm vi bài toán mà khóa lun này s gii quyt. ng thi gii
đim s qua các cách tip cn hin có vi các u khuyt đim ca chúng và gii
thiu v mô hình s dng trong khóa lun này.










• Chng 2-Gii thiu bài toán phân loi c ch: Phát biu c th và mô t chi
tit phm vi bài toán s gii quyt, gii thích ti sao li chn mô hình Cascade
of Boosted Classifiers.
• Chng 3-C s lý thuyt: Trình bày v AdaBoost, Haar Feature, mô hình
Cascade of Classifiers, khái nim Integral Image, t đó hình thành nên cu trúc
Cascade of Boosted Classifiers. Tip đó là phn gii thiu các ng dng ca mô
hình và mt s nhn xét, đánh giá.
• Chng 4-Áp dng mô hình Cascade of Boosted Classifiers
: Trình bày chi
tit cách áp dng mô hình cascade lên bài toán phân loi c ch.
• Chng 5-Kt qu th nghim: Gii thiu v tp hun luyn, cách thu thp
mu, cách tin hành và kt qu hun luyn, đng thi so sánh đi chiu vi kt
qu ca ngi khác.
• Chng 6-Tng kt: Tóm tt các kt qu nghiên cu, nhng gì đã đt đc,
nhng gì còn h
n ch và nêu ra hng phát trin trong tng lai.










1
Mc Lc
Chng 1 M đu 6
Chng 2 Gii thiu v h thng phân loi c ch 12
Chng 3 Các c s lý thuyt 15
3.1 Tip cn Boosting 15
3.2 AdaBoost 16
3.3 Haar Feature 20
3.4 Cascade of Classifiers 24
3.5 Cascade of Boosted Classifiers 25
3.6 ánh giá 26
Chng 4 Phân loi c ch vi Cascade of Boosted Classifiers 29
4.1 B nhn dng 1 c ch 29
4.1.1 Tp hun luyn 29
4.1.2 c trng 31
4.1.3 Xây dng b nhn dng vi AdaBoost 32
4.1.4 Cascade of Boosted Classifiers 36
4.1.5 Hot đng ca b nhn dng c ch 38
4.2 B phân loi c ch 41
Chng 5 Kt qu th nghim 43
5.1 Tp hun luyn 43
5.2 Cách tin hành hun luyn 47
5.3 Kt qu th nghim 49
5.4 So sánh và đánh giá 53
Chng 6 Tng kt 56
6.1 Kt lun 56
6.2 Hng phát trin 57










2
Ph lc A: Các thut ng liên quan 59
Ph lc B: Các chng trình dùng cho hun luyn 62
Ph lc C: Các chng trình tin ích 66
Tài liu tham kho 67










3
Danh sách hình
Hình 1 - H thng 24 c ch 8
Hình 2 - B phân loi c ch 8
Hình 3 - B phân loi đc to thành t s kt hp các b nhn dng 10
Hình 4 - H thng 24 c ch 13

Hình 5 - Boosting 16
Hình 6 - Strong classifier H(x) xây dng bng AdaBoost 17
Hình 7 - Haar Feature c bn 21
Hình 8 - Haar Feature cho mt ngi 21
Hình 9 - SAT(x,y) và cách tính tng các đim nh trong mt hình ch nht bt kì 22
Hình 10 - Haar Feature xoay 45º do Lienhart đ ngh 23
Hình 11 - RSAT(x,y) và cách tính tng các đim nh trong mt hình ch nht xoay 1
góc 45º 23
Hình 12 - Cascade of Classifiers 25
Hình 13 - B nhn dng c ch A 29
Hình 14 - Các mu positive cho b nhn dng ch A 30
Hình 15 - Các mu negative (B, C, D) cho b nhn dng ch A 30
Hình 16 - Tp hun luyn ca các weak classifiers 31
Hình 17 - Các Haar Feature s dng trong b nhn dng 1 c ch 31
Hình 18 - Cách chn weak classifier ca AdaBoost 34
Hình 19 - Chn ngng θ da vào min detection rate 35
Hình 20 - Các vùng nh không liên quan (nét mnh) s b loi ngay t nhng stages
đu tiên 39
Hình 21 - Khc phc trng hp nhiu vùng nh k cn nhau bng cách ly vùng nh
trung bình 39
Hình 22 - i vi các vùng nh lng nhau, các vùng nh bên trong s b loi b 40










4
Hình 23 - Các c ch ging nhau trong h thng 24 c ch 41
Hình 24 – Cu trúc b phân loi c ch 42
Hình 25 - Hình chp bng Webcam 43
Hình 26 - Hình chp ch B 44
Hình 27 - Tiêu đim ca c ch B 44
Hình 28 - Hình ch B sau khi ct 45
Hình 29 - Biu đ Hit Rate 46
Hình 30 - Biu đ False Alarm 46
Hình 31 - S khác bit gia b nhn dng hun luyn trên nh background có và không
có các b phn c th (bên trái là không và bên phi là có) 47
Hình 32 - Kt qu có đc khi đa c ch 'U' và 'F' vào b nhn dng c ch 'B' 48
Hình 33 - Các c ch trong tp test th nht 50
Hình 34 - Các c ch trong tp test th hai 50
Hình 35 - Biu đ thng kê Hit Rate ca 24 b nhn dng trên tp test gm 592 hình 52
Hình 36 - Kt qu th nghim ca Viola và Jones 53
Hình 37 - H thng 8 c ch trong bài toán ca Kolsch 53
Hình 38 - Biu đ so sánh Hit Rate gia ký hiu Victory vi c ch V 54
Hình 39 - Biu đ so sánh Hit Rate gia ký hiu LPalm vi c ch L 54
Hình 40 - Vài kt qu test ca b nhn dng c ch A (c ch B là mt trng hp false
alarm) 55











5
Danh sách bng
Bng 1 - Kt qu hun luyn vi 3 kích thc ca mu positive 45
Bng 2 - Kt qu hun luyn qua 3 lp ca b nhn dng c ch B 49
Bng 3 - Kt qu thu đc ca b nhn dng c ch A trên 2 tp test 50
Bng 4 - Kt qu th nghim ca 24 b nhn dng trên tp test gm 592 hình 52










Chng 1. M đu
6

Chng 1 M đu
Mc dù nn công ngh thông tin vn phát trin liên tc vi tc đ v bão nhng
chúng ta vn còn mt chng đng rt dài đ có th giao tip mt cách hoàn toàn t
nhiên vi máy tính nh giao tip gia con ngi vi nhau. Cách giao tip t nhiên nht
vi máy tính chính là dùng giao tip thông qua ting nói và c ch. Trong khi lnh vc
nhn dng ting nói đã đt đc nhng thành công đáng k trong vòng 10 nm gn đây
thì lnh vc nhn dng c ch vn còn tt li phía sau. Tuy nhiên, ngôn ng c ch li
chính là ngôn ng chuyn ti thông tin gia ngi và ngi mt cách trn vn nht.
Nu gi s chúng ta phát trin đc mt h thng nhn dng ting nói kt hp vi nhn
dng c ch thì chúng ta hoàn toàn có th thay th chut hay bàn phím bng mt h

thng s dng ngôn ng t nhiên điu khin máy tính thông qua b giao tip bng lnh
da trên c ch và ging nói.
Trong cuc sng hàng ngày, nhn dng c ch có th giúp cho vic giao tip gia
ngi bình thng vi ngi khim thính d dàng hn, vì máy tính s giúp ngi bình
thng không cn hiu h thng kí hiu ca ngi khim thính, mt ngôn ng không
phi d hc. Trong công nghip và sn xut, ch cn trang b cho các robot h thng
camera, vic điu khin robot s tr nên đn gin hn bao gi ht. Trong lnh vc đ
ha 3 chiu, ta có th dùng mt s đng tác yêu cu máy tính xoay mô hình theo ý
mun ca mình.Trong công vic vn phòng, nhn dng c ch giúp ta có th yêu cu
máy tính thc thi mt chng trình, m mt bài hát, gi mt lá th ch vi mt vài
c ch ra hiu t xa. Trong lnh vc gii trí, các trò chi thc t o (Virtual Reallity) –
các trò chi mà ngi chi điu khin hành đng nhân vt bng chính hành đng ca
mình – luôn có sc cun hút đc bit vi ngi chi.








Chng 1. M đu
7
Cùng vi nhn dng âm thanh, ting nói và x lý ngôn ng, nhn dng c ch
giúp máy tính thc s tr nên “ngi” hn – điu mà các nhà khoa hc đang mit mài
nghiên cu vi hi vng s đt đc trong mt tng lai không xa.
Tuy nhiên, chính các ng dng to ln trên khin cho bài toán thc s là mt thách
thc.  có th đc đa vào s dng, mt h thng trc ht phi hiu đúng các c
ch ca con ngi, tc là nó phi nhn dng đc chính xác các c ch đó. Mt h
thng xoay mô hình không đúng vi ý ca chuyên viên đ ha, hay mt con robot

chuyên làm sai ch th thì khó có th đc chp nhn.
Bên cnh đó, đ có th tng tác vi ngi dùng, h thng nhn dng xây dng
phi là h thng thi gian thc, phi x lý nhanh. Mt chuyên viên đ ha s không
chp nhn mt h thng cn đn 30 giây đ xoay mô hình ca h. Mt con robot s
không đc chp nhn nu nó cn đn 20 giây đ hiu ra rng nó phi làm mt vic gì
đó ngay lp tc. Hay nh trong mt cuc giao tip, nu mt h thng phi mt đn 10
giây cho mi c ch mà ngi khim thính ra du thì nó cng không th đc chp
nhn.
Bài toán nhn dng c ch có th chia làm 2 loi chính: nhn dng c ch tnh và
nhn dng c ch đng. C ch tnh là các c ch ng vi mt t th c đnh ca mt
bàn tay, còn c ch đng là chuyn đng theo mt qu đo nht đnh ca mt hay hai
bàn tay. Nhn dng c ch đng bao hàm c nhn dng c ch tnh và mt s x lý trên
chuyn đng nên ht sc phc tp. Khóa lun này ch tp trung vào bài toán nhn dng
c ch tnh.
H thng phân loi c ch xây dng trong khóa lun này là mt h thng có kh
nng nhn dng và phân loi 24 c ch ng vi 24 kí t trong bng ch cái (tr ch J
và Z do đòi hi chuyn đng ca bàn tay)








Chng 1. M đu
8

Hình 1 - H thng 24 c ch


Hình 2 - B phân loi c ch
B phân loi có th đc ng dng đ xây dng h thng hot đng da trên 1 webcam
dùng đ theo dõi chuyn đng ca bàn tay. Khi ngi dùng ra du vi 1 c ch, h
thng s rút trích mt khung hình chính trong s các khung hình mô t toàn b quá
trình ra du ca ngui dùng đc webcam ghi li và đa nó vào b phân loi c ch.
B phân loi s cho kt qu phân loi là nó thuc v c ch nào hay nó không nm
trong h thng 24 c ch. T đó có th phát trin thêm đ h thng thc hin mt s
chc nng c th khi nhn đc các c ch tng ng t ngi dùng.
Bài toán đt ra 2 khó khn ln: nhn dng không nhng phi chính xác mà còn
phi nhanh bi vì h thng hot đng theo thi gian thc. Yêu cu v tính chính xác
cng là khó khn ca bt c mt bài toán nhn dng nào. Riêng đi vi bài toán phân








Chng 1. M đu
9
loi c ch thì vic phân loi chính xác li càng khó khn hn bi vì trong s 24 c ch,
có rt nhiu c ch ging nhau (chng hn nh A, E, S và T).
 có th đt đ chính xác cao, trc ht h thng phi có các đc trng (feature)
tt. H thng phi bit chn đc trng nh th nào đ có th biu din tt đc thông
tin đi tng cn nhn dng. ng thi, đc trng phi đc tính toán nhanh, đ không
làm chm công vic nhn dng. Thêm vào đó, h thng phi có phng pháp hc hiu
qu, có kh nng nhn dng tt các mu mi ch không ch làm tt trên các mu đã
hc (vn đ v generalization).
 có th đt đc các mc tiêu trên, đã có nhiu cách tip cn đc đa ra.

Freeman s dng đc trng Orientation Histogram [15] vi thi gian tính toán nhanh,
nhng li đòi hi mu nhn dng phi là mu chp cn cnh ca bàn tay. ng thi
cách này không áp dng đc khi h thng có các c ch tng t nhau, vì các c ch
tng t nhau cho Orientation Histogram ging nhau.
Bowden và Sarhadi [16] s dng mô hình nonlinear PDM (nonlinear point
distribution model) đ biu din đc nhiu thông tin v bàn tay. Nhng vic hun
luyn bng PDM nói chung khó đt đc s vng chc.
Ngoài ra, còn có cách tip cn da trên màu sc ca da trên bàn tay [17] bi vì
màu da tng đi thun nht. ây cng không phi mt cách tip cn tt vì các b
nhn dng xây dng trên đc trng là màu da rt nhy cm vi ánh sáng, và h thng
s nhn dng sai khi mu đa vào có cha các đi tng khác có màu ging vi màu
da
Nhìn chung, trong các cách tip cn trên đu có chung mt hn ch là không th
đt đc s cân đi gia kh nng nhn dng và thi gian x lý. Trong khi đó, hin có
mt mô hình đang đt đc s cân đi gia 2 mt này và hin đang đc Viola và
Jones áp dng rt thành công trong lnh vc nhn dng mt ngi: mô hình Cascade of
Boosted Classifiers vi đc trng s dng là Haar Feature [1] (mô hình cascade này
do chính Viola và Jones đ ngh).








Chng 1. M đu
10
Cascade of Boosted Classifiers là mt cu trúc cây mà  mi tng là mt classifier
(b phân loi). Classifier này đc xây dng bng thut toán AdaBoost trên nguyên tc

s kt hp ca nhiu weak classifiers (các b phân loi đn gin ch cn có đ chính
xác trên 50%) s to ra mt strong classifier (b phân loi có đ chính xác cao). c
trng s dng là Haar Feature, là mt tp các hình ch nht th hin mi liên h gia
các vùng nh vi nhau (mô hình này s đc trình bày chi tit trong chng 3). Bên
cnh đó, mô hình này cng đã đc Eng Jon áp dng lên bài toán nhn dng bàn tay
[14] vi kt qu kh quan.
Bài toán phân loi c ch khá ging vi bài toán nhn dng bàn tay ca Eng Jon.
Mt b phân loi c ch có th đc xây dng t nhiu b nhn dng c ch, trong đó,
mi b nhn dng ng vi 1 c ch c th.

Hình 3 - B phân loi đc to thành t s kt hp các b nhn dng
Khóa lun này xây dng các b nhn dng cho tng c ch theo mô hình Cascade
of Boosted Classfiers và da theo b nhn dng cho tng nhóm bàn tay ca Eng Jon
[14]. Do vn đ ca bài toán nhn dng bàn tay, các bàn tay có th  nhiu t th khác
nhau, Eng Jon đã s dng thut toán K-mediod đ tin hành phân cm cho tp hun
luyn và mi cm nh vy s đc xây dng mt b nhn dng cho nó. Còn đi vi
tng b phân loi c ch, khóa lun này gii hn bàn tay phi  t th c đnh và phi
đc chp chính din, do đó s không cn đn thut toán K-mediod.








Chng 1. M đu
11
Sau khi xây dng đc các b nhn dng cho tng c ch, b phân loi c ch s đc
xây dng t các b nhn dng này. Tuy nhiên, chúng s không đc kt hp mt cách

tun t nh trong hình 3 mà bn thân các c ch cng đc phân thành nhóm do s
ging nhau gia mt s c ch trong h thng 24 c ch. S ging nhau này s đc
xác đnh thông qua kt qu ca quá trình th nghim.
Các phn tip theo ca lun vn s ln lt trình bày các vn đ liên quan.
Chng 2 gii thiu cn k hn v bài toán, các vn đ đt ra, các cách tip cn và lý
do ti sao chn mô hình cascade. Chng 3 trình bày c s lý thuyt ca cách tip cn
cascade, thut toán AdaBoost và Haar Feature cùng vi các ng dng thành công ca
chúng. Chng 4 là phn áp dng mô hình lên bài toán phân loi c ch, bao gm cách
hun luyn , h thng các Haar Features s dng cùng vi cu trúc cây cascade và
cách kt hp các b nhn dng c ch đ hình thành b phân loi. Chng 5 là kt qu
th nghim và chng 6 là các đánh giá và hng phát trin ca lun vn.








Chng 2. Gii thiu v h thng phân loi c ch
12
Chng 2 Gii thiu v h thng phân loi c ch
Nh đã trình bày  phn trên, nhng ng dng to ln ca bài toán phân loi c ch
mang li nhiu khó khn không nh, vic gii quyt nó đòi hòi kin thc c v nhn
dng ln máy hc. Trong đó, 2 mc tiêu ln sau cùng chính là đ chính xác và tc đ.
H thng nhn dng phi có đc các đc trng tt, cha đng đc nhiu thông tin v
đi tng. i vi các c ch, tuy có th s dng các đc trng v hình hc nh chiu
ca ngón tay hay đng bao, nhng các đc trng này không phi lúc nào cng rõ ràng
và đ tin cy đ phân bit bàn tay vi các đi tng xung quanh, đc bit là di các
điu kin chiu sáng khác nhau.

ã có nhiu cách tip cn gii quyt vn đ này. Freeman đã s dng đc trng
Orientation Histogram [15] đ nhn dng c ch. Orientation Histogram có u đim là
có th tính toán nhanh và Freeman đã xây dng đc mt h thng nhn dng c thi
gian thc da trên đc trng này. ng thi, đc trng này giúp cho h thng hot
đng hiu qu  môi trng điu kin chiu sáng khác nhau vì Orientation Histogram
tng đi đc lp vi điu kin chiu sáng. Tuy nhiên, Orientation Histogram ch áp
dng đc trên tp các c ch hoàn toàn khác nhau, vì các c ch ging nhau cng s
cho Orientation Histogram tng t nhau. ng thi, khi tin hành nhn dng, bàn tay
phi chim gn trn mu đa vào, nu mu đa vào là mt không gian ln trong đó
cha bàn tay (kích thc nh) thì histogram ly đc s không phi đc trng ca bàn
tay, dn đn kt qu phân loi sai. Bowden và Sarhadi [16] thì s dng mô hình
nonlinear PDM đ biu din đc nhiu thông tin v bàn tay. Nhng vic hun luyn
bng PDM nói chung khó đm bo đc t l nhn dng cao và không đ tính tng quát.
Nolker và Nitter [18] s dng Local Linear Mapping (LLN) Neural Network đ ánh x
hình chp 2 chiu v ta đ 3 chiu theo Parametric Self-Organizing Map (PSOM). T
đó lu đc nhiu thông tin v bàn tay, giúp có th nhn dng c ch t nhiu góc đ








Chng 2. Gii thiu v h thng phân loi c ch
13
khác nhau. Dù vy, h thng này li không đt đc hiêu qu v mt thi gian. Nhìn
chung các cách tip cn này không đt đc s cân đi gia 2 mc tiêu đ ra ban đu.
Mc tiêu ca khóa lun này là xây dng đc mt h thng có kh nng phân loi
nhanh và chính xác h thng 24 c ch:


Hình 4 - H thng 24 c ch
H thng phân loi gm 3 phn chính:
1. Module hun luyn: xây dng b nhn dng cho tng c ch (Sign Detector). B
nhn dng này đc t chc theo cu trúc Cascade of Boosted Classfiers, mt
cascade tree mà mi tng là mt strong classifier đc xây dng bng Gentle
AdaBoost [4] - mt bin th ca thut toán AdaBoost. Mi classifier này là mt
chui các weak classifiers – các classifier đn gin ch cn có đ chính xác trên
50% - mi weak classifier s gm 1 haar feature và 1 ngng đ phân loi. Kt
qu tr ra ca module này là các tp tin d liu ng vi cu trúc cascade tree to
thành.
2. Module nhn dng c ch: to li cascade tree t tp tin ca b nhn dng đã
xây dng đ tin hành nhn dng. Ví d s dng tp tin ca b nhn dng c ch
A thì ta s đc A-Detector, vic nhn dng s là nhn dng mt vùng nh có
phi c ch A hay không. Module này nhn vào mt nh, trích ra tt c các vùng
nh vi v trí và kích thc khác nhau, đa chúng vào cascade tree và tr ra các








Chng 2. Gii thiu v h thng phân loi c ch
14
hình ch nht ng vi các vùng nh đc b nhn dng đánh giá là c ch. Vic
nhn dng  khâu này đc áp dng thêm mt s phng pháp heuristic nhm
tng detection rate và gim false alarm cho h thng.
3. B phân loi c ch: kt hp các b nhn dng c ch đ thc hin phân loi. B

phân loi s nhn vào mt nh và cho bit trong nh đó có cha nhng c ch
nào (cho bit v trí ca vùng nh tng ng vi các c ch).
Lý do mà khóa lun này chn Cascaded of Boosted Classifiers vi Haar Feature là:
1. Haar Feature [2] phn ánh đc tt thông tin v đi tng, đng thi có th
tính toán nhanh nh khái nim Integral Image [1] do Viola đa ra.
2. AdaBoost chy nhanh và giúp nâng cao t l nhn dng.
3. Cu trúc cascade cho phép loi nhanh các mu background đn gin ngay t
nhng stages đu tiên, giúp rút ngn thi gian nhn dng, đng thi đáp ng tt
nht vi đ phc tp gia tng ca các mu cn nhn dng, loi nhanh các mu
background có đ phc tp thp bng các b phân loi đn gin trc khi gi
đn các b phân loi phc tp giúp gim thiu false alarm
Tính hiu qu ca mô hình này đã đc thc t chng minh thông qua thành công ca
Viola & Jones và Eng Jon. Ngoài ra, Mathias Kolsch và Matthew Turk [6,7] đã áp
dng kt hp AdaBoost vi bin đi Fourier lên bài toán nhn dng c ch tnh, tuy ch
tin hành th nghim trên tp c ch hn ch (ch có 8 c ch) nhng đã đt đc kt
qu đáng khích l: detection rate đt 95% vi false alarm là 10
-4
.
Trong chng tip theo, chúng ta s tìm hiu c th v AdaBoost, Haar Feature
và mô hình Cascade of Classifiers, t đó tìm hiu v Cascade of Boosted Classifiers.








Chng 3. Các c s lý thuyt
15

Chng 3 Các c s lý thuyt
3.1 Tip cn Boosting
Boosting là k thut dùng đ tng đ chính xác cho các thut toán hc (Learning
algorithm). Nguyên lý c bn ca nó là kt hp các weak classifiers thành mt strong
classifier. Trong đó, weak classifier là các b phân loi đn gin ch cn có đ chính
xác trên 50%. Bng cách này, chúng ta nói b phân loi đã đc “boost”.
Xét mt bài toán phân loi 2 lp (mu cn nhn dng s đc phân vào 1 trong 2 lp)
vi D là tp hun luyn gm có n mu. Trc tiên, chúng ta s chn ngu nhiên ra n
1

mu t tp D (n
1
<n) đ to tp D
1
. Sau đó, chúng ta s xây dng weak classifier đu
tiên C
1
t tp D
1
. Tip theo, chúng ta xây dng tp D
2
đ hun luyn b phân loi C
2
.
D
2
s đc xây dng sao cho mt na s mu ca nó đc phân loi đúng bi C
1

na còn li b phân loi sai bi C

1
. Bng cách này, D
2
cha đng nhng thông tin b
sung cho C
1
. Bây gi chúng ta s xây hun luyn C
2
t D
2
.
Tip theo, chúng ta s xây dng tp D
3
t nhng mu không đc phân loi tt
bi s kt hp gia C
1
và C
2
: nhng mu còn li trong D mà C
1
và C
2
cho kt qu khác
nhau. Nh vy, D
3
s gm nhng mu mà C
1
và C
2
hot đng không hiu qu. Sau

cùng, chúng ta s hun luyn b phân loi C
3
t D
3
.
Bây gi chúng ta đã có mt strong classifier: s kt hp C
1
, C
2
và C
3
. Khi tin
hành nhn dng mt mu X, kt qu s đc quyt đnh bi s tha thun ca 3 b C
1
,
C
2
và C
3
: Nu c C
1
và C
2
đu phân X vào cùng mt lp thì lp này chính là kt qu
phân loi ca X; ngc li, nu C
1
và C
2
phân X vào 2 lp khác nhau, C3 s quyt đnh
X thuc v lp nào.









Chng 3. Các c s lý thuyt
16

Hình 5 - Boosting
3.2 AdaBoost
Adaboost (Adaptive Boost) [5] là mt tip cn boosting đc Freund và Schapire
đa ra vào nm 1995. Adaboost cng hot đng trên nguyên tc kt hp tuyn tính các
weak classifiers đ có mt strong classifier.
Là mt ci tin ca tip cn boosting, Adaboost s dng thêm khái nim trng s
(weight) đ đánh du các mu khó nhn dng. Trong quá trình hun luyn, c mi
weak classifier đc xây dng, thut toán s tin hành câp nht li trng s đ chun b
cho vic xây dng weak classifier k tip: tng trng s ca các mu b nhn dng sai
và gim trng s ca các mu đc nhn dng đúng bi weak classifier va xây dng.
Bng cách này, các weak classifier sau có th tp trung vào các mu mà các weak
classifiers trc nó cha làm tt. Sau cùng, các weak classifiers s đc kt hp tùy
theo mc đ “tt” ca chúng đ to dng nên strong classifier.









Chng 3. Các c s lý thuyt
17
Có th hình dung mt cách trc quan nh sau: đ bit mt nh có phi là bàn tay
hay không, ta hi T ngi (tng đng vi T weak classifiers xây dng t T vòng lp
ca boosting), đánh giá ca mi ngi (tng đng vi mt weak classifier) ch cn
tt hn ngu nhiên mt chút (t l sai di 50%). Sau đó, ta s đánh trng s cho đánh
giá ca tng ngi (th hin qua h s
α
), ngi nào có kh nng đánh giá tt các mu
khó thì mc đ quan trng ca ngi đó trong kt lun cui cùng s cao hn nhng
ngi ch đánh giá tt đc các mu d. Vic cp nht li trng s ca các mu sau
mi vòng boosting chính là đ đánh giá đ khó ca các mu (mu càng có nhiu ngi
đánh giá sai là mu càng khó).

Hình 6 - Strong classifier H(x) xây dng bng AdaBoost
Các weak classifiers h
k
(x) đc biu din nh sau:



<
=
otherwise
pxfp
xh
kkkk
k

,0
)(,1
)(
θ

Trong đó:








Chng 3. Các c s lý thuyt
18
• x = (x
1
, x
2
, , x
n
): vector đc trng ca mu.

θ
: ngng
• f
k
: hàm lng giá vector đc trng ca mu
• p

k
: h s quyt đnh chiu ca bt phng trình
Công thc trên có th đc din gii nh sau: nu giá tr vector đc trng ca mu cho
bi hàm lng giá ca b phân loi vt qua mt ngng cho trc thì mu là object
(đi tng cn nhn dng), ngc li thì mu là background (không phi đi tng).
Thut toán AdaBoost:
1. Cho mt tp hun luyn gm n mu có đánh du (x
1
, y
1
), (x
1
, y
1
), , (x
n
,
y
n
) vi x
k
∈ X = (x
k1
, x
k2
, , x
km
) là vector đc trng và y
k
∈ {-1, 1} là

nhãn ca mu (1 ng vi object, -1 ng vi background).
2. Khi to trng s ban đu cho tt c các mu:
n
1
w
k,1
=

3. Xây dng T weak classifiers
Lp t = 1, , T
• Vi mi đc trng trong vector đc trng, xây dng mt weak
classifier h
j
vi ngng
θ
j
và li
ε
j


−=
n
k
kkjk,tj
y)x(hw
ε

• Chn ra h
j

vi
ε
j
nh nht, ta đc h
t
.
}1,1{:

→Xh
t

• Cp nht li trng s




=
×=

+
kkt
kkt
t
k,t
k,t
y)x(h,e
y)x(h,e
Z
w
w

t
t
α
α
1

Trong đó:

×