Giải pháp công nghệ

Một phần của tài liệu Môi trường phát triển phần mềm nhúng cho các thiết bị di động (Trang 57)

Hiện có rất nhiều giải pháp cho bài toán nhận dạng, trong luận văn sử du ̣ng mạng nơ -ron để thực nghiệm với bài toán nhận dạng chữ Nôm vì một số lý do chính sau . Thứ nhất, tốc độ nhâ ̣n da ̣ng của mạng nơ -ron nhanh vì sau khi học thì việc xác định một ký tự giống ký tự nào nhất chỉ là việc nhân ma trận. Hơn nữa việc này có thể làm song song trên mỗi nút trong cùng mô ̣t tầng . Thứ hai là khối lượng dữ liệu lưu trữ để nhận dạng nhỏ - chỉ cần lưu trữ mảng trọng số đã xác định trong quá trình huấn luyê ̣n ma ̣ng mà không cần lưu trữ tâ ̣p dữ liê ̣u mẫu c huẩn và tâ ̣p dữ liê ̣u ra chuẩn [18]. Thứ ba là ta có thể dễ dàng điều chỉnh tốc đô ̣ nhâ ̣n da ̣ng hay đô ̣ chính xác bằng viê ̣c thay đổi số tầng ẩn và số nút trên mỗi tầng . Tăng số tầng và số nút trên mỗi tầng sẽ tăng đô ̣ chính xác nhưng la ̣i giảm tốc đô ̣ nhâ ̣n da ̣ng . Lý do cuối cùng là dựa trên các phương pháp đã áp dụng có kết quả tốt về nhâ ̣n dạng chữ tượng hình Trung Quốc , Nhâ ̣t Bản và tham khảo tài liệu về phần mềm nhận dạng tiếng Việt của Viện công nghệ thông tin [5].

Mạng nơ-ron được áp du ̣ng cho bài toán này là ma ̣ng Perceptron đa tầng [6]. Cấu trúc ma ̣ng [24] mô tả trong Hình 4.1 gồm:

- Tầng vào: 32x32 tín hiệu vào, biểu diễn bằng mô ̣t mảng nhi ̣ phân 32x32 phần tử được ta ̣o thành từ mỗi mô ̣t ảnh ký tự Nôm.

nhúng cho các thiết bị di động

- Tầng ra: 16 tín hiệu, biểu diễn bằng mô ̣t mảng nhi ̣ phân 16 phần tử. - Tầng ẩn: số lươ ̣ng tầng và số nơ-ron trên mỗi tầng tùy cho ̣n.

- Hàm chuyển sử dụng:

Hình 4.1. Cấu trú c ma ̣ng Perceptron đa tầng cho bài toán nhận dạng chữ Nôm.

Sử dụng mạng nơ -ron vào nhận dạng phải tiến hành qua hai bước chính là bước huấn luyê ̣n ma ̣ng và bước nhâ ̣n da ̣ng . Quá trình huấn luyện dựa trên nguyên tắc học có giám sát với tập mẫu {(Xs,Ys)}. Trong đó, Xs là mảng nhị phân 32x32 phần tử biểu diễn ảnh mô ̣t ký tự Nôm , Ys là mảng nhi ̣ phân 16 phần tử. Đầu ra sử dụng mảng 16 phần tử để biểu diễn chẵn 2 byte dữ liê ̣u và biểu diễn được 216 giá trị khác nhau nên đủ để biểu diễn hơn 9000 ký tự Nôm . Ý tưởng cơ bản của quá trình huấn luyện mạng là xác định bộ trọng số W sao cho:

outs = f(Xs,W) =Ys đối với mọi mẫu học s.

Ban đầu các trọng số được gán ngẫu nhiên trong khoảng nào đó . Trong quá trình học, các trọng số được tự điều chỉnh sao cho phù hợp với các mẫu học , làm giảm sai số giữa giá trị đầu ra chuẩn Ys với giá trị tính toán thực tế outs . Viê ̣c hiê ̣u chỉnh trọng số dừng khi quá trình huấn luyện hội tụ tại một ngưỡng lỗi chấp nhận đươ ̣c hoă ̣c dừng sau một số lần học xác định trước.

