You are on page 1of 28

MC LC CHNG 1: TNG QUAN V MNG NEURAL NHN TO................3 1.1. Gii thiu............................................................................. 3 1.2. Mng Neural nhn to.........................................................

3 1.2.1. Khi nim mng Neural.................................................4 1.2.2. Phn loi mng Neural..................................................5 1.3. C s l thuyt pht trin ng dng....................................6 1.3.1. Cu trc mng Neural...................................................6 1.3.2. Hm hot ng.............................................................7 1.3.3. Tin trnh hc................................................................8 1.3.4. Gii thut Back Propagation.....................................10 CHNG 2: NG DNG MNG NEURAL NHN DNG HNH HC.15 2.1. Gii thiu bi ton.............................................................15 2.2. Pht biu bi ton.............................................................15 2.3. Gii quyt bi ton nhn dng hnh khi trn c s mng nron nhn to ........................................................................ 16 CHNG 3: CI T CHNG TRNH TH NGHIM...................17 3.1. M ngun..........................................................................17 3.1.1. Lp PatternRecognition...............................................17 3.1.2. Lp ImageProcessing..................................................22 3.2. Giao din chng trnh......................................................25 3.2.1. Giao din chnh...........................................................25 3.2.2. Giao din chc nng hun luyn ca chng trnh......25 3.2.3. D liu thu c sau khi hun luyn mng.................26 KT LUN................................................................................... 27

LI NI U

Cng vi s pht trin ca m hnh kho d liu (Dataware house), Vit nam ngy cng c nhiu kho d liu vi lng d liu rt ln. khai thc c hiu qu nhng d liu khng l ny, c nhiu cng c c xy dng tha mn nhu cu khai thc d liu mc cao, chng hn nh cng c khai thc d liu Oracle Discoverer ca hng Oracle. Cng c ny c s dng nh mt b phn tch d liu a nng theo nhiu chiu d liu, c bit theo thi gian. Hay l vic xy dng cc h chuyn gia, cc h thng da trn mt c s tri thc ca cc chuyn gia, c th d bo c khuynh hng pht trin ca d liu, thc hin cc phn tch trn cc d liu ca t chc. Mc d cc cng c, cc h thng trn hon ton c th thc hin c phn ln cc cng vic nu trn, chng vn yu cu mt chnh xc, y nht nh v mt d liu c th a ra c cc cu tr li chnh xc. Trong khi , cc ng dng ca mng nron truyn thng c xy dng da trn cc nhn t nh hng n s thay i ca d liu c thc tin chng minh l kh mnh v hiu qu trong cc bi ton d bo, phn tch d liu v nhn dng. Chng c th c hun luyn v nh x t cc d liu vo ti cc d liu ra m khng yu cu cc d liu phi y . Trong s cc loi mng tng i ph bin th cc mng neuron truyn thng nhiu lp, c hun luyn bng thut ton lan truyn ngc c s dng nhiu nht. Cc mng nron ny c kh nng biu din cc nh x phi tuyn gia u vo v u ra, chng c coi nh l cc b xp x a nng. Vic ng dng ca loi mng ny ch yu l cho vic phn tch, nhn dng, d bo, phn loi cc s liu thc t. Bi tp ln ny c thc hin vi mc ch tm hiu v lm sng t mt s kha cnh v mng nron truyn thng nhiu lp, thut ton lan truyn ngc v ng dng chng trong gii quyt cc bi ton trong vic nhn dng hnh khi.

CHNG 1: 1.1. Gii thiu

TNG QUAN V MNG NEURAL NHN TO

Mng n ron nhn to l mt m phng x l thng tin, c nghin cu ra t h thng thn kinh ca sinh vt, ging nh b no x l thng tin. N bao gm s lng ln cc mi gn kt cp cao x l cc yu t lm vic trong mi lin h gii quyt vn r rng. ANNs ging nh con ngi, c hc bi kinh nghim, lu nhng kinh nghim hiu bit v s dng trong nhng tnh hung ph hp. u tin ANN c gii thiu nm 1943 bi nh thn kinh hc Warren McCulloch v nh logic hc Walter Pits. Nhng vi nhng k thut trong thi gian ny cha cho php h nghin cu c nhiu. Nhng nm gn y m phng ANN xut hin v pht trin. Cc nghin cu ng dng c thc hin trong cc ngnh: in, in t, k thut ch to, y hc, qun s, kinh t...v mi nht l cc nghin cu ng dng trong lnh vc qun l d n xy dng. Ti Vit Nam vic nghin cu ng dng ANN vo qun l xy dng ch mi bt u trong vi nm gn y v cn c pht trin.

