רובוטיקה ובינה מלאכותית : AI-106 -ברוכים הבאים לקורס
מה קורה בעולם היום העשרה
חלק א: רובוטיקה ובינה מלאכותית – סימולטורים ואימון רובוטים
מאיפה מתחילים ומה צריך לדעת ?
סימולטורים לאימון רובוטים באמצעות בינה מלאכותית
סימולטורים לאימון רובוטים באמצעות בינה מלאכותית הם סביבות תלת־ממד וירטואליות, שבהן רובוט יכול ללמוד לבצע משימות באמצעות ניסוי וטעייה, במקום שנצטרך לתכנת מראש כל תנועה שלו.
ההבדל המרכזי:
-
תכנות רגיל / G-code: אנחנו אומרים לרובוט בדיוק איך לזוז.
-
בינה מלאכותית (AI): אנחנו מגדירים לרובוט מה המטרה, והוא לומד כיצד להשיג אותה באמצעות אלגוריתם אימון.
דוגמה: זרוע רובוטית שמרימה קופסה (ללא A.I)
בתכנות רגיל:
-
הזז את המפרק הראשון ל־30°.
-
הזז את המפרק השני ל־45°.
-
סגור את התפסן.
-
הרם את הקופסה ב־20 ס"מ.
באימון AI בסימולטור:
אנחנו מגדירים מטרה: הרם את הקופסה והנח אותה על השולחן.
הרובוט מתאמן על אלפי ניסיונות. הוא לומד להתמודד עם מיקומים שונים של הקופסה, טעויות בתנועה, חיכוך ומשקלים שונים, כל עוד אלה מיוצגים באימון.
השוואה
| מאפיין | תכנות רגיל / G-code | AI בסימולטור |
|---|---|---|
| תנועות | מוגדרות מראש | נלמדות מתוך ניסיון |
| הסתגלות לשינויים | דורשת לוגיקה נוספת | אפשר ללמוד הסתגלות |
| חיישנים | אפשריים בתכנות | משמשים כקלט למודל |
| ניסוי וטעייה | באמצעות בדיקות מתוכנתות | חלק מתהליך האימון |
| משימות חוזרות ומדויקות | מצוין | לא תמיד עדיף |
| סביבה משתנה ולא צפויה | מורכב יותר | בעל יתרון פוטנציאלי |
חשוב: G-code הוא פורמט לפקודות תנועה, בעיקר במכונות CNC ומדפסות תלת־ממד. גם רובוט המבוסס על AI עדיין זקוק לתוכנת בקרה, קינמטיקה ומנגנוני בטיחות.
אז מה עושים היום – ומה זה אומר אימון רובוט בסימולטור ?
נכיר את מודל הבינה מלאכותית : Reinforcement Learning
1.הרובוט מלמד בעצמו ללכת משלב 0
2. מלמדים במקבליות
3.
באילו סימולטורים משתמשים?
| סימולטור | שימוש מרכזי |
|---|---|
| MuJoCo | פיזיקה, זרועות ורובוטים הולכים |
| MuJoCo Playground | אימון AI באמצעות Reinforcement Learning |
| NVIDIA Isaac Lab | אימון אלפי רובוטים במקביל בעזרת GPU |
| Gazebo | סימולציה וחיבור למערכות ROS 2 |
אז למה זה עדיף?
היתרון הגדול הוא האפשרות לבצע מאות אלפי ניסיונות וירטואליים, כולל כישלונות, ללא שחיקה או נזק לרובוט אמיתי.
אבל יש גם חיסרון: רובוט שלמד בסימולטור לא בהכרח יצליח בעולם האמיתי. נדרשים מודל פיזיקלי מדויק ככל האפשר, התאמה לחיישנים ולמנועים, בדיקות ובקרת בטיחות.
אימון RL מקביל ואיחוד למודל אחד – כלב רובוטי
-
Parallel Environments (Vectorized RL): אלפי עותקים של הכלב מתאמנים בו־זמנית בסימולטור, למשל Isaac Lab.
-
Multi-Task Reinforcement Learning: כל סביבה מאמנת משימה אחרת: מדרגות, מכשולים, גלגול, תנועה קדימה, אחורה ולצדדים.
-
Shared Policy Network: כל העותקים משתמשים באותה רשת עצבית עם פרמטרים משותפים \(\theta\).
-
Experience Aggregation: איסוף נתוני האימון מכל הסביבות: מצבים, פעולות, תגמולים ותוצאות.
-
PPO – Proximal Policy Optimization: חישוב עדכון משותף לרשת מתוך כלל ההתנסויות, בדרך כלל באמצעות Mini-Batch Gradient Descent.
-
Policy Synchronization: הפצת המשקלים המעודכנים לכל העותקים לסבב האימון הבא.
-
Task-Conditioned Policy: הרשת מקבלת גם פקודת משימה או יעד, וכך לומדת התנהגויות שונות במודל אחד.
-
Curriculum Learning: העלאה הדרגתית של רמת הקושי.
-
Policy Distillation: אם מאמנים רשת נפרדת לכל מיומנות, אפשר להעביר את הידע לרשת אחת באמצעות חיקוי הפלטים שלהן.
התוצאה: רשת עצבית אחת (Unified Locomotion Policy), המקבלת נתוני חיישנים ופקודת תנועה ומייצרת פקודות למפרקי הכלב.
חשוב: לא מחברים משקלים של מודלים שונים באמצעות ממוצע פשוט. מאמנים רשת משותפת או מבצעים Policy Distillation.
דוגמא : אימון כלב
איך זה עובד? (Parallel RL + PPO)
-
200 הולכים קדימה ואחורה.
-
200 הולכים לצדדים.
- 200 מתגלגלים.
-
- 200 עולים במדרגות.
-
- 200 עוברים מכשולים.
-
-
-
Independent Buffers: לכל סימולטור מצב וזיכרון התנסות נפרדים. אין כתיבה מתנגשת לאותו זיכרון.
-
-
Batch Aggregation: מאחדים את נתוני ההתנסות ל־Training Batch.
-
-
Gradient Update: מחשבים גרדיאנטים ומעדכנים את משקלי הרשת המשותפת.
-
-
Synchronization: מפיצים את המשקלים החדשים לכל הסימולטורים.
-
חלק ב: התמצאות במרחב – בניית מפה בזיכרון של הרובוט
חלק ג : זרוע רובוטית
עולם הארדויאנו
An Introduction to Arduino Uno Pinout
קישור לפינים עם הסבר https://www.circuito.io/blog/arduino-uno-pinout/
הזרוע הרובוטית שהיא רק חלק מהערכה
מבוא ראשוני בלבד מה זה ארדואינו – הרצה בסימולטור
תרגיל כיתה 1
- פתח את הקישור https://wokwi.com/projects/477849651817839617
- הפעל את הסימולטור על ידי לחיצה
- פתח את chatGPT או בינה מלאכותית אחרת ו- העתק את הקוד מהסימולטור ונתח בעזרת A.I מה עושה הקוד שורה אחרי שורה
קישורים ללימוד ארדואינו (נלמד ארדואינו לעומק הרצאה הבאה )
הוספת ספריות לארדואינו
שלבים לפתיחת חשבון Gmail חדש
-
היכנס לאתר: https://accounts.google.com/signup
-
לחץ על יצירת חשבון (Create account).
-
בחר לשימוש אישי (For my personal use).
-
הזן שם פרטי ושם משפחה.
-
הזן תאריך לידה ומגדר.
-
בחר כתובת Gmail חדשה, לדוגמה:
myname2026@gmail.com. -
צור סיסמה חזקה ואשר אותה.
-
אם Google מבקשת, אמת את החשבון באמצעות מספר טלפון.
-
הוסף כתובת דוא"ל לשחזור (מומלץ).
-
אשר את תנאי השימוש ומדיניות הפרטיות.
סיימת! החשבון החדש מוכן לשימוש.
כניסה לדואר: https://mail.google.com
חשוב: אין צורך להתנתק מחשבון Gmail הקיים. ניתן להחזיק כמה חשבונות ולעבור ביניהם באמצעות תמונת הפרופיל בפינה העליונה.
חלב: מבוא לשפת פייתון וקולאב
מבוא לשפת פייתון – שפה פופלארית לפיתוח – בינה מלאוכתית
פייתון (באנגלית: Python) היא שפת תכנות עילית דינמית למטרות כלליות מהנפוצות ביותר, ומדורגת באופן עקבי כאחת משפות התכנות הפופולריות ביותר[2][3]. פייתון תוכננה תוך שימת דגש על קריאוּת הקוד, וכוללת מבנים המיועדים לאפשר ביטוי של תוכניות מורכבות בדרך קצרה וברורה. אחד המאפיינים הבולטים בתחביר השפה הוא השימוש בהזחה להגדרת בלוקים של קוד (ללא שימוש בסוגריים או במילים שמורות לצורך כך, כמו ברוב השפות הנפוצות).
https://he.wikipedia.org/wiki/%D7%A4%D7%99%D7%99%D7%AA%D7%95%D7%9F
1.1 סביבת הפיתוח
https://colab.research.google.com/
1.1.1 ניתן לפתח גם עם – https://chatgpt.com/
- טבלאות אמת :



