TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GIAO THÔNG VẬN TẢI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH JAVA NÂNG CAO ĐỀ TÀI HỆ THỐNG QUẢN LÝ BÁN THUỐC Lớp 70DCTT22 Giáo viên hướng dẫn Nguyễn Văn Cường.
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GIAO THÔNG VẬN TẢI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH JAVA NÂNG CAO ĐỀ TÀI: HỆ THỐNG QUẢN LÝ BÁN THUỐC Lớp: 70DCTT22 Giáo viên hướng dẫn: Nguyễn Văn Cường Nhóm thực hiện: Nhóm Nguyễn Minh Sáng Trịnh Đức Chính Tạ Thành Cơng Nguyễn Việt Anh Trương Quang Linh Hà Nội: ngày…tháng…năm… Mục Lục GIỚI THIỆU BÀI TỐN MƠ TẢ BÀI TỐN PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN 3.1 Cơ sở lý thuyết 5 3.1.1 Mạng neuron 3.1.2 Perceptron a Biểu diễn perceptron b Nguyên tắc huấn luyện perceptron c Sai số huấn luyện (training error) backprogation 3.1.3 Mạng neuron nhiều lớp giải thuật lan truyền ngược a Hàm ngưỡng b Mạng neuron feedforward c Giải thuật backprogation d Momentum 3.2 Giải tốn 3.2.1 Chương trình 3.2.2 Khởi tạo mạng neuron 3.2.3 Chuẩn bị liệu 10 3.2.4 Kết thử nghiệm 12 GIỚI THIỆU VỀ PHẦN MỀM sapphireOCR 17 4.1 Hướng dẫn cài đặt 17 4.2 Hướng dẫn sử dụng 17 CÁC VẤN ĐỀ PHÁT SINH VÀ ĐỀ XUẤT 5.1 Kết nhận dạng thấp 19 5.2 Tốc độ huấn luyện chậm 19 19 GIỚI THIỆU BÀI TOÁN Nhận dạng kí tự quang học (Optical Character Recognition – OCR) lĩnh vực nghiên cứu cách chuyển đổi ảnh số chụp hay quét từ tài liệu viết tay, đánh máy hay in thành dạng văn máy tính hiểu Trên giới, công nghệ OCR có tác động sâu sắc đến nhiều lĩnh vực sản xuất đời sống Việc chuyển văn in giấy thành dạng điện tử nhỏ gọn dễ tìm kiếm giúp hàng triệu trang sách báo đến với bạn đọc khắp nơi giới Bằng cách kết hợp với phần mềm text-to-speech lượng tài liệu đọc thành tiếng cho người khiếm thị Nhiều bưu điện áp dụng hệ thống phân loại thư tự động dựa máy đọc bì thư có cài phần mềm OCR Các ngân hàng đọc nội dung séc để chống rửa tiền, gian lận phát khủng bố OCR vào đời sống hàng ngày qua thiết bị thông tin cá nhân (PDA) giúp người sử dụng nhập liệu cách viết lên hình cảm ứng thay đem theo bàn phím cồng kềnh Ở Việt Nam, công nghệ OCR phát triển giai đoạn đầu với vài phần mềm nhận dạng kí tự in VnDOCR, VietOCR, ABBYY lĩnh vực nhận dạng chữ viết tay bỏ ngỏ Với số lượng lớn tài liệu viết tay cần xử lí phát triển cơng nghệ di động PDA hướng nghiên cứu đầy triển vọng Quá trình OCR gồm nhiều bước phân tích cấu trúc văn bản, tách dạng, tách kí tự, kiểm tra ngữ nghĩa để tăng độ xác… bước sở mà chương trình OCR phải thực nhận dạng kí tự (đơn lẻ) Trong thời gian hạn hẹp đồ án môn học chúng em chọn thực bước MƠ TẢ BÀI TỐN Giả thiết bước xử lí trước kí tự phân lập, kết ảnh nhị phân kích thước 60x80 ảnh chứa kí tự tiếng Việt (có dấu) kí tự có độ nghiêng khơng q lớn kích thước hợp chuẩn với sai số chấp nhận được, cần chuyển kí tự thành dạng mã hố Unicode Chuẩn kích thước chữ cái: • ascender height: trùng với cạnh ảnh • cap height: trùng với cạnh ảnh • median: 1/3 chiều cao ảnh • baseline: 4/5 chiều cao ảnh • descender height: trùng với cạnh ảnh • chiều rộng: xấp xỉ chiều rộng ảnh Như có nghĩa chương trình khơng xử lí chữ có kích thước nhỏ, nghiêng lệch hay biến dạng mức Các chữ giả thiết đưa dạng chuẩn (với sai số chấp nhận được) bước xử lí trước PHƯƠNG PHÁP GIẢI QUYẾT BÀI TỐN Chương trình “Nhận dạng ký tự viết tay tiếng Việt” sử dụng mơ hình mạng neuron thuật toán lan truyền ngược Sau chi tiết phương pháp 3.1 Cơ sở lý thuyết 3.1.1 Mạng neuron Mạng neuron nhân tạo (artificial neural network) mơ hình tốn học hay mơ hình tính toán lấy cảm hứng dựa cấu trúc mạng thần kinh Một mạng neuron bao gồm nhóm neuron nối với nhau, sở thơng tin xử lý Mơ hình mạng neuron nhân tạo thường áp dụng với toán nhận dạng, đặc biệt với tốn có nhiều biểu diễn hình ảnh Cùng với giải thuật lan truyền ngược, mạng neuron thích hợp với tốn mang đặc điểm sau: Một thể biểu diễn nhiều cặp giá trị Hàm mục tiêu đầu có giá trị rời rạc, giá trị thực vector giá trị rời rạc giá trị thực Các ví dụ học có lỗi Thời gian huấn luyện dài chấp nhận Có thể yêu cầu tiến hóa nhanh hàm mục tiêu cần học Khả người hiểu hàm mục tiêu cần học không quan trọng 3.1.2 Perceptron Cơ mạng neuron nhân tạo dựa khái niệm perceptron a Biểu diễn perceptron: Một perceptron nhận giá trị đầu vào vector thực, tính tốn tổ hợp tuyến tính đầu vào đưa đầu kết lớn ngưỡng đó, -1 ngược lại: 1 o(x , , x ) if w0 w1x1 w2 x2 wn xn n 1 otherwise vỡi wi giá trị thực, hay trọng số, định đóng góp đầu vào xi vào đầu perceptron Giá trị w0 ngưỡng để tổ hợp trọng số đầu vào w1x1 + … + wnxn phải vượt qua để perceptron cho giá trị Có thể viết: o(x) w x Huấn luyện perceptron học bao gồm việc chọn giá trị trọng số w0, …, wn cho thích hợp b Nguyên tắc huấn luyện perceptron Một cách để học vector số chấp nhận bắt đầu với trọng số ngẫu nhiên, sau áp dụng ví dụ học cho perceptron, thay đổi giá trị trọng số phân loại nhầm ví dụ Q trình lặp lại qua nhiều lần đến perceptron phân loại ví dụ học xác Trọng số thay đổi sau bước theo nguyên tắc huấn luyện perceptron sau: wi wiwi với wi(t o)xi Ở t đầu mục tiêu cho ví dụ học tại, o đầu sinh perceptron giá trị dương gọi tốc độ học (learning rate) Vai trị tốc độ học làkiểm sốt mức độ trọng số thay đổi sau bước Nó thường gán giá trị nhỏ (VD 0.1) c Sai số huấn luyện (training error) Sai số thường tính bằng: E (t d o) d dD với D tập ví dụ học, td đầu mục tiêu ví dụ học d, od đầu tính tốn ví dụ học d 3.1.3 Mạng neuron nhiều lớp giải thuật lan truyền ngược a Hàm ngưỡng Một perceptron cho đầu hàm tuyến tính Hàm ngưỡng sử dụng để đưa giá trị đầu hàm khơng tuyến tính giá trị đầu vào Các hàm ngưỡng hay sử dụng là: Hàm sigmoid: o(x) (w x) ( y) 1e y Hàm tanh: o(x) tanh(w x) ey e y tanh( y) ey e y b Mạng neuron feedforward Mạng neuron feedforward mạng neuron mà neuron lớp trước nối chiều với lớp sau Thơng thường mạng neuron nhiều lớp chia thành loại lớp: Lớp input: Là giao diện mạng neuron với môi trường ngồi, có nhiệm vụ lấy đầu vào Lớp hidden: Là lớp ẩn giữa, có nhiệm vụ tính tốn Lớp output: Là đầu toán Số neuron lớp input output thường xác định với toán, nhiên số lớp hidden số neuron lớp hidden cần xác định thực nghiệm c Giải thuật backpropagation BACKPROPAGATION(training_example,, nin, nout, nhidden) Mỗi ví dụ học gặp có dạng (x,t ) với x vector đầu vào t vector mục tiêu tốc độ học nin, nout, nhidden số neuron lớp input, ouput hidden Đầu vào từ neuron i đến neuron j ký hiệu x ji, trọng số từ neuron i đến neuron j ký hiệu wji Tạo mạng feedforward với nin input neuron, nout ouput neuron, nhidden hidden neuron Khởi tạo trọng số giá trị ngẫu nhiên nhỏ (VD -.05 05) Cho đến thỏa mãn điều kiện kết thúc: Với (x,t ) thuộc ví dụ học: Cho giá trị đầu vào x tính toán giá trị đầu o neuron Lan truyền sai số ngược lại mạng: Với neuron k lớp output, tính sai sốk k ok (1 ok )(tk ok ) Với neuron h lớp hidden, tính sai sốh w k oh (1 oh ) kh k Cập nhật lại koutputs trọng số wji wji wjiwji với wji j x ji d Momentum Một cách phổ biến để thay đổi nguyên tắc cập nhật trọng số thuật toán làm cho cập nhật trọng số vòng lặp thứ n phụ thuộc phần vào lần cập nhật thứ (n - 1) sau: wji (n) j x jiwji (n1) 0 < số gọi momentum 3.2 Giải tốn 3.2.1 Chương trình Input: Là ảnh nhị phân chữ cần nhận dạng Ouput: Ký tự nhận dạng mã unicode Chương trình gồm chức vẽ lấy ảnh từ bên để nhận dạng 3.2.2 Khởi tạo mạng neuron Lớp input: Gồm 60 đầu vào 60 đầu vào lấy cách tách biên ảnh thành chuỗi Fourier, lấy nhiều thành phần liên thông 10 giá trị chuỗi Fourier với thành phần Lớp output: Gồm 16 đầu Các đầu mã nhị phân unicode ký tự cần nhận dạng Lựa chọn hàm ngưỡng: Do đầu bit nên hàm sigmoid chọn để làm hàm ngưỡng Tập ví dụ học kiểm tra Các ví dụ học kiểm tra lấy từ mẫu viết tay thực tế sinh viên giảng đường Các mẫu sau scan xử lý thành ảnh nhị phân tách sẵn thành thành phần đầu đầu vào tương ứng để huấn luyện kiểm tra 3.2.3 Chuẩn bị liệu Để thu thập mẫu chữ viết tay chúng em nhờ bạn giảng đường điền chữ vào phiếu Số lượng phiếu phát khoảng 200 phiếu Các phiếu thu quét vào máy dùng chương trình tách thành kí tự 10 10 Hình Phiếu thu thập mẫu chữ viết tay 11 11 3.2.4 Các kết thực nghiệm a Số lớp hidden Layer size Learning rate Momentum Layer 100 0.5 0.6 Best validate Best Training time error performance 0.3438487922 0.4495412844 0.1009166667 100 0.5 0.6 0.2557802063 0.5871559633 0.4101333333 100 0.5 0.6 0.2082746529 0.6559633028 100 100 0.5 0.5 0.6 0.6 0.2025941125 0.6304081646 0.6559633028 2.2036166667 0.0825688073 1.5053166667 count 1.0681 Mạng neuron với lớp ẩn có xác suất nhận dạng tương đương với mạng có lớp ẩn error nhỏ chút Thời gian huấn luyện mạng tăng nhanh số lớp ẩn tăng từ đến Kết mạng neuron lớp ẩn thấp hẳn mạng lại số lớp ẩn lớn yêu cầu số lần lặp lớn để tinh chỉnh kết Trong điều kiện dừng thuật tốn chọn cố định sau 100 lần lặp mà không giảm validate error b Số neuron lớp hidden Learning rate Momentum Layer count Layer size Best validate Best Training time error performance 50 0.4587816385 0.2752293578 0.3109166667 0.5 0.6 0.5 0.6 80 0.2118265925 0.6330275229 1.7182166667 0.5 0.6 100 0.2025941125 0.6559633028 2.2036166667 3 0.5 0.5 0.6 0.6 120 150 0.2166624127 0.4611618863 0.6467889908 2.7471166667 0.2752293578 1.4589666667 12 12 Khi số neuron lớp ẩn vượt qua 80 tăng số neuron khơng tác động nhiều đến kết Với mạng 150 neuron lớp ẩn, kết thấp hẳn không thoả mãn điều kiện dừng giống phần (a) c Tốc độ học Layer count Layer size Momentum Learning 100 0.7 Best validate Best Training time error performance 0.1 0.2061831533 0.623853211 3.9724166667 100 0.7 0.3 0.224606125 0.619266055 2.6471166667 3 100 100 0.7 0.7 0.5 0.9 0.2097530639 0.3250993898 0.6376146789 2.1955333333 0.4633027523 0.8474333333 rate 13 13 d Momentum Layer count Layer size Learning 100 Best validate Best Momentum error Training time performance 0.5 0.2177829205 0.6284403671.4793666667 100 0.5 0.04 0.2305489015 0.61009174311.0493333333 100 0.5 0.1 0.2269169588 0.61467889911.9783166667 100 0.5 0.3 0.2076263935 0.6422018349 100 100 0.5 0.5 0.7 0.9 0.2097530639 0.5251302293 0.63761467892.1955333333 0.2339449541 0.4365 rate 1.71595 Đồ thị cho thấy lựa chọn giá trị momentum cao khiến cho thuật tốn bỏ sót số giá trị tối ưu Giá trị momentum tối ưu 0,7 e Lựa chọn tham số Số neuron lớp ẩn: 100 Số lớp ẩn: Tốc độ học: 0,5 Momentum: 0,6 f Kết huấn luyện Thử nghiệm với liệu gồm số kí tự có dấu (Ă, Ấ, Á, À, Ả v.v…) cho kết tạm ổn Tỉ lệ nhận dạng đúng: 49% Tổng lỗi validate: ~0,33 14 14 Số bước lặp: 2338 Tuy nhiên với liệu đầy đủ chữ tiếng việt không dấu có dấu (gần 200 kí tự), kết thu thấp: Tỉ lệ nhận dạng đúng: ~30% Tổng lỗi liệu kiểm thử: ~0,45 Số bước lặp: 2608 0.7 0.6 0.5 0.4 Training error Validating error Performance 0.3 0.2 0.1 48 132 216 300 384 468 552 636 720 804 888 972 1056 1140 1224 1308 1392 1476 1560 1644 1728 1812 1896 1980 2064 2148 2232 2316 2400 2484 2568 90 174 258 342 426 510 594 678 762 846 930 1014 1098 1182 1266 1350 1434 1518 1602 1686 1770 1854 1938 2022 2106 2190 2274 2358 2442 2526 Hình 2Thử nghiệm với liệu đầy đủ 15 15 0,7 0,6 0,5 0,4 Training error Validating error Performance 0,3 0,2 0,1 35 95 155 215 275 335 395 455 515 575 635 695 755 815 875 935 995 1055 1115 1175 1235 1295 1355 1415 1475 1535 1595 1655 1715 1775 1835 1895 1955 2015 2075 2135 2195 2255 2315 65 125 185 245 305 365 425 485 545 605 665 725 785 845 905 965 1025 1085 1145 1205 1265 1325 1385 1445 1505 1565 1625 1685 1745 1805 1865 1925 1985 2045 2105 2165 2225 2285 Hình Thử nghiệm với liệu chứa vài kí tự có dấu 16 16 GIỚI THIỆU VỀ PHẦN MỀM sapphireOCR 4.1 Hướng dẫn cài đặt Phần mềm sapphireOCR chạy Java Runtime Environment (JRE) Để chạy chương trình trước hết máy phải có JRE, download cách cài đặt xem http://www.java.com/en/download/index.jsp sapphireOCR phần mềm không cần cài đặt Sau giải nén thư mục, cần chạy file shortcut sapphireOCR 4.2 Hướng dẫn sử dụng Sau làm theo hướng dẫn cài đặt, sau giao diện chương trình: Chương trình có khung vẽ cho người sử dụng dùng chuột trái viết chữ, chữ nhận diện ghi phần Character có mã Unicode (hexa) tương ứng Ngồi ra, người sử dụng load file ảnh bên ngồi qua menu File > Open chỉnh sửa thêm tùy ý Để lưu lại file ảnh vừa vẽ, chọn File > Save As 17 17 Để tẩy, dùng chuột phải thao tác thay cho chuột trái Để xóa tồn khung vẽ, chọn Edit > Clear All 18 18 CÁC VẤN ĐỀ PHÁT SINH VÀ ĐỀ XUẤT 5.1 Kết nhận dạng thấp Nguyên nhân khâu tiền xử lí thực chưa tốt Để giải vấn đề cần cải thiện thuật toán tiền xử lí kết hợp với chương trình nhận dạng tài liệu đưa thêm số thuật toán “đoán” dựa vào từ điển 5.2 Tốc độ huấn luyện chậm Khi thử nghiệm liệu đầy đủ, chương trình cần 112 phút để hồn tất huấn luyện Giải pháp: song song hoá thuật toán huấn luyện 19 19 ... 1812 1896 1980 20 64 2 148 2232 2316 240 0 248 4 2568 90 1 74 258 342 42 6 510 5 94 678 762 846 930 10 14 1098 1182 1266 1350 143 4 1518 1602 1686 1770 18 54 1938 2022 2106 2190 22 74 2358 244 2 2526 Hình 2Thử... thử: ~0 ,45 Số bước lặp: 2608 0.7 0.6 0.5 0 .4 Training error Validating error Performance 0.3 0.2 0.1 48 132 216 300 3 84 468 552 636 720 8 04 888 972 1056 1 140 12 24 1308 1392 147 6 1560 1 644 1728... 0.2177829205 0.62 844 03671 .47 93666667 100 0.5 0. 04 0.230 548 9015 0.610091 743 11. 049 3333333 100 0.5 0.1 0.2269169588 0.6 146 7889911.9783166667 100 0.5 0.3 0.2076263935 0. 642 2018 349 100 100 0.5 0.5