1.2. Mng Neural nhn to


Khi nim noron: L mt n v tnh ton c nhiu u vo v mt u ra, mi u vo n t mt thnh phn lin kt. Cc thnh phn ca noron nhn to: 1.Thnh phn lin kt. 2.B cng. 3.Hm kch hot

Hnh : M hnh mt noron nhn to

1.2.1. Khi nim mng Neural


L mt h thng bao gm nhiu phn t x l n gin ta nh noron thn kinh ca no ngi. M hnh mng noron : Lp nhp (input), Lp n (Hidden-nu c) Lp xut (output).

1.2.2. Phn loi mng Neural


Ta c mng noron truyn thng v noron mng qui hi.

Mng truyn thng a mc

Mng quy hi cc noron n

1.3. C s l thuyt pht trin ng dng

1.3.1.

Cu trc mng Neural Mi Neural (nt) l mt n v x l thng tin ca mng neural, l yu t c bn

cu to nn mng neural.

wk1 wk2 wk3


b

uk

F (.)

output yk

Hnh 1: Cu trc 1 n ron (Neural)

xi: cc tn hiu input wkp: trng s ca tng input f(.): hm hot ng yk: kt xut ca Neural b: thng s nh hng n ngng ra ca output

Phn loi cu trc mng Neural


a. Mng dn tin mt lp y l cu trc mng neural n gin nht. Mng neural ny ch gm 1 lp xut, khng c lp n.
neuron

neuron input neuron output

neuron

b. Mng dn tin nhiu lp

Output 1 Output 2

Output 3 Input Hidden Layer Hnh 3: Cu trc mng neural nhiu lp Output

Mng neural nhiu lp c th gii quyt cc bi ton phi tuyn nh vo cc lp n. Cc lp n ny xen gia cc input bn ngoi v output ca mng. Cng nhiu lp n th kh nng m rng thng tin cng cao v x l tt mng c nhiu input v output. Ngoi ra cn c mng hi quy v mng Neural dng li.

1.3.2.

Hm hot ng Cc hm hot ng phi c cc c tinh sau: Hm b chn trn v chn di Hm c tnh n iu Hm phi c tnh lin tc v trn

Trong thc t thng thng ngi ta thng chn cc hm sau:


a. Hm Threhold 1 nu u > 0 f (u) = 0 nu u < 0 b. Hm piecewwise linear 1 nu u > 1/2 f (u) = u nu 1/2 > u > -1/2 0 nu u < -1/2 c. Hm sigmoid (logistic) f (u) = 1 1 + exp (-au)

d. Hm tang- hyperbol f (u) = tanh (u) = eu e-u eu + e-u

1.3.3.

Tin trnh hc Tin trnh hc l tin trnh quan trng ca con ngi, nh hc m b no ngy

cng tch lu nhng kinh nghim thch nghi vi mi trng v x l tnh hung tt hn. Mng neural xy dng li cu trc b no th cn phi c kh nng nhn bit d liu thng qua tin trnh hc, vi cc thng s t do ca mng c th thay i lin tc bi nhng thay i ca mi trng v mng neural ghi nh gi tr .

teach/use X1 W1

X2 Inputs

W2 Output

X3

Wn

Neuron Teaching input Hnh 4: Tin trnh hc