הבנה כללית של קוד פיטון עבור הרצה של בינה מלאכותית .
משפטי תנאי :
|
1 2 3 |
age = 8 if age > 7: print("You are older than 7!") |
|
1 2 3 |
height = 100 if height < 120: print("You are shorter than 120 cm!") |
|
1 2 3 4 5 |
day = "Monday" if day == "Sunday": print("It's a weekend!") else: print("It's a weekday!") |
|
1 2 3 |
color = "blue" if color == "red" or color == "blue": print("You chose a primary color!") |
|
1 2 3 4 |
age = 10 height = 130 if age > 5 and height > 120: print("You can go on the ride!") |
|
1 2 3 |
fruit = "apple" if fruit != "banana": print("This is not a banana!") |
|
1 2 3 4 5 6 7 |
number = 3 if number > 5: print("Number is greater than 5!") elif number == 5: print("Number is exactly 5!") else: print("Number is less than 5!") |
|
1 2 3 4 |
x = 5 y = 10 if x < 10 and y > 5: print("x is less than 10 and y is greater than 5!") |
|
1 2 3 |
score = 85 if score > 90 or (score > 80 and not score == 100): print("Great job on your score!") |
string
Python, strings are zero-indexed, which means the first character of a string is at index 0, the second character is at index 1, and so on
|
1 2 3 |
text = "Python" print(text[0]) # Output: P (the first character) print(text[1]) # Output: y (the second character) |
הדפסה של על התווים ניראה בהמשלך לולאות
|
1 2 3 4 5 6 7 |
text = "Python" length = len(text) # Get the length of the string print(f"The length of the string is: {length}\n") for i in range(length): print(f"Character at position {i}: {text[i]}") |