Sau khi quá trình huấn luyê ̣n đã xong , bô ̣ tro ̣ng số đă ̣c trưng cho thông tin nhâ ̣n da ̣ng được lưu trữ lại trong tê ̣p tin để sử dụng cho quá trình nhận dạng . Viê ̣c

nhúng cho các thiết bị di động

nhâ ̣n da ̣ng chỉ đơn giản là quá trình biến đổi mẫu vào X thành mẫu ra Y dựa trên bộ trọng số đã xác định . Mẫu ra Y sẽ được nhâ ̣n da ̣ng nếu nó thuô ̣c tâ ̣p mẫu ra chuẩn đã dùng để huấn luyê ̣n ma ̣ng . Ngược la ̣i, mạng không nhận dạng được nếu sau quá trình biến đổi trên mạng thu được mẫu ra Y không thuô ̣c tâ ̣p mẫu chuẩn đã ho ̣c.

nhúng cho các thiết bị di động 4.3. Phân tích thiết kế hệ thống

4.3.1. Biểu đồ Use Case

Ứng dụng gồm hai gói:

- Gói Desktop sử dụng để huấn luyện mạng: chạy trên PC - Gói Mobile để nhận dạng mẫu: chạy trên điện thoại di động

Hình 4.2. Các gói chương trình

4.3.1.1. Biểu đồ ca sử dụng cho gói Desktop

Hình 4.3. Biểu đồ ca sử dụng trong gói Desktop

Bảng 4.1. Tổng quan các ca sử dụng

Tác nhân Người phát triển hệ thống (Developer)

Các sử dụng Hai ca sử dụng: InputProcess, NetworkTrainning

Tên ca sử dụng Mô tả

InputProcess Chọn ảnh chứa các mẫu ký tự vào chuẩn. Chuẩn hoá ảnh về kích thước, kiểu ảnh. Tách ký tự, tạo mảng các vec tơ vào chuẩn; mỗi vec tơ ứng với tập điểm ảnh của mỗi ký tự. Tạo tập mẫu ra chuẩn: là mảng các vec tơ ra chuẩn.

NetworkTrainning Từ tập vec tơ vào chuẩn và tập vec tơ ra chuẩn, qua mạng sẽ tạo ra mảng trọng số. Hiệu chỉnh mảng

nhúng cho các thiết bị di động

trọng số đến khi hội tụ hoặc vượt quan ngưỡng được phép

4.3.1.2. Biểu đồ ca sử dụng cho gói Mobile

Hình 4.4. Biểu đồ ca sử dụng trong gói Mobile

Bảng 4.2. Tổng quan các ca sử dụng trong gói Mobile (adsbygoogle = window.adsbygoogle || []).push({});

Tác nhân Người sử dụng (User)

Các sử dụng Ba ca sử dụng: MobileInputProcess, Recognition, LookupSemantic

Tên ca sử dụng Mô tả

MobileInputProcess Lấy ảnh chụp từ điện thoại di động. Chuẩn hoá ảnh về kích thước, kiểu ảnh. Tách ký tự, tạo mảng các vec tơ vào; mỗi vec tơ ứng với tập điểm ảnh của mỗi ký tự.

Recognition Từ vec tơ mẫu vào, tính toán qua mạng nơ-ron cho kết quả là một vec tơ ra.

NetworkTrainning Từ vec tơ ra, tạo một khoá (key) để tra cứu ngữ nghĩa.

nhúng cho các thiết bị di động

4.3.2. Biểu đồ lớp phân tích

4.3.2.1. Phân tích các ca sử dụng trong gói Desktop

- Ca sử dụng xử lý đầu vào InputProcess:

Hình 4.5. Biểu đồ lớp phân tích thực thi ca sử dụng InputProcess

- Ca sử dụng huấn luyện mạng NetworkTrainning:

Hình 4.6. Biểu đồ lớp phân tích thực thi ca sử dụng NetworkTrainning

Desktop Interface Developer Input Process Input Result Chọn ảnh mẫu Ảnh vào lỗi Yêu cầu xử lý Kết quả xử lý Desktop Interface Developer Trainning Desktop NetworkConfig Yêu cầu huấn luyện Yêu cầu huấn luyện Kết quả huấn luyên Input Result Tập vec tơ vào chuẩn

