190 likes | 377 Views
OCR implementation on FPGA. מבוצע ע"י: אריאל וולף ואלעד ביכמן מנחה: יורי דולגין. רקע. תוכנות OCR או בשמן המלא Optical Character Recognition הן תוכנות שמסוגלות לזהות תמונות אופטיות של תווים ולהפכן לתווים בפורמט טקסט.
E N D
OCR implementation on FPGA מבוצע ע"י: אריאל וולף ואלעד ביכמן מנחה: יורי דולגין
רקע • תוכנות OCR או בשמן המלא Optical Character Recognition הן תוכנות שמסוגלות לזהות תמונות אופטיות של תווים ולהפכן לתווים בפורמט טקסט. • שימושיות מאוד במגוון תחומים : החל מסורקים ביתיים וכלה ברובוטיקה, ראייה ממחושבת ועיבוד תמונה.
כללי • בפרויקט זה נבנה מערכת חומרה ספרתית המסוגלת לזהות אותיות בעברית, כלומר בהינתן תמונה בינארית של אות מהאלף-בית העברי, המערכת תדע לסווגה לאחת מ-22 האפשרויות. • המערכת תהיה בנויה מכרטיס PCI המכיל רכיב חומרה מתכנת (FPGA ) שעליו ייצרב התכנון. • המערכת תבצע סווג בלבד (ללא אימון). • בנוסף תסופק תוכנית Matlab שתבצע אימון לרשת על מחשב PC.
ממשק המערכת • כניסות: • תמונה בינארית בגודל 16 x 9 (144 פיקסלים). • הפיקסלים יכולים להיכנס למערכת במקביל, בחלקים או כזרם (stream) של ביטים וזאת כתלות במספר ה- I/O הפנויים. • יציאות: ווקטור באורך 5 שייתן חיווי על האות שבתמונה, או על אי הצלחה.
הגדרות המערכת • קצבים : יקבעו לאחר מימוש בלוק בסיסי של נוירון בודד. • שיטת מימוש: רשת נוירונים (פרספטרון רב שכבתי) בעלת משקלים שכווננו מראש כך שהרשת תדע לסווג תמונות המכילות את אותיות הא"ב העברי.
רכיב נוירון בודד – תיאוריה • נוירון בודד מסוג פרספטרון הוא רכיב חישובי המממש את הקשר הבא בין כניסותיו ליציאתו: φ (WTX+w0) • W ווקטור המשקלים (באורך n כלשהו). • X ווקטור כניסה בינארי. • w0הוא משקל ההיסט. • φ היא פונקציות ההפעלה - פונקציה לא ליניארית, מונוטונית עולה ובעלת טווח חסום (נקראת גם סיגמואיד).
רשת נוירונים • כלי בסיסי בתחום הלמידה הממוחשבת. • צירוף של רכיבי נוירון בודדים אשר צירופם יוצר מיפוי לא ליניארי בין הכניסות ליציאות. • מקרב אוניברסלי לפונקציות לא ליניאריות. • יכולת לימוד אינדוקטיבית על סמך דוגמאות מייצגות. • שיטות הלימוד הנפוצות מתבססות על קירובי גרדיאנט (Gradient Descent). • סיווג דוגמאות חדשות מתבצע לפי הפרמטרים שנקבעו בשלב האימון.
שלב אימון הרשת • יתבצע בעזרת תוכנת Matlab ( NN Toolbox ). • אלגוריתם לעדכון משקלים: Back-Propagation או גרסאות משופרות שלו (traingdx). • ביצוע אימון וסימולציה על מספר רשתות נוירונים בארכיטקטורות שונות (גודל שכבת הביניים, אורכי משקלים). • אימון הרשת שתיבחר והתכנסותה לערכי משקלים סופיים. • יתכן שימוש בעיבוד מקדים (preprocessing).
שלב סיווג הדוגמאות • ערכי משקלים שנקבעו בשלב האימון ע"י תוכנת matlab ייכתבו ל-RAM הנמצא על הרכיב בשלב האתחול. • קיים סט משקלים נפרד לכל אות (22 סטים שונים). • תתוכנן רשת של נוירונים בסיסיים שתהיה מסוגלת לבצע סווג של תמונת אות וזאת כתלות בערכי המשקלים של כל נוירון עבור אותה אות. • יתוכנן בקר מערכת מתאים (FSM) שיתזמן את המערכת בהתאם לארכיטקטורה שתיקבע בהמשך.
מימוש רכיב נוירון בודד • ווקטור המשקלים - W אורכו ייקבע לאחר סימולציות • פונקצית ההפעלה: אפשרויות מימוש: • חומרה מיוחדת • Look Up Table שתמומש ע"י גישות ל-RAM אופי המימוש ייקבע כתלות במספר השערים הפנויים ברכיב (לוגיקה +RAM) ויתבצע לאחר סיום מימוש נוירון בודד והגדרת מבנה הרשת.
דרישות חומרה • כרטיס PCI(32 Bit/33 MHz) של חברת NALLATECH המכיל 2 רכיבי חומרה מתכנתים (FPGA) של חברת Xilinx . • רכיבי חומרה מתכנתים: Spartan-II XC2S150 • תדר פעולה מקסימאלי:200 MHZ • רכיב אחד כבר מתוכנת עם PCI-core ובקר לוח. • רכיב שני פנוי לאפליקציות משתמש.
שלבי התכנון • תכנון ספרתי (כתיבת קוד HDL ) של בלוק בסיסי המממש נוירון בודד. • כתיבת קוד Matlab מתאים המבצע לימוד וסימולציה לנוירון בודד וכן לרשת נוירונים מלאה. • קבלת החלטה סופית לגבי אופי המימוש : • מבנה הרשת (גודל שכבת הביניים). • אורכי המשקלים. • פונקציות LUT. • תכנון רשת נוירונים מלאה תוך התחשבות באילוצי שטח ו-Timing.
שלבי תכנון (המשך) • תכן בקר מערכת מתאים ( FSM ). • תכן זיכרון ופונקציות LUT. • תכן בלוקים נוספים במידה ויידרשו ( עיבוד מקדים על התמונה). • סימולציית HDLמלאה והשוואה לסימולציה Matlab. • סינתזה לרמת שערים (Gate Level). • סימולציית Gate Level. • Place + Route + צריבת הרכיב.