כתיבה יותר מקוצרת אבל פחות " קלה "
|
1 2 3 4 |
text = "Python" for i in range(len(text)): print(text[i]) |
|
1 2 3 4 5 6 |
text = "Hello, welcome to Python programming!" if "Python" in text: print("The word 'Python' is in the text!") else: print("The word 'Python' is not in the text.") |
Output: The word 'Python' is in the text!
|
1 2 3 4 5 6 |
text = "Learning Python is fun!" if text.find("Python") != -1: print("Found the word 'Python' in the text!") else: print("Couldn't find the word 'Python' in the text.") |
תרגיל כיתה 1.1 : לימוד שימוש בפייטון עבור בינה מלאכותית שלב שלב
1.שלב א
2 שלב ב : שימוש בבינה מלאוכתית לכתיבת קוד
3.שלב ג : שימוש בבינה מלאכותית לתיקון קוד
4. שלב ד : הפעלת מודל YOLO הכי פשוט שיש
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# Step 2: Import necessary libraries from ultralytics import YOLO import cv2 import requests import numpy as np import matplotlib.pyplot as plt person_counter=0 # Step 3: Download the image from URL url = 'https://robotronix.co.il/wp-content/uploads/2024/05/2-300x200.jpg' resp = requests.get(url, stream=True).raw image = np.asarray(bytearray(resp.read()), dtype="uint8") image = cv2.imdecode(image, cv2.IMREAD_COLOR) # Convert BGR to RGB for display and model image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # Step 4: Load YOLOv8 model model = YOLO('yolov8n.pt') # lightweight model # Step 5: Run inference results = model.predict(source=image_rgb, verbose=False) # Step 6: Print detections person_found = False for r in results: for box in r.boxes: cls = int(box.cls[0]) conf = float(box.conf[0]) label = model.names[cls] print(f"{label}: {conf:.2f}") if label == "person": person_counter=person_counter+1 print("*** person found ***") print(f"person total: {person_counter}") # Step 7: Show image with boxes (no channel reversal) detected_img = results[0].plot() # already in RGB plt.imshow(detected_img) plt.axis('off') plt.title("YOLOv8 Detection") plt.show() |
- לחץ על הקישור הבא והרץ את התוכנית :
https://colab.research.google.com/drive/1U9o4Ucnq3kesvtMz4rxVgS0XXhXCoh_L?usp=sharing
2. העתק והרץ את התוכנית הבאה מה היא עושה
|
1 2 3 4 5 6 |
import random # Import the module that allows random number generation # Generate 5 random numbers between 1 and 10 and print them for i in range(5): random_number = random.randint(1, 10) # Generate a random number between 1 and 10 print(f"Random number {i+1}: {random_number}") |