Trong qu trnh hc, gi tr u vo c a vo mng v theo dng chy trong mng to thnh gi tr u ra. Tip n l qu trnh so snh gi tr to ra bi mng Neural vi gi tr ra mong mun. Nu hai gi tr ny ging nhau th khng thay i g c. Tuy nhin, nu c mt sai lch gia hai gi tr ny vt qu gi tr sai s mong mun th i ngc mng t u ra v u vo thay i mt s kt ni. y l mt qu trnh lp lin tc v c th khng dng khi khng tm cc gi tr w sao cho u ra to bi mng Neural bng ng u ra mong mun. Do trong thc t ngi ta phi thit lp tiu chun da trn mt gi tr sai s no ca hai gi tr ny, hay da trn mt s ln lp xc nh. tin cho vic trnh by, ta k hiu y l gi tr kt xut ca mng Neural, t l gi tr ra mong mun, e l sai lch gia hai gi tr ny: e=ty

1.3.4.

Gii thut Back Propagation

Thut ton Back Propagation c s dng iu chnh cc trng s kt ni sao cho tng sai s E nh nht.

E = (t (xi, w) y (xi))2
i=1

Trong : t (xi, w): gi tr ca tp mu y (xi): gi tr kt xut ca mng Trc tin , ta xt trn 1 Neural, mi Neural u c gi tr vo v ra, mi gi tr u c mt trng s nh gi mc nh hng ca gi tr vo . Thut ton Back Propagation s iu chnh cc trng s gi tr ej = Tj yj l nh nht. Trc ht ta phi xc nh v tr ca mi neuron. Neuron no l ca lp n v neuron no l ca lp xut. Ta cn bit cc k hiu: wij: vector trng s ca neuron j s u vo i uj: vector gi tr kt xut ca neuron trong lp j
x1 Wij x2 W2j xi 1 x3
W

tj

fj (.)
sum

ej

(i 1)j Wij Neuron j

Hnh 5: M hnh tnh ton mt neuron Gi tr sai s ca neuron j ti vng lp th n

ej (n) = tj (n) yj (n)


Tng bnh phng sai s ca mng neural:

E (n) =
-

1 e2j (n) 2 j =1

Ti neuron j ta c tng trng s input:


p

uj (n) = wij.xj (n)


i= 0

Gi tr kt xut ca neuron j:

yj (n) = fj (uj(n))
- Tnh ton gi tr o hm sai s cho mi neuron wij

Gi tr iu chnh trng s:

Nh vy qu trnh iu chnh trng s c th c xc nh theo cc cng thc trn, tuy nhin ta cn phi xc nh v tr ca neuron thuc lp no (lp n hay lp xut). iu ny rt quan trng trong vic tnh ton cho tng h s iu chnh trng s.

Nh vy tu theo hm hot ng ta c th tnh d dng tnh ton cc gi tr iu chnh trng s cho tng trng s tng ng theo thut ton Back Propagation.

CHNG 2:

NG DNG MNG NEURAL NHN DNG HNH HC

2.1. Gii thiu bi ton


S dng mng Back-propagation d th nghim nhn dng cc hnh khi. Bi ton ny c phm vi i tng mu rt rng, nhm xc nh c th hn cho min hnh nh nhn dng ca n v vic phn tch bi ton c su hn, gii hn bi ton nhn dng hnh khi trong ti liu ny nh sau: 1) Nhn dng cc hnh khi ring l khng lng nhau. 2) Hnh nh khng qu c bit, v d nh hnh tam gic khng qu t. 3) nh c nh dng BMP. 4) Mc xoay ca nh khng qu cao Cc nh u vo c th l nhiu dng khc nhau: PCX, BMP, IMG, JPG, , nhng trong h thng nhn dng hnh khi ny ch th nghim nhn dng nh u vo dng BMP. Tp d liu nh khng qu c bit v khc ging nhau, cc trng hp nh cng c nh nhng nh thc trong qu b so vi ton b nh cng c th dn n kt qu khng ng

2.2. Pht biu bi ton


Cho bi ton nhn dng cc hnh khi vi u vo l trang vn bn trn nh dng file nh (*.bmp,*.jmp,). Yu cu l xy dng chng trnh nhn dng cc hnh khi trn file nh. Gi thit giai on tin x l c thc hin : nh c phn ngng, xoay nh, lc nhiu... ti ny ch i su nghin cu qu trnh nhn dng hnh khi ca mng neural.

tng bi ton : Phn tch nh cho hnh khi: Chia nh theo dng v tch k t theo tng vng gii hn Chuyn i hnh nh sang ma trn im nh. Chuyn thnh ma trn tuyn tnh v a vo mng neural. a v mng neural tnh gi tr u ra. Lu cc b trng s va thu c sau khi hc.

