This shows you the differences between two versions of the page.
iothings:laboratoare:lab9 [2024/07/12 17:08] laura.ruse [Laborator 09. ESP32CAM și detecția obiectelor folosind TensorFlow] |
iothings:laboratoare:lab9 [2024/07/12 17:26] (current) laura.ruse [Exerciții] |
||
---|---|---|---|
Line 10: | Line 10: | ||
Dorim să rulăm un server web pe ESP32-CAM pe care îl vom folosi pentru a obține imaginile. | Dorim să rulăm un server web pe ESP32-CAM pe care îl vom folosi pentru a obține imaginile. | ||
- | * În Arduino IDE 2, mergeți la File > Examples > ESP32 > Camera și deschide exemplul CameraWebServer. | + | * În Arduino IDE 2, mergeți la ''File > Examples > ESP32 > Camera'' și deschideți exemplul CameraWebServer. |
* Decomentați linia ''#define CAMERA_MODEL_AI_THINKER'', pentru a selecta modelul de placă. Comentați linia ''#define CAMERA_MODEL_ESP_EYE''. | * Decomentați linia ''#define CAMERA_MODEL_AI_THINKER'', pentru a selecta modelul de placă. Comentați linia ''#define CAMERA_MODEL_ESP_EYE''. | ||
- | * Completați SSID-ul și parola Wi-Fi-ului. | + | * Completați SSID-ul și parola Wi-Fi-ului. Recomandăm folosirea unui hotspot. |
- | * La Tools > Board selectați AI-Thinker ESP32-CAM. | + | * La ''Tools > Board'' selectați AI-Thinker ESP32-CAM. |
- | * La Tools > Port selectați portul COM la care este conectat ESP32. | + | * La ''Tools > Port'' selectați portul COM la care este conectat ESP32. |
* Apăsați butonul de upload pentru a încărca codul. | * Apăsați butonul de upload pentru a încărca codul. | ||
* Deschideți Serial Monitor la o viteză de transfer de 115200 baud. | * Deschideți Serial Monitor la o viteză de transfer de 115200 baud. | ||
Line 20: | Line 20: | ||
* Adresa IP a ESP32 ar trebui să fie afișată în Serial Monitor. | * Adresa IP a ESP32 ar trebui să fie afișată în Serial Monitor. | ||
* Deschideți un browser și introduceți adresa IP a plăcii ESP32-CAM. | * Deschideți un browser și introduceți adresa IP a plăcii ESP32-CAM. | ||
+ | * Apăsați pe butonul ''Start Stream'' pentru a vizualiza stream-ul video. | ||
* Puteți descărca o fotografie folosind butonul ''Save''. De asemenea se poate accesa URL-ul ''adr_IP/capture'' pentru a obține o imagine instant. | * Puteți descărca o fotografie folosind butonul ''Save''. De asemenea se poate accesa URL-ul ''adr_IP/capture'' pentru a obține o imagine instant. | ||
Line 42: | Line 43: | ||
* Instalați matplotlib: ''pip install matplotlib'' | * Instalați matplotlib: ''pip install matplotlib'' | ||
- | 1. Urmăriți acest [[https://www.tensorflow.org/hub/tutorials/object_detection|tutorial]] pas cu pas pentru a implementa detecția obiectelor dintr-o anumită imagine. Salvați codul într-un fișier Python ''object_detection.py''. | + | 1. Urmăriți acest [[https://www.tensorflow.org/hub/tutorials/object_detection|tutorial]] pas cu pas pentru a implementa detecția obiectelor dintr-o anumită imagine. Fără secțiunea "More images". Salvați codul într-un fișier Python ''object_detection.py''. |
2. Modificați codul din tutorial în modul următor: | 2. Modificați codul din tutorial în modul următor: | ||
Line 58: | Line 59: | ||
2.2. Comentați linia ''pil_image = ImageOps.fit(pil_image, (new_width, new_height), Image.LANCZOS)'' din funcția ''download_and_resize_image'' pentru a nu face redimensionarea imaginii. Scoateți parametri suplimentari atunci când este apelată funcția ''download_and_resize_image'': ''downloaded_image_path = download_and_resize_image(image_url)''. | 2.2. Comentați linia ''pil_image = ImageOps.fit(pil_image, (new_width, new_height), Image.LANCZOS)'' din funcția ''download_and_resize_image'' pentru a nu face redimensionarea imaginii. Scoateți parametri suplimentari atunci când este apelată funcția ''download_and_resize_image'': ''downloaded_image_path = download_and_resize_image(image_url)''. | ||
- | <note>Codul final se găsește [[https://drive.google.com/file/d/1vFyeNVDNLr3WNE4abQhwJk_hKKtZwUPf/view?usp=sharing|aici]].</note> | + | <note important>Găsiți codul modificat [[https://drive.google.com/file/d/1vFyeNVDNLr3WNE4abQhwJk_hKKtZwUPf/view?usp=sharing|aici]].</note> |
3. Rulați codul folosind comanda: ''python3 object_detection.py''. | 3. Rulați codul folosind comanda: ''python3 object_detection.py''. | ||
Line 65: | Line 66: | ||
<code> image_url = "http://192.168.142.118/capture"</code> | <code> image_url = "http://192.168.142.118/capture"</code> | ||
- | 5. Se pot folosi 2 module de detecție: | + | 5. Se pot folosi 2 modele de detecție: |
- | * FasterRCNN+InceptionResNet V2: acuratețe ridicată. Folosiți: <code>module_handle = "https://tfhub.dev/google/faster_rcnn/openimages_v4/inception_resnet_v2/1"</code> | + | * FasterRCNN+InceptionResNet V2: are acuratețe ridicată. Folosiți: <code>module_handle = "https://tfhub.dev/google/faster_rcnn/openimages_v4/inception_resnet_v2/1"</code> |
- | * ssd+mobilenet V2: mic și rapid. Folosiți: <code>module_handle = "https://tfhub.dev/google/openimages_v4/ssd/mobilenet_v2/1"</code> | + | * ssd+mobilenet V2: este mic și rapid. Folosiți: <code>module_handle = "https://tfhub.dev/google/openimages_v4/ssd/mobilenet_v2/1"</code> |
Line 105: | Line 106: | ||
* Deschideți ''ObjectDetection_ESP32cam.ino'' în Arduino IDE 2. | * Deschideți ''ObjectDetection_ESP32cam.ino'' în Arduino IDE 2. | ||
* Completați SSID-ul și parola Wi-Fi-ului în cod. | * Completați SSID-ul și parola Wi-Fi-ului în cod. | ||
- | * La Tools > Board selectați AI-Thinker ESP32-CAM. | + | * La ''Tools > Board'' selectați AI-Thinker ESP32-CAM. |
- | * La Tools > Port selectați portul COM la care este conectat ESP32. | + | * La ''Tools > Port'' selectați portul COM la care este conectat ESP32. |
* Apăsați butonul de upload pentru a încărca codul. | * Apăsați butonul de upload pentru a încărca codul. | ||
* Deschideți Serial Monitor la o viteză de transfer de 115200 baud. | * Deschideți Serial Monitor la o viteză de transfer de 115200 baud. |