4. קלט : Time Check
|
1 2 3 4 5 6 7 |
hour = int(input("Enter the hour (0-23): ")) if 6 <= hour < 12: print("Good morning!") elif 12 <= hour < 18: print("Good afternoon!") else: print("Good evening!") |
4. תרגול לולאות : בדיקת כלי טיס
|
1 2 3 4 5 6 |
vehicles = ["bird", "kite", "uav", "drone", "plane", "car"] for vehicle in vehicles: if vehicle in ["bird", "kite", "uav", "drone", "plane"]: print(f"{vehicle} is an aerial vehicle") else: print(f"{vehicle} is not an aerial vehicle") |
4.1. בדיקת פירות
|
1 2 3 4 5 6 |
items = ["apple", "banana", "carrot", "orange", "potato"] for item in items: if item in ["apple", "banana", "orange"]: print(f"{item} is a fruit") else: print(f"{item} is not a fruit") |
4.2. בדיקת ציפורים
|
1 2 3 4 |
items = ["bird", "kite", "uav", "drone", "plane"] for item in items: if item == "bird": print(f"{item} is a bird") |
4.3 בדיקת ציפורים בתוך רשימה מעורבת
|
1 2 3 4 5 6 7 8 |
results = ["bird", "kite", "uav", "drone", "plane", "moon", "car"] filtered_results = [] for result in results: if result == "uav": print("UAV found in sky") filtered_results.append(result) print("Filtered results:", filtered_results) |
4.4 בדיקת ציפורים בתוך רשימה מעורבת
|
1 2 3 4 5 6 7 |
results = ["bird", "kite", "uav", "drone", "plane", "moon", "car"] filtered_results = [] for result in results: if result != "bird" and result == "moon": filtered_results.append(result) print("Items that are not birds and are moons:", filtered_results) |
4.5 בדיקת ציפורים בתוך רשימה מעורבת
|
1 2 3 4 5 6 7 |
results = ["bird", "kite", "uav", "drone", "plane", "moon", "car"] filtered_results = [] for result in results: if result not in ["bird", "kite", "plane", "moon"]: filtered_results.append(result) print("Items different from bird, kite, plane, and moon:", filtered_results) |
5. תרגול ספירה
|
1 2 3 4 5 6 7 |
results = ["bird", "kite", "uav", "drone", "plane", "moon", "car", "uav"] count_uav = 0 for result in results: if result == "uav": count_uav += 1 print(f"Number of UAVs found: {count_uav}") |
תרגיל כיתה 1.2
1.2.1 כתוב בעזרת בינה מלאכותית שמקבלת קלט קישור של תמונה
1.2.2 התוכנה בעזרת YOLO8 סופרת כמה מכוניות יש בכביש (התעלם מכיוו נתיב )
אם יש מעל 10 מכוניות כתוב באנגלית שי פקק תנועה אם יש פחות מ 10 מכוניות עד 5 יש תנועה קלה
אם יש פחות מ 5 עד 0 הכביש פנוי תנועה זורמת
ספור כמה מכוניות יש סמן את המכוניות בתמונה
אל תשכח להגדיר ל COLLAB