2.3. Gii quyt bi ton nhn dng hnh khi trn c s mng nron nhn to
C hai cch c bn nhn dng nh u vo. Th nht l xy dng hm biu din cho cc hnh khi, ri t hm biu din h thng nhn ra c im hm phn loi hnh. Ta bit, mi hnh c bn u c hm c trng ring, v d hnh trn l hm: a.x2+b.y2 = R2, nu coi 2 bin lin k ca nh l mt h ta th ta hon ton c th tnh ton c ta cc im trong hnh, t mt lot ta ca cc im nh, vi phng php ni suy gn ng ta c th a ra mt hm gn ng ca hnh khi, t m nhn dng c chng. Phng php th hai l tch ly cc c trng v cu trc cua nh nh: s chu trnh, s im ni (chc 3, chc t), im kt thc, im ngot,. vi cc u vo l cc c trng trn, sau mt qu trnh hun luyn, mng nron s nhn ra cc c trng ring ca mi i tng m phn loi. Trc ht l chn phng php nhn dng. trong bi ton ny, phng php nhn dng theo hm l khng hp l, bi php ni suy v hm ph hp vi cc ng cong khng khp kn v u ra l cc a thc. Cc hnh khi m chng ta nhn dng l cc ng khp kn v khng lin tc nn hm u ra khng th l cc

a thc m l nhng hm rt phc tp. Do chng ta s chn phng php trch chn c trng gii quyt bi ton ca chng ta. Tip n l vic chn tp cc c trng. c trng thng dng v n gin c nhiu chng trnh ng dng v thnh cng chnh l cc gi tr im nh. u im ca c trng ny l khu trch chn c trng s khng phc tp m c gim thiu thnh vic c cc gi tr cc im nh ri m ha thnh gi tr u vo cho mng nron. nh s c nn li gim s nron ca mng nhm tng tc tnh ton ca mng. Trong bi ton ny, kch c nh sau khi nn c chn l: 16x12 im nh, do , u vo ca mng l mt lp gm 192 nron. Lp u ra c 7 nron ng vi 7 hnh phn loi. Lp n c 160 nron.

CHNG 3: 3.1. M ngun


3.1.1.

CI T CHNG TRNH TH NGHIM

Lp PatternRecognition

