Xin tư vấn về đề tài đồ án tốt nghiệp
Hello
Hiện tại mình đang là sinh viên năm 4. Kì này mình phải làm đồ án tốt nghiệp. Mình dự định làm về xử lý ảnh nhận dạng. Viết 1 app android nạp thẻ cào qua camera cho các cụ mắt kém hoặc cho ai lười bấm mã nạp thẻ ạ. App như trên và đề tài nhận dạng kí tự thì nhiều người làm rồi. Nhưng những app có sẵn sợ răng có chèn kích hoạt game hoặc sẽ nạp mã thẻ cho điện thoại khác. Nên mình muốn làm đề tài này
Bỏ qua phần xây dựng app android, mình muốn nhờ các bạn có kiến thức về mảng này tư vấn giúp mình phần nhận dạng kí tự xem có khả thi không. Với hoàn cảnh như sau:
Hiện tại mình có kiến thức cơ bản của sinh viên năm 4. Các môn liên quan như nhập môn xử lý ảnh, nhập môn trí tuệ nhân tạo mình đã được học. Nhưng qua tìm hiểu thì để làm được đề tài trên thì cần đến machine learning, deep learning… mà mình không được học trong trường và cũng chưa có điều kiện đề học.
Nền tảng để học machine learning thì có đại số tuyến tính và thống kế máy thì mình đã được học (cũng là kiến thức nền cơ bản thôi).
Vậy có khả thi không, thời gian làm là tầm 5 tháng. Mình tự code chứ không dùng thư viện có sẵn
Nếu khả thi thì có thể dùng các phương pháp nào để nhân dạng, ưu nhược điểm của từng phương pháp (đề mình lựa chọn cho phù hợp)
input ảnh chụp thẻ cào (các nhà mạng khác nhau)
- số 0-9
- font cố định
- mã thẻ đã được cào sạch
Về nhiễu thì mình có thể giới hạn bằng cách viết app cho android đời cao 1 chút, camera sẽ nét, hoặc giới hạn vùng quét mã thẻ trên màn hình để người dùng đặt đúng vị trí thẻ vào camera, giảm thiểu được khâu xử lý nhiễu.
Xin tư vấn cho mình hướng đi
Thank you
help
20 kí tự
Đừng có quan tâm đến mấy vấn đề như trí tuệ nhân tạo, machine learning làm gì cho rách việc ra, mấy thứ đó vượt quá khả năng sinh viên, nếu có cũng chỉ về mặt concept để thử nghiệm.
Còn để viết app chạy cho được thì chỉ cần làm sao viết lại (không nên vì OCR khó chằng) hoặc mượn được một thư viện OCR nào đó tốt mà kích thước không quá lớn để có thể cài vào điện thoại được, chỉnh chọc gì đó để tốc độ xử lý đủ nhanh, chấp nhận được là đã quá mãn nguyện rồi.
Có mấy nhà mạng thì cách đơn giản nhất là làm sao đó để nhận diện được đó là thẻ đó của hãng nào, dựa trên màu sắc của thẻ hoặc một vài yếu tố nào đó để giúp cho việc chọn cách nhận diện phù hợp, đó đã là bài toán không dễ.
Nếu áp dụng máy học, thì chỉ áp dụng ở chỗ training trong việc người ta đưa thẻ vào khôgn thẳng góc thì phải làm sao để xoay góc, giúp nhận được các con số chính xác, số nào không chính xác thì thông báo hay xử lý gì đó…
mình tính không dùng thư viện có sẵn, còn vấn đề thẻ nhà mạng nào, nếu đó là vấn đề khó giải quyết thế thì trước mắt mình xử lý cho viettel, sau mở rộng ra sau, cái mình cần tư vấn là về phần xử lý nhận dạng được số thôi
Để viết được thư viện có thể nhận dạng trong thời gian chừng nửa năm mà có thể nhận dạng được số trên thẻ cào điện thoại là dành cho nghiên cứu sinh, cấp độ sinh viên e rằng hơi quá sức. Nếu muốn thử sức thì vào Google Scholar tìm với từ khóa optical character recognition algorithm ra xem thử có nuốt trôi nổi trong thời gian ngắn? Đó là nói việc nhận diện text đơn thuần, thẻ cào nếu cào không được sạch lắm, hoặc được in trên nền không trắng, còn phải làm cái “khử nhiễu” nữa thì… ôi thôi, nghĩ đến phát sốt luôn.
bác thì bảo dễ quá, đơn giản quá, bác thì bảo khó
thứ 1 là vị trí quét thẻ cào mình sẽ giới hạn trong 1 vùng -> đỡ phần định vị vùng là thẻ cào, tránh trường hợp quét cùng lúc 2 thẻ cào, và các vật có hình dạng giống thẻ cào
thứ 2 mình chỉ giải quyết bài toán quét mã thẻ khi mã thẻ đã cào sạch lớp phủ thôi
các công việc mình đã liệt kê ra tổng quát có
- nhận dạng (mình chưa biết dùng pp nào, dùng pp truyền thống, làm mảnh rồi trích chọn hay là dùng máy học)
vấn đề mình cần tư vấn là ở khâu nhận dạng ấy
Cũng ko khó lắm, trong sách Mastering OpenCV có phần nhận dạng biển số xe, cũng tương tự cái này, dùng SVM & Neural network! Có 1 điều em phải hiểu cho rõ, nhận dạng bắt buộc phải dùng tới máy học, dù em có muốn hay ko thì đó là con đường duy nhất! Còn image segmentation hay gì đó là thuộc về tiền xử lý dữ liệu, để dữ liệu học được sạch, dễ nhận dạng hơn thôi, đó là con đường đi chứ ko phải cái để lựa chọn!
Anh nghĩ đề tài này, dù có viết từ đầu cũng phù hợp với sinh viên, tuy nhiên em nên làm cho xong thôi, đừng nghĩ tới chuyện xử lý nhiễu hay nâng cao gì cả, cố gắng viết tới phần basic Neural network là ok rồi, hồi đó anh cũng tự viết từ đầu, mất khoảng 10h cả debug gì đó nên ko lâu lắm đâu!
1 số sách cần cho đề tài của em:
1/ Xây dựng 1 hệ thống xử lý ảnh từ đầu bằng C++: https://www.amazon.com/Introduction-Processing-Numerical-Scientific-Computing/dp/1584888970/ref=sr_1_3?ie=UTF8&qid=1519974576&sr=8-3&keywords=C%2B%2B+image+processing
2/ Mastering OpenCV : https://www.amazon.com/Mastering-OpenCV-Practical-Computer-Projects/dp/1849517827/ref=sr_1_3?s=books&ie=UTF8&qid=1519974641&sr=1-3&keywords=mastering+opencv
3/ C++ Neural network: https://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi
theo em tìm hiểu thấy, có phương pháp truyền thống là đầu tiên làm mẫu, xương hóa ảnh, rồi trích chọn các đặc trưng, sau đó so sánh khi quét thẻ thì cũng xương hóa rồi trích chọn đặc trưng rồi so sanh các đặc trưng vừa trích chọn được với các đặc trưng đã lưu, vì mã thẻ cố định 0-9, và font cố định nên không cần thiết mở rộng sau này
còn về sử dụng máy học, theo anh tự code là khả thị ạ, e cũng chỉ làm đơn giản
input như sau
em liệt kê được các bước nhứ sau
em chỉ cần nhận dạng được dãy số là được, nhiễu thì không phải là phần cần tập trung ạ
a code mất có 10h ạ :((
Nếu dữ liệu như em nói thì nó rất dễ thôi, cứ code từ đầu đi, ko lâu lắm đâu, kể cả dùng máy học!
Tuy nhiên với dữ liệu chỉ là 10 số và cách viết cố định thế thì anh ko biết dùng máy học có hiệu quả hay ko, em có thể thử 2 cách, 1 là cách so sánh các đặc trưng mẫu (pattern) như em nói, 2 là dùng máy học! Đó cũng là 1 hướng mở thú vị cho đề tài của em đó, so sánh cách cũ và cách hiện đại!
Input có được sẽ tương tự trên vì app android em sẽ viêt cho android phiên bản cao 1 chút, nên máy đời mới thì camera sẽ nét -> đỡ nhiễu.
Còn khi quét thẻ, e sẽ tạo ra 1 cửa sổ bé bé vừa đủ cái thẻ để người dùng đặt thẻ vào vị trí đúng -> tránh trường hợp quét 1 lúc 2 thẻ, hoặc trong ảnh có các vật thể giống hình cái thẻ -> tránh được tiền xử lý tìm ra vùng chưa thẻ cào
Và lớp phủ thẻ cào cũng phải cạo sạch, không cạo sạch thì sẽ phải dự đoán xem kí tự bị khuất là kí tự nào, đánh giá % đúng, rồi chọn số có % cao nhất, khá phức tạp nên em không làm
Nên chuyên khử nhiễu sẽ nhẹ đi phần nào và cũng không cần làm nâng cao ạ
Chỉ cần nhận dạng được số thôi là mãn nguyện lắm rồi ạ. Chứ em không tập trung vào cải thiện trải nghiệm của người dùng
Tks anh. Nhờ a tư vấn mà thấy sáng lạng thêm chút.
Có gì vướng mắc mong a giúp đỡ
Ok, vậy cứ viết từ đầu đi em, chúc em thành công nhé!
PS : 10h đó là 10h tự xây dựng 1 hệ thống Neural Network, chứ code nguyên hệ thống xử lý ảnh đó chắc mất hơn 100h đó em, nhưng mà khả thi!
Ok, nếu anh nhớ gì sẽ chỉ, vì hiện tại anh đang làm game nên khá bận, cũng ko đụng đến xử lý ảnh nhiều nữa!
Em có 5 tháng để làm ạ. Hy vọng kịp. (Mà không kịp thì năm sau báo cáo đồ án lại, có hẳn 1 năm để làm thêm chắc kịp ) Với em có thể sẽ đi thực tập ở viện công nghệ thông tin nên qua đó chắc có người họ giúp đỡ học hỏi nữa ạ, và còn thầy cô giảng viên hướng dẫn nữa, em cũng nhờ được 1 bạn trên diễn đàn này tư vấn thêm
Tks anh. Chào thân ái và quyết thắng. Tiện đây anh có viết blog không cho em xin địa chỉ học hỏi ạ
Anh ko có viết blog vì quá bận, anh chỉ có channel youtube này và facebook để cập nhật các sản phẩm mới của anh, mời em xem qua nhé!
Youtube: https://www.youtube.com/channel/UCBsop_ILNI-luHjxCpgKepA?view_as=subscriber
Facebook : https://www.facebook.com/MrBCRCP
fb link hỏng anh ạ
20 kí tự
Sorry em, anh sửa lại rồi!