5.1 הוספה למערך
|
1 2 3 4 5 6 7 8 9 10 |
results = ["bird", "kite", "uav", "drone", "plane", "moon", "car", "uav"] count_uav = 0 uav_list = [] for result in results: if result == "uav": count_uav += 1 uav_list.append(result) print(f"Number of UAVs found: {count_uav}") print("List of UAVs:", uav_list) |
https://colab.research.google.com/gist/RoboWild/19deff31306d95d2e315a9e1d331f156/yolo-train.ipynb
4 . זיהוי אובייקטים YOLO
YOLO (ראשי תיבות של You Only Look Once) הוא מודל בינה מלאכותית שיודע לזהות ולהבין מה יש בתמונה במהירות גבוהה מאוד.
דמיינו שיש לכם רובוט שמסתכל על תמונה ורואה בה אוטו, חתול ואיש – הוא לא רק יודע שהם שם, אלא גם איפה בדיוק הם נמצאים בתוך התמונה.
YOLO עובד בצורה חכמה – הוא מסתכל על כל התמונה בפעם אחת, מזהה את כל האובייקטים החשובים ומקיף אותם במסגרת. בגלל זה הוא מהיר מאוד ומתאים למכוניות חכמות, מצלמות אבטחה ומשחקים.
שימושים
תעופה: YOLO
- עוזר למטוסים ורחפנים לזהות מכשולים באוויר ולנווט בבטחה.
- דוגמה: רחפן מזהה ציפורים ומתאים את מסלול הטיסה כדי למנוע התנגשות.
רפואה:
- מזהה מחלות בתמונות רנטגן או MRI במהירות.
- דוגמה: רופא משתמש ב-YOLO כדי למצוא גידול בריאות מתוך אלפי סריקות.
צבא:
- מזהה כלי רכב חשודים, חיילים או רחפנים בשדה הקרב.
- דוגמה: מערכת הגנה מזהה בזמן אמת טיל מתקרב ומפעילה יירוט אוטומטי.
תנועה:
- מזהה כלי רכב, רמזורים והולכי רגל לשיפור הבטיחות בדרכים.
- דוגמה: מצלמה חכמה מזהה רכב שחוצה צומת באור אדום ושולחת דו"ח.
יש כמה מודלים מתחרים ל-YOLO בתחום זיהוי אובייקטים בזמן אמת:
- SSD (Single Shot Detector) – כמו YOLO, מסתכל על כל התמונה בפעם אחת, אבל מחלק אותה לרשת קטנה יותר. מהיר אך פחות מדויק בקטנים.
- 📌 דוגמה: משמש במצלמות חכמות לזיהוי פנים.
- Faster R-CNN – מזהה אובייקטים בדיוק גבוה מאוד, אבל איטי יותר כי הוא מחפש אזורים חשובים לפני הזיהוי.
- 📌 דוגמה: משמש ברפואה כדי לזהות תאים סרטניים בתמונות מיקרוסקופיות.
- EfficientDet – יותר יעיל ופחות כבד, מספק איזון בין דיוק למהירות.
- 📌 דוגמה: בשימוש ברחפנים לזיהוי מטרות צבאיות.
- DETR (DEtection TRansformer) – משתמש במודלי Transformer (כמו ב-ChatGPT) כדי לזהות אובייקטים בדיוק רב, אך לא מהיר כמו YOLO.
- 📌 דוגמה: בשימוש במערכות חכמות לנהיגה אוטונומית.
YOLO עדיין מוביל במהירות, אך במקרים שדורשים דיוק גבוה במיוחד, משתמשים גם במודלים אחרים
1.נזכיר YOLO 8 יש מודל דוגמא – שיוע לזהות כ 80 מחלקות כלליות שהם ברורות
1.1 רשימת מחלקות
Person |
Bicycle |
Car |
Motorcycle |
Airplane |
Bus |
Train |
Truck |
Boat |
Traffic light |
Fire hydrant |
Stop sign |
Parking meter |
Bench |
Bird |
Cat |
Dog |
Horse |
Sheep |
Cow |
Elephant |
Bear |
Zebra |
Giraffe |
Backpack |
Umbrella |
Handbag |
Tie |
Suitcase |
Frisbee |
Skis |
Snowboard |
Sports ball |
Kite |
Baseball bat |
Baseball glove |
Skateboard |
Surfboard |
Tennis racket |
Bottle |
Wine glass |
Cup |
Fork |
Knife |
Spoon |
Bowl |
Banana |
Apple |
Sandwich |
Orange |
Broccoli |
Carrot |
Hot dog |
Pizza |
Donut |
Cake |
Chair |
Couch |
Potted plant |
Bed |
Dining table |
Toilet |
TV |
Laptop |
Mouse |
Remote |
Keyboard |
Cell phone |
Microwave |
Oven |
Toaster |
Sink |
Refrigerator |
Book |
Clock |
Vase |
Scissors |
Teddy bear |
Hair drier |
Toothbrush |
2. התקן את הבינה המלאכותית לזיהוי אובייקטים מסוג YOLO 8 לפי ההוראות הבאות
2.1 יש ראשית להיכנס לגוגל לחשבון האישי ואז להיכנס ל COLAB (בסיום ההרצאה יש להתנתק מחשבון GOOGLE )
2.2.2 קישור
https://colab.research.google.com/drive/1wfPhYH4xOMdmW3O730b42bNvPnHxuGwI?usp=sharing
2.3 התקנה של YOLO
|
1 2 3 4 5 6 |
%pip install ultralytics import ultralytics ultralytics.checks() !pip install opencv-python-headless print (" **** done **** ") |
2.4 יצירת ספריות
|
1 2 3 4 5 6 7 8 |
import os current_path = os.getcwd() print("Current Path:", current_path) # Create the directories using shell commands !mkdir -p download/images !mkdir -p download/movies print("Directories download/images and download/movies created successfully.") |
2.5
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
import cv2 import requests import numpy as np from ultralytics import YOLO import matplotlib.pyplot as plt # Define colors red = (255, 0, 0) green = (0, 255, 0) blue = (0, 0, 255) cyan = (0, 255, 255) magenta = (255, 0, 255) yellow = (255, 255, 0) maroon = (128, 0, 0) dark_green = (0, 128, 0) navy = (0, 0, 128) olive = (128, 128, 0) purple = (128, 0, 128) teal = (0, 128, 128) white = (255, 255, 255) black = (0, 0, 0) # Load the YOLOv8 model model = YOLO('yolov8n.pt') # Download the image from the URL image_url = 'https://robotronix.co.il/wp-content/uploads/2024/05/3-300x199.jpg' response = requests.get(image_url) image_array = np.asarray(bytearray(response.content), dtype=np.uint8) image = cv2.imdecode(image_array, cv2.IMREAD_COLOR) # Save the image locally cv2.imwrite('download/images/3-300x199.jpg', image) # Run the model on the downloaded image with a confidence threshold of 0.54 without drawing boxes results = model.predict(source='download/images/3-300x199.jpg', conf=0.54) # Function to draw bounding boxes and text with custom text size def draw_custom_boxes(image, results, model): for result in results: boxes = result.boxes.data.cpu().numpy() for box in boxes: x1, y1, x2, y2, conf, cls = box label = f'{model.names[int(cls)]} {conf:.2f}' # Draw bounding box cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), red, 2) # Draw label background (w, h), _ = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.4, 1) cv2.rectangle(image, (int(x1), int(y1) - h - 3), (int(x1) + w, int(y1)),red, -1) # Draw label text cv2.putText(image, label, (int(x1), int(y1) - 3), cv2.FONT_HERSHEY_SIMPLEX, 0.4, white, 1) # Display the original image plt.figure(figsize=(14, 7)) plt.subplot(1, 2, 1) plt.title("Original Image") plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) plt.axis('off') # Copy the original image to draw boxes on it result_image = image.copy() # Draw custom boxes and labels draw_custom_boxes(result_image, results, model) # Save the result image cv2.imwrite('result_image.jpg', result_image) # Display the result image inline plt.subplot(1, 2, 2) plt.title("Detection Results") plt.imshow(cv2.cvtColor(result_image, cv2.COLOR_BGR2RGB)) plt.axis('off') plt.show() |
3 בדוק את התמונות הבאת