using System; namespace NhanDang { class PatternRecognition { #region Variables private int numberInput; private int numberHidden; private int numberOutput; private double n; //H s hc private double[] arrDataInput; //D liu a vo private double[,] arrWInput; //mng lu trng s gia lp u vo v lp n private double[,] arrWOutput; //mng lu trng s gia lp n v lp ra private double[] arrDataOutput; //mng lu d liu u ra private double[] arrValueHidden; // mng gi tr lp n private double[] arrOutputError; // mng lu sai s ca lp ra private double[] arrHiddenError; //mng lu sai s ca lp n private double[] arrDesiredOuput; //mng dng lu u ra ng hoc gi tr u ra c hc #endregion #region Properties public double[] ArrDataInput {

get { return arrDataInput; } set { this.arrDataInput = value; } } public double[,] ArrWInput { get { return arrWInput; } set { this.arrWInput = value; } } public double[,] ArrWOutput { get { return arrWOutput; } set { this.arrWOutput = value; } } public double[] ArrDesiredOuput { get { return arrDesiredOuput; } set { this.arrDesiredOuput = value; } } #endregion #region Contructor public PatternRecognition(int numberInput, int numberHidden, int numberOutput, double n) { this.numberInput = numberInput; this.numberHidden = numberHidden; this.numberOutput = numberOutput; this.arrDataInput = new double[numberInput]; this.arrWInput = new double[numberInput, numberHidden]; this.arrWOutput = new double[numberHidden, numberOutput];

this.arrDataOutput = new double[numberOutput]; this.arrValueHidden = new double[numberHidden]; this.arrOutputError = new double[numberOutput]; this.arrHiddenError = new double[numberHidden]; this.arrDesiredOuput = new double[numberOutput]; this.n = n; InitializeW(); //Khi to trng s ngu nhin } /// <summary> /// Khi to lp khng c trng s lp n v lp ra /// </summary> /// <param name="numberInput">S phn t lp Input</param> /// <param name="numberHidden">S phn t lp n</param> /// <param name="numberOutput">S phn t lp ra</param> /// <param name="arrDataInput">Mng lu 1 mu hc</param> /// <param name="arrDesiredOuput">Mng lu u ra ng ca mu</param> public PatternRecognition(int numberInput, int numberHidden, int numberOutput, double[] arrDataInput, double[] arrDesiredOuput, double n) { this.numberInput = numberInput; this.numberHidden = numberHidden; this.numberOutput = numberOutput; this.arrDataInput = arrDataInput; this.arrWInput = new double[numberInput, numberHidden]; this.arrWOutput = new double[numberHidden, numberOutput]; this.arrDataOutput = new double[numberOutput]; this.arrValueHidden = new double[numberHidden]; this.arrOutputError = new double[numberOutput]; this.arrHiddenError = new double[numberHidden]; this.arrDesiredOuput = arrDesiredOuput; this.n = n; InitializeW(); //Khi to trng s ngu nhin } /// <summary> /// Khi to lp khng c trng s lp n v lp ra /// </summary> /// <param name="numberInput">S phn t lp Input</param> /// <param name="numberHidden">S phn t lp n</param> /// <param name="numberOutput">S phn t lp ra</param> /// <param name="arrDataInput">Mng cha 1 mu hc</param> /// <param name="arrDesiredOuput">Mng cha u ra ng ca mu</param> /// <param name="arrWInput">Mng cha b trng s gia lp vo v lp n c hc trc </param> /// <param name="arrWOutput">Mng cha b trng s gia lp n v lp ra uc hc trc </param> public PatternRecognition(int numberInput, int numberHidden, int numberOutput, double[] arrDataInput, double[] arrDesiredOuput, double[,] arrWInput, double[,] arrWOutput, double n) { this.numberInput = numberInput; this.numberHidden = numberHidden; this.numberOutput = numberOutput; this.arrDataInput = arrDataInput; this.arrWInput = arrWInput; this.arrWOutput = arrWOutput; this.arrDataOutput = new double[numberOutput]; this.arrValueHidden = new double[numberHidden];

this.arrOutputError = new double[numberOutput]; this.arrHiddenError = new double[numberHidden]; this.arrDesiredOuput = arrDesiredOuput; this.n = n; } /// <summary> /// Hm khi to cc trng s ngu nhin /// </summary> public void InitializeW() { Random ra = new Random(); for (int i = 0; i < numberInput; i++) { for (int j = 0; j < numberHidden; j++) { arrWInput[i, j] = ra.NextDouble() * (ra.Next(0, 2) == 1 ? -1 : 1); } } for (int i = 0; i < numberHidden; i++) { for (int j = 0; j < numberOutput; j++) { arrWOutput[i, j] = ra.NextDouble() * (ra.Next(0, 2) == 1 ? -1 : 1); } } } #endregion #region Methods public void CalculatedValueHidden()//Tnh gi tr xut ca nt n { for (int i = 0; i < numberHidden; i++) { double num = 0; for (int j = 0; j < numberInput; j++) { num += arrDataInput[j] * arrWInput[j, i]; } arrValueHidden[i] = 1.0 / (1.0 + Math.Exp(-num)); } } public void CalculatedValueOutput()//Tnh gi tr xut cho nt xut { for (int i = 0; i < numberOutput; i++) { double num = 0; for (int j = 0; j < numberHidden; j++) { num += arrValueHidden[j] * arrWOutput[j, i]; } arrDataOutput[i] = 1.0 / (1.0 + Math.Exp(-num)); } } public void CalculatedErrors()// Tnh ton sai lch {