nhúng cho các thiết bị di động

4.3.2.2. Phân tích các ca sử dụng trong gói Mobile

- Ca sử dụng xử lý đầu vào MobileInputProcess:

Hình 4.7. Biểu đồ lớp phân tích thực thi ca sử dụng MobileInputProcess

- Ca sử dụng nhận dạng Regconition:

Hình 4.8. Biểu đồ lớp phân tích thực thi ca sử dụng Recognition

- Ca sử dụng tra cứu ngữ nghĩa LookupSemantic:

Hình 4.9. Biểu đồ lớp phân tích thực thi ca sử dụng LookupSemantic

Mobile Interface User Mobile Input Process Mobile Input Result Lấy ảnh ký tự Ảnh lỗi Yêu cầu xử lý Vec tơ mẫu vào Mobile Interface User Recognition Recognition Result Yêu cầu nhận dạng Yêu cầu nhận dạng Thông tin mạng Network Config Kết quả Mobile Interface User Lookup Semantic Recognition Result Yêu cầu nhâ ̣n da ̣ng Nghĩa từ Yêu cầu lấy nghĩa từ

Kết quả nhâ ̣n da ̣ng

Lấy mảng từ điển

Ghi mảng khóa, mảng nghĩa

nhúng cho các thiết bị di động

4.3.3. Biểu đồ lớp thiết kế

4.3.3.1. Biểu đồ lớp thiết kế cho gói Desktop

Biểu đồ lớp thiết kế cho cho gói Desktop mô tả trong Hình 4.10 sau: (adsbygoogle = window.adsbygoogle || []).push({});

nhúng cho các thiết bị di động

4.3.3.2. Biểu đồ lớp thiết kế cho gói Mobile

Biểu đồ lớp thiết kế cho gói Mobile được mô tả trong Hình 4.11 sau:

nhúng cho các thiết bị di động

4.3.4. Biểu đồ tuần tự

4.3.4.1. Biểu đồ tuần trong gói Desktop

Biểu đồ tuần tự cho phương thức huấn luyện mạng TrainingNetwork() như Hình 4.12:

nhúng cho các thiết bị di động

4.3.4.2. Biểu đồ tuần tự trong gói Mobile

- Biểu đồ tuần tự cho phương thức nhận dạng Regconition() được chỉ ra trong Hình 4.13:

nhúng cho các thiết bị di động

- Biểu đồ tuần tự cho phương thức CreateSetMatrixPixelOfCharacter()

được chỉ ra trong Hình 4.14:

Hình 4.14. Biểu đồ tuần tự thực hiện phương thức

nhúng cho các thiết bị di động

- Biểu đồ tuần tự thực hiện phương thức tra cứu ngữ nghĩa

LookupMeanning() như Hình 4.15:

nhúng cho các thiết bị di động 4.4. Cài đặt

4.4.1. Cài đặt gói huấn luyện trên Desktop

Gói huấn luyện mạng cài đặt trên desktop với .NET Framework 2.0 sử dụng Visual Studio.net 2005 gồm hai mô-đun chính: mô-đun chuẩn hoá đầu vào, mô-đun huấn luyện mạng. Ngoài ra, trên gói Desktop cũng cài đặt thêm mô-đun nhận dạng để giúp cho việc kiểm thử cũng như tối ưu mạng. Thiết kế giao diện gói Desktop như Hình 4.16:

Hình 4.16. Giao diện gói Desktop

- Các phương thức trong tiến trình huấn luyện mạng như sau:

o Thiết lập các điều khiển trên Form: reset_controls(). o Cấu hình mạng: form_network().

o Khởi tạo mạng trọng số: initialize_weights(). o Tạo tập vec-tơ bit vào chuẩn: form_input_set().

o Tạo tập vec-tơ bit ra chuẩn: form_desired_output_set(). o Huấn luyện mạng: train_network().

nhúng cho các thiết bị di động

- Mã nguồn phương thức huấn luyện mạng train_network(): /// <summary>

/// Ham huan luyen mang /// </summary>