העשרה :
מבוא לבינה מלאכותית
רשתות ניירונים ANN בינה מלאכותית

קישור :
https://colab.research.google.com/drive/1aS5y_LKPePjloHi57PZforMGqOESZGgX?usp=sharing




4. ,תרגיל כיתה : בניית רשת ניירונים בעזרת בינה מלאוכתית
4.1 בנה בעזרת בינה מלאוכתי רשת ניירונים בקוד פייטון – בסביבת פיתוח קולאב אשר מקבל את הנתונים הבאים
4.2 הצג את גרף הלימודה הפעל על 40 איפוקס , 100 איפוקס האם הרשת למדה או דרוש יותר ?

4.3 נבא את התוצאות : הבאות
0.1 , 1.5 . -2.85 , 2.6
4.4 הצג את גרף הנתונים של סידרה a ואת הערכים לניסוי
נתונים ערכים לשאלה :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
a = [ (0, 2107.063993), (1, 1774.894936), (2, 1750.009562), (3, 1481.326385), (4, 1396.077521), (5, 1206.241582), (6, 1226.093311), (7, 1053.402700), (8, 863.965419), (9, 708.908089), (10, 609.188688), (11, 507.225962), (12, 546.267593), (13, 527.910129), (14, 445.411797), (15, 372.281130), (16, 273.318001), (17, 232.070553), (18, 162.902607), (19, 135.674182), (20, 15.810602), (21, 32.953371), (22, -7.529706), (23, -58.090834), (24, 141.533792), (25, 14.234175), (26, 40.625799), (27, -59.885817), (28, 86.203475), (29, 31.991252), (30, 88.132789), (31, 160.413156), (32, -75.607018), (33, 55.269403), (34, -56.520119), (35, -94.585288), (36, 8.086607), (37, -69.322549), (38, 81.048572), (39, 35.469407), (40, 13.428026), (41, 55.077948), (42, -76.633790), (43, 15.156530), (44, -100.269949), (45, 82.102218), (46, -39.703165), (47, -12.988640), (48, -82.648318), (49, -174.654761), (50, -125.680074), (51, 114.949028), (52, 2.739873), (53, 51.751231), (54, 8.351202), (55, -29.036185), (56, -138.659365), (57, 45.099863), (58, 4.898423), (59, -140.341615), (60, 0.263349), (61, -171.835728), (62, -112.363502), (63, 8.291108), (64, 42.170526), (65, -95.476512), (66, 89.265808), (67, 121.477131), (68, 63.346685), (69, 22.926077), (70, -54.681239), (71, -0.003649), (72, -58.438858), (73, 56.850423), (74, -62.948579), (75, 88.712425), (76, -139.472977), (77, -32.893119), (78, 11.448258), (79, -38.987336), (80, 25.303369), (81, -81.415682), (82, -70.917732), (83, 24.433327), (84, 10.738649), (85, -96.212815), (86, -14.961291), (87, -92.290469), (88, -104.987551), (89, 15.086477), (90, -118.130072), (91, -72.749843), (92, -172.149650), (93, -118.275654), (94, -57.536845), (95, 37.355310), (96, -174.049250), (97, 67.392092), (98, -178.348884), (99, 32.446615), (100, 34.355661), (101, -29.564107), (102, -230.259215), (103, -18.166889), (104, -186.462794), (105, -81.414764), (106, -287.880945), (107, -140.773498), (108, -300.851027), (109, -378.673102), (110, -492.544540), (111, -547.831068), (112, -489.163215), (113, -822.436100), (114, -742.851594), (115, -925.768624), (116, -885.407152), (117, -1112.968628), (118, -1234.314197), (119, -1212.259426), (120, -1629.306669), (121, -1508.318170), (122, -1887.185332), (123, -2070.217978), ] |
רשתות ניירונים ANN בינה מלאכותית
הרשת שבה השתמשנו היא רשת מסוג Classification (סיווג), כלומר – רשת שנועדה לבחור בין כמה אפשרויות ולהחליט לאיזו קטגוריה שייך הקלט. במקרה שלנו, הרשת מקבלת מיקום של נקודה במרחב (שני ערכים: X ו־Y) ומסווגת אותה לאחת משלוש קבוצות: אדום, ירוק או כחול.