for (int i = 0; i < numberOutput; i++)// sai lch ca neural lp ra { arrOutputError[i] = arrDataOutput[i] * (1 - arrDataOutput[i]) * (arrDesiredOuput[i] - arrDataOutput[i]); } for (int i = 0; i < numberHidden; i++)// sai lch ca noeural lp n { double deltal = 0; for (int j = 0; j < numberOutput; j++) { deltal += arrWOutput[i, j] * arrOutputError[j]; } arrHiddenError[i] = arrValueHidden[i] * (1 - arrValueHidden[i]) * deltal; } } public void UpdateNewWeights() { for (int i = 0; i < numberHidden; i++)//Cp nht trng s neural u ra { for (int j = 0; j < numberOutput; j++) { double deltaWeight = n * arrOutputError[j] * arrValueHidden[i]; arrWOutput[i, j] += deltaWeight; } } for (int i = 0; i < numberInput; i++)//Cp nht trng s neural n { for (int j = 0; j < numberHidden; j++) { double deltaWeight = n * arrHiddenError[j] * arrDataInput[i]; arrWInput[i, j] += deltaWeight; } } } public void NeuralLearning(System.Windows.Forms.ProgressBar pr) { string fileName = ""; for (int i = 0; i < arrDesiredOuput.Length; i++) { fileName += arrDesiredOuput[i].ToString(); } int count = 0; while (count++ < 10000) { pr.Value = count; CalculatedValueHidden(); CalculatedValueOutput(); CalculatedErrors(); UpdateNewWeights(); } DataProvider.OverWriteArrayToFile(fileName, arrWInput, numberInput, numberHidden); DataProvider.WriteArrayToFile(fileName, arrWOutput, numberHidden, numberOutput); DataProvider.WriteArrayToFile(fileName, arrDataOutput); }

public double FindNumberError() { CalculatedValueHidden(); CalculatedValueOutput(); double result = 0; for (int i = 0; i < numberOutput; i++) { result += Math.Abs(arrDesiredOuput[i] - arrDataOutput[i]) * Math.Abs(arrDesiredOuput[i] arrDataOutput[i]); } return result; } #endregion } }

3.1.2.

Lp ImageProcessing