public void train_network() { int set_number; float average_error=0.0F; progressBar1.Maximum =epochs; for(int epoch=0;epoch<=epochs;epoch++) { average_error=0.0F; for(int i=0;i<number_of_input_sets;i++) { set_number=rnd.Next(0,number_of_input_sets); get_inputs(set_number); get_desired_outputs(set_number); calculate_outputs(); calculate_errors(); calculate_weights(); average_error=average_error+get_average_error(); } progressBar1.PerformStep (); label15.Text =epoch.ToString (); label15.Update (); average_error=average_error/number_of_input_sets; if(average_error<error_threshold) { epoch=epochs+1; progressBar1.Value =progressBar1.Maximum; label22.Text ="<"+error_threshold.ToString (); label22.Update (); } } label27.Text ="Ready"; label27.Update (); } (adsbygoogle = window.adsbygoogle || []).push({});

nhúng cho các thiết bị di động

4.4.2. Cài đặt gói nhận dạng trên Mobile

Sử dụng Visual Studio.Net 2005 để thiết kế giao diện và xây dựng cấu trúc gói nhận dạng gồm các lớp như Hình 4.17:

Hình 4.17. Giao diện và cấu trúc các lớp gói Mobile

Hoạt động chung của gói nhận dạng được thực hiện theo tiến trình:

- Nạp mảng trọng số: mảng trọng số thu được từ quá trình huấn luyện mạng trên Desktop.

- Chọn file ngôn ngữ: nạp nội dung file ngữ nghĩa vào mảng nghĩa. - Nạp ảnh: nạp ảnh chứa các ký tự cần nhận dạng.

- Nhận dạng: dựa vào mảng trọng số và các tín hiệu đầu vào, thực hiện các tính toán trên mạng nơ-ron để tạo ra tập các tín hiệu ra. Các tín hiệu ra tương ứng với một ký tự được tạo thành một khoá để sử dụng làm chỉ số của phần tử nghĩa từ trong mảng ngữ nghĩa.

nhúng cho các thiết bị di động

Các bước này được thực hiện bằng các hàm xử lý sự kiện trên form giao diện Mobile như sau:

/// <summary>

/// Ham nap mang ngu nghia /// </summary>

/// <param name="sender"></param> /// <param name="e"></param>

private void btnSemanticFile_Click(object sender, EventArgs e) {

openImgFile.ShowDialog();

StreamReader objSR = new StreamReader(openImgFile.FileName); LookupSemantic objL = new LookupSemantic();

objL.LoadDictionary(objSR); objSR.Close();

}

/// <summary>

/// Ham nap mang trong so /// </summary>

/// <param name="sender"></param> /// <param name="e"></param>

private void btnSaveFile_Click(object sender, EventArgs e) {

openImgFile.ShowDialog();

StreamReader objSR = new StreamReader(openImgFile.FileName); RecognitionProcess objReg = new RecognitionProcess();

objReg.LoadNetwork(objSR); objSR.Close(); } /// <summary> /// Nap anh ky tu /// </summary> /// <param name="sender"></param> /// <param name="e"></param>

private void btnLoadImg_Click(object sender, EventArgs e) {

LoadImage(); }

nhúng cho các thiết bị di động

Cài đặt tiến trình nhận dạng trên gói Mobile: /// <summary>

/// Ham su kien tren nut nhan dang btnReg /// </summary> (adsbygoogle = window.adsbygoogle || []).push({});

/// <param name="sender"></param> /// <param name="e"></param>

private void btnReg_Click(object sender, EventArgs e) {

//1. Goi ham xu ly dau vao

MobileInputProcess objMIProcess = new MobileInputProcess(); objMIProcess.CreateSetMatrixPixelOfCharacter();

//2. Goi cac ham nhan dang

RecognitionProcess objReg = new RecognitionProcess(); objReg.CreateOutputForAllInput();

//3. Goi cac ham tra nghia tu

LookupSemantic objLook = new LookupSemantic(); objLook.CreateKeyArray();

objLook.LookupMeanning();

//4. Hien thi xau ket qua: String strResult = "Ket qua: ";

for (int i = 0; i < MobileInputResult.NumOfCharacters; i++) {

strResult += Convert.ToString(SemanticMap.arResultMeanning[i]) + " "; }

txtResult.Text = strResult; }

Chi tiết mã nguồn cài đặt các lớp trong gói Mobile sẽ được trình bày trong Phụ lục B