רשת כזו שייכת למשפחת הרשתות העצביות המלאכותיות (Artificial Neural Networks), ובפרט – לרשתות מסוג Dense Feedforward, שבהן כל נוירון בשכבה אחת מחובר לכל הנוירונים בשכבה הבאה. הרשת מתבססת על למידה מפוקחת (Supervised Learning) – כלומר, היא לומדת מדוגמאות מתויגות מראש.
במה היא שונה מרשת שחוזה ערך כמו טמפרטורה?
רשת שמטרתה לחזות טמפרטורה (או כל ערך מספרי אחר) נקראת Regression Network (רשת רגרסיה). במקום לבחור קטגוריה, היא מנבאת ערך רציף אחד, למשל: 21.4 מעלות.
הבדל עיקרי בין סיווג לרגרסיה:
-
Classification – הפלט הוא אחת מתוך קבוצה סופית של אפשרויות (למשל: אדום, ירוק או כחול) , זהוי מילה שהוקלטה , קטגוריה של המוצר , קטגוריה של התקלה , האם האדם קופץ הולך , נופל מתגלגל .
- הפלט ברשת סיווג הוא לרוב וקטור של הסתברויות לכל קטגוריה, והרשת בוחרת את ההסתברות הגבוהה ביותר.
-
Regression – הפלט הוא מספר ממשי אחד מתוך טווח בלתי מוגבל (למשל: חיזוי מחיר של מוצר, טמפרטורה , גובה , לחץ של תמיסה).
- רגרסיה הפלט הוא פשוט מספר אחד – פלט אחד
קישור ל ANN – (Artificial Neural Network) classifier
https://colab.research.google.com/drive/1MgFjPa8y-megnslGQ7-lhqqxPeKlwype?usp=sharing