using System; using System.Drawing; using System.Windows.Forms; namespace NhanDang { class ImageProcessing { //public static Bitmap ToBinary(Bitmap bm, Byte band) //{ // Bitmap bitmap = new Bitmap(bm); // int x, y; // Color c; // for (y = 0; y < bm.Height - 1; y++) // { // for (x = 0; x < bm.Width - 1; x++) // { // c = bm.GetPixel(x, y); // if (c.R < band) // bitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0)); // else // bitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255)); // } // } // return bitmap; //} public static Bitmap ToBinaryLocBits(Bitmap bm, Byte band) { Bitmap bitmap = new Bitmap(bm); Rectangle rec = new Rectangle(0, 0, bitmap.Width, bitmap.Height); System.Drawing.Imaging.BitmapData bmpData = bitmap.LockBits(rec, System.Drawing.Imaging.ImageLockMode.ReadWrite, bitmap.PixelFormat); IntPtr ptr = bmpData.Scan0; Int32 bytes = Math.Abs(bmpData.Stride) * bitmap.Height; Byte[] rgbValues = new Byte[bytes]; System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes); for (int counter = 0; counter < rgbValues.Length - 1; counter += 4)

{ Byte colorR = rgbValues[counter]; Byte colorG = rgbValues[counter + 1]; Byte colorB = rgbValues[counter + 2]; if (colorR < band || colorB <band || colorG <band) { rgbValues[counter + 0] = 0; rgbValues[counter + 1] = 0; rgbValues[counter + 2] = 0; } else { rgbValues[counter + 0] = 255; rgbValues[counter + 1] = 255; rgbValues[counter + 2] = 255; } } System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes); bitmap.UnlockBits(bmpData); return bitmap; } public static Bitmap ResizeImage(Bitmap bm) { Point pBegin = new Point(bm.Width,bm.Height); Point pEnd = new Point(0,0); Bitmap bitmap = new Bitmap(bm); Rectangle rec = new Rectangle(0, 0, bitmap.Width, bitmap.Height); System.Drawing.Imaging.BitmapData bmpData = bitmap.LockBits(rec, System.Drawing.Imaging.ImageLockMode.ReadWrite, bitmap.PixelFormat); IntPtr ptr = bmpData.Scan0; Int32 bytes = Math.Abs(bmpData.Stride) * bitmap.Height; Byte[] rgbValues = new Byte[bytes]; System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes); Byte color; for (int counter = 0; counter < rgbValues.Length - 1; counter += 4) { color = rgbValues[counter]; if (color == 0) { Point p = new Point((counter - (counter / bmpData.Stride) * bmpData.Stride)/4, counter / bmpData.Stride); if (p.X < pBegin.X) { pBegin.X = p.X; } if (p.Y < pBegin.Y) { pBegin.Y = p.Y; } if (p.X > pEnd.X) { pEnd.X = p.X; } if (p.Y > pEnd.Y) {

pEnd.Y = p.Y; } } } bitmap.UnlockBits(bmpData); if (pEnd.X <= pBegin.X) { return bitmap; } else { return bitmap.Clone(new Rectangle(pBegin, new Size(pEnd.X - pBegin.X + 1, pEnd.Y - pBegin.Y + 1)), bitmap.PixelFormat); } } public static double[] arrInput(Bitmap bm, int width, int height, int z) { double[] result = new double[width*height]; int[,] arr = new int[bm.Height, bm.Width]; Bitmap bitmap = new Bitmap(bm); Rectangle rec = new Rectangle(0, 0, bitmap.Width, bitmap.Height); System.Drawing.Imaging.BitmapData bmpData = bitmap.LockBits(rec, System.Drawing.Imaging.ImageLockMode.ReadWrite, bitmap.PixelFormat); IntPtr ptr = bmpData.Scan0; Int32 bytes = Math.Abs(bmpData.Stride) * bitmap.Height; Byte[] rgbValues = new Byte[bytes]; System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes); for (int counter = 0; counter < rgbValues.Length - 1; counter += 4) { Point p = new Point((counter - (counter / bmpData.Stride) * bmpData.Stride) / 4, counter / bmpData.Stride); if (rgbValues[counter]==0) { arr[p.Y, p.X] = 1; } else { arr[p.Y, p.X] = 0; } } int[,] black = new int[height, width]; int[,] white = new int[height, width]; for (int i = 0; i < bm.Height; i++) { for (int j = 0; j < bm.Width; j++) { int indexR = i * height / bm.Height; int indexC = j * width / bm.Width; if (arr[i,j] == 1) { black[indexR, indexC]++; } else {

white[indexR, indexC]++; } } } for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { result[i * width + j] = black[i, j] >= (white[i, j] / z) ? 1 : 0; } } return result; } public static Bitmap ArrayToBitMap(double[] arr, int height, int width) { Bitmap bt = new Bitmap(width, height); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { bt.SetPixel(j, i, arr[width * i + j] == 0 ? Color.White : Color.Black); } } return bt; } } }

3.2. Giao din chng trnh


3.2.1. Giao din chnh

3.2.2.

Giao din chc nng hun luyn ca chng trnh

3.2.3.

D liu thu c sau khi hun luyn mng

KT LUN
Trong qu trnh thc hin bi tp ln ni dung nghin cu ti ca nhm em c gm cc phn chnh sau: Tm hiu mng nron nhn to. Tm hiu bi ton nhn dng (c bit nhn dng hnh khi) Tm hiu x l nh Phn tch bi ton nhn dng hnh khi. Thit k mng v hun luyn mng nron cho bi ton ng dng mng nron trong nhn dng k t. Ci t v kim tra thc nghim bi ton ny.

TI LIU THAM KHO


[1.]Lng Mnh B, Nguyn Thanh Thy (1999), Nhp mn x l nh s, Nh xut bn khoa hc v k thut, H Ni, tr 153-211. [2.] Hc vin cng ngh Bu chnh Vin Thng (2007), Nhp mn Tr tu Nhn to, H Ni, tr 118-133. [3.] K.-L. Du, PhD, M.N.S. Swamy, PhD, D.Sc (Eng) (2006), Neural Networks in a Softcomputing Framework.pdf, Concordia University, Montreal, Canada. [4.] CHRISTOPHER M. BISHOP(1995), Neural Networks for Pattern [5.]Recognition.pdf, CLARENDON PRESS OXFORD, UK. [6.]http://en.wikipedia.org/wiki/Non-linear

You might also like