nhúng cho các thiết bị di động 4.5. Kết quả thực nghiệm

Bộ dữ liê ̣u mẫu huấn luyện là mô ̣t ảnh chứa 400 ký tự chữ Nôm chuẩn . Tâ ̣p mẫu ra chuẩn : đươ ̣c ta ̣o ngươ ̣c từ bô ̣ khóa , mỗi khóa thu ộc đoạn 1- 400 được chuyển thành mô ̣t mảng nhi ̣ phân 16 phần tử. Quá trình huấn luyện mạng thực hiện bằng gói Desktop như trong Hình 4.18:

nhúng cho các thiết bị di động

Hê ̣ thống đươ ̣c thử nghiê ̣m trên môi trường Windows Mobile 5.0 với thiết bị mô phỏng Pocket PC 2003. Một số giao diện và kết quả thử nghiệm với tập mẫu huấn luyện gồm 400 mẫu sử dụng để huấn luyện mạng trên Desktop sau đó đưa file trọng số lên Pocket PC để nhận dạng được chỉ ra dưới đây:

- Form giao diện ứng dụng như mô tả trong Hình 4.19:

Hình 4.19. Form ứng dụng trên PocketPC

- Giao diện nạp file trọng số và file từ điển như trong Hình 4.20:

nhúng cho các thiết bị di động - Giao diện nạp ảnh như Hình 4.21:

Hình 4.21. Giao diện nạp ảnh nhận dạng

- Một số kết quả nhận dạng như Hình 4.22:

nhúng cho các thiết bị di động

Trong quá trình kiểm thử, chúng tôi cũng đã tiến hành một số thử nghiệm trên gói Desktop với các tập mẫu có số lượng mẫu khác nhau và cho nhận dạng lại một phần trong tập mẫu đã học. Số lượng mẫu trong tập mẫu huấn luyện mạng thay đổi từ 50 đến 4232. Kết quả được thống kê trong Hình 4.23:

nhúng cho các thiết bị di động

KẾT LUẬN

Từ các nội dung đã trình bày ở trên, chúng ta thấy các hệ thống nhúng, phần mềm nhúng có ý nghĩa đặc biệt quan trọng trong đời sống xã hội. Việc nghiên cứu xây dựng các hệ thống nhúng, phần mềm nhúng giúp chúng ta có tầm nhìn chiến lược, có định hướng đúng đắn về xu hướng phát triển của công nghệ thông tin. Đồng thời căn cứ vào đó để có những kế hoạch cụ thể từng bước phát triển công nghệ thông tin nước ta cả về chất và lượng, giúp công nghệ nước ta không bị tụt hậu quá xa so với các nước phát triển. Tuy nhiên, hệ thống nhúng là lĩnh vực rất rộng, ở Việt Nam mới phát triển ở mức sơ khai do đó luận văn chỉ tập trung vào nghiên cứu các môi trường phát triển phần mềm nhúng cho các thiết bị di động. Nội dung luận văn đã trình bày và tổng hợp cũng như xây dựng thử các ví dụ chạy trên một số môi trường điển hình là: RTOS, Symbian, .NET Compact Framework, J2ME. (adsbygoogle = window.adsbygoogle || []).push({});

Trên cơ sở lý thuyết đó, chúng tôi đã xây dựng thử nghiệm ứng dụng nhận dạng chữ Nôm trên môi trường Pocket PC với .NET Compact Framework. Ứng dụng được thử nghiệm với 400 ký tự truyện Kiều 1866 để huấn luyện trên Desktop sau đó sử dụng mảng trọng số cho mô-đun Mobile nhận dạng với một phần trong mẫu đã học thì thu được kết quả khả quan nhưng khi tiến hành các thử nghiệm khác trên Desktop với số lượng mẫu lớn thì kết quả nhận dạng còn thấp. Tuy chưa đạt được kết quả mong muốn và còn nhiều vấn đề cần khắc phục nhưng thực nghiệm nhận dạng chữ Nôm trên Pocket PC cũng có ý nghĩa nhất định góp phần nhỏ trong định hướng khôi phục văn hoá dân tộc. Từ kết quả nghiên cứu và thực nghiệm luận

Một phần của tài liệu Môi trường phát triển phần mềm nhúng cho các thiết bị di động (Trang 57)