From 4238da60bc40f2ccf2288243516a777403eebd2d Mon Sep 17 00:00:00 2001 From: Maddy Underwood <167196745+madeline-underwood@users.noreply.github.com> Date: Thu, 12 Dec 2024 05:00:10 +0000 Subject: [PATCH 1/7] Rewrote target audience statement, put FPC cable as a separate prerequisite, added a LO, checked spelling and grammar. --- .../microcontrollers/yolo-on-himax/_index.md | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/_index.md b/content/learning-paths/microcontrollers/yolo-on-himax/_index.md index 8882ef4e6..25096425d 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/_index.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/_index.md @@ -1,22 +1,22 @@ --- title: Run a Computer Vision Model on a Himax Microcontroller -draft: true -cascade: - draft: true + minutes_to_complete: 90 -who_is_this_for: This is an introduction topic explaining how to run a computer vision application on an embedded device from Himax. The example uses an off-the-shelf Himax WiseEye2 module which is based on Arm Cortex-M55 and Ethos-U55. +who_is_this_for: This is an introductory topic for developers who would like to learn about how to run a computer vision application on an embedded device from Himax. learning_objectives: - - Run a you-only-look-once (YOLO) object detection model on the Himax device. - - Build the Himax Software Development Kit (SDK) and generate the firmware image file. - - Update the firmware on the Himax WiseEye2. + - Run a You-Only-Look-Once (YOLO) object detection model on a Himax WiseEye2 module. + - Build Himax Software Development Kit (SDK) and generate a firmware image file. + - Update firmware on the Himax WiseEye2. + - Connect to and use Grove Vision AI module. prerequisites: - A [Seeed Grove Vision AI Module V2](https://www.seeedstudio.com/Grove-Vision-AI-Module-V2-p-5851.html) development board. - - An [OV5647-62 Camera Module](https://www.seeedstudio.com/OV5647-69-1-FOV-Camera-module-for-Raspberry-Pi-3B-4B-p-5484.html) and included FPC cable. + - An [OV5647-62 Camera Module](https://www.seeedstudio.com/OV5647-69-1-FOV-Camera-module-for-Raspberry-Pi-3B-4B-p-5484.html). + - A FPC cable. - A USB-C cable. - - An x86 Linux machine or a Mac running macOS with Apple Silicon. + - An x86 Linux machine, or a Mac running macOS with Apple Silicon. author_primary: Chaodong Gong, Alex Su, Kieran Hejmadi @@ -33,9 +33,7 @@ operatingsystems: - Linux - macOS -draft: true -cascade: - draft: true + ### FIXED, DO NOT MODIFY From c8cacb100aa0cc1f520e1b0e7fe546c5cdccef53 Mon Sep 17 00:00:00 2001 From: Maddy Underwood <167196745+madeline-underwood@users.noreply.github.com> Date: Thu, 12 Dec 2024 05:28:15 +0000 Subject: [PATCH 2/7] Improved readability, used bullet points, expanded abbreviation for clarity in index file. --- .../microcontrollers/yolo-on-himax/_index.md | 4 ++-- .../yolo-on-himax/build-firmware.md | 14 +++++------ .../yolo-on-himax/flash-and-run.md | 23 ++++++++++++------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/_index.md b/content/learning-paths/microcontrollers/yolo-on-himax/_index.md index 25096425d..40747a28d 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/_index.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/_index.md @@ -7,14 +7,14 @@ who_is_this_for: This is an introductory topic for developers who would like to learning_objectives: - Run a You-Only-Look-Once (YOLO) object detection model on a Himax WiseEye2 module. - - Build Himax Software Development Kit (SDK) and generate a firmware image file. + - Build the Himax Software Development Kit (SDK) and generate a firmware image file. - Update firmware on the Himax WiseEye2. - Connect to and use Grove Vision AI module. prerequisites: - A [Seeed Grove Vision AI Module V2](https://www.seeedstudio.com/Grove-Vision-AI-Module-V2-p-5851.html) development board. - An [OV5647-62 Camera Module](https://www.seeedstudio.com/OV5647-69-1-FOV-Camera-module-for-Raspberry-Pi-3B-4B-p-5484.html). - - A FPC cable. + - A Flexible Printed Circuit (FPC) cable. - A USB-C cable. - An x86 Linux machine, or a Mac running macOS with Apple Silicon. diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md index b1db98e5f..8f9c6e057 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md @@ -10,9 +10,9 @@ This section explains the process of generating a firmware image file. ## Clone the Himax GitHub project -Himax maintains a repository containing a few examples for the Seeed Grove Vision AI V2 board. +Himax maintains a repository containing a few examples that can be used with the Seeed Grove Vision AI V2 board. -It contains third-party software and scripts to build and flash the image with the object detection application. By recursively cloning the Himax examples repo, git will include the necessary sub-repositories that have been configured for the project. +It contains third-party software and scripts to build and flash the image with the object detection application. By recursively cloning the Himax examples repository, git includes the necessary subrepositories that have been configured for the project. Clone the repository: @@ -25,27 +25,27 @@ cd Seeed_Grove_Vision_AI_Module_V2 Use Make to compile the source code for object detection. -This takes up to 10 minutes depending on the number of CPU cores available on your host machine. +This can take up to 10 minutes depending on the number of CPU cores available on your host machine. ```bash cd EPII_CM55M_APP_S make ``` -When the build is complete, you have an `.elf` file at `obj_epii_evb_icv30_bdv10/gnu_epii_evb_WLCSP65/EPII_CM55M_gnu_epii_evb_WLCSP65_s.elf` +When the build is complete, you will have an `.elf` file at `obj_epii_evb_icv30_bdv10/gnu_epii_evb_WLCSP65/EPII_CM55M_gnu_epii_evb_WLCSP65_s.elf` ## Generate the firmware image The examples repository contains scripts to generate the image file. -Copy the `.elf` file to the `input_case1_secboot` directory. +Copy the `.elf` file to the `input_case1_secboot` directory: ```bash cd ../we2_image_gen_local/ cp ../EPII_CM55M_APP_S/obj_epii_evb_icv30_bdv10/gnu_epii_evb_WLCSP65/EPII_CM55M_gnu_epii_evb_WLCSP65_s.elf input_case1_secboot/ ``` -Run the script your OS as shown below. This will create a file named `output.img` in the `output_case1_sec_wlcsp` directory. +Run the script your on OS as shown below. This creates a file named `output.img` in the `output_case1_sec_wlcsp` directory: {{< tabpane code=true >}} @@ -66,4 +66,4 @@ Output image: output_case1_sec_wlcsp/output.img IMAGE GEN DONE ``` -You are ready to flash the image onto the Himax development board. \ No newline at end of file +You are now ready to flash the image onto the Himax development board. \ No newline at end of file diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md index 43892699b..d20bd3f23 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md @@ -10,7 +10,7 @@ Now that you have generated an image file on the local host machine, you are rea ## Install xmodem -`Xmodem` is a basic file transfer protocol which is easily installed using the Himax examples repository. +You can easily install a basic file transfer protocol called `Xmodem` using the Himax repository containing the examples. Run the following command to install the dependency: @@ -23,23 +23,30 @@ pip install -r xmodem/requirements.txt It's time to get the board set up. -Insert the Flexible printed circuit (FPC) into the Grove Vision AI V2 module. Lift the dark grey latch on the connector as per the image below. +Insert the Flexible Printed Circuit (FPC) into the Grove Vision AI V2 module. + +Lift the dark grey latch on the connector as shown in the image below. ![unlatched](./unlatched.jpg) -Slide the FPC connector in with the metal pins facing down and close the dark grey latch to fasten the connector. +* With the metal pins facing down, slide the FPC connector in. +* Close the dark grey latch to fasten the connector. ![latched](./latched.jpg) -Now you can connect the Groove Vision AI V2 Module to your computer via the USB-C cable. +Now you can connect the Groove Vision AI V2 Module to your computer using the USB-C cable. {{% notice Note %}} -The development board may have two USB-C connectors. If you are running into issues connecting the board in the next step, make sure you are using the right one. +The development board might have two USB-C connectors. If you are running into issues connecting the board in the next step, make sure you are using the right USB-C connector. {{% /notice %}} ## Find the COM port -You'll need to provide the communication port (COM) which the board is connected to in order to flash the image. There are commands to list all COMs available on your machine. Once your board is connected through USB, it'll show up in this list. The COM identifier will start with **tty**, which may help you determine which one it is. You can run the command before and after plugging in the board if you are unsure. +To flas the image, you need to provide the communication port (COM) which the board is connected to. + +On your machine, you can find commands that you can use to list all COMs available to use. Once your board is connected through USB, it will appear on this list of available COMs. + +The COM identifier is prefixed with **tty**, so you can use this to help you identify which COM it is. You can also run the command before and after plugging in the board if you are unsure, and look for the change in the list. {{< tabpane code=true >}} @@ -53,14 +60,14 @@ ls /dev/tty.* {{% notice Note %}} -If the port seems unavailable, try changing the permissions temporarily using the `chmod` command. Be sure to reset them afterwards, as this may pose a computer security vulnerability. +If the port appears to be unavailable, try changing the permissions temporarily using the `chmod` command. Be sure to reset the permissions again afterwards, as otherwise this can pose a computer security vulnerability. ```bash chmod 0777 ``` {{% /notice %}} -The full path to the port is needed in the next step, so be sure to save it. +You will require the full path to the port in the next step, so be sure to save it. ## Flash the firmware onto the module From c5c7d3747e20f436ae40f94e0893849519b25d5c Mon Sep 17 00:00:00 2001 From: Maddy Underwood <167196745+madeline-underwood@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:05:51 +0000 Subject: [PATCH 3/7] Added additional text from Odin. --- .../yolo-on-himax/build-firmware.md | 2 +- .../microcontrollers/yolo-on-himax/dev-env.md | 2 +- .../yolo-on-himax/flash-and-run.md | 4 ++-- .../yolo-on-himax/overview.md | 24 +++++++++++++++++++ .../yolo-on-himax/web-toolkit.md | 3 +++ 5 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 content/learning-paths/microcontrollers/yolo-on-himax/overview.md diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md index 8f9c6e057..bae34e8e0 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md @@ -1,6 +1,6 @@ --- title: Build the firmware -weight: 3 +weight: 4 ### FIXED, DO NOT MODIFY layout: learningpathall diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/dev-env.md b/content/learning-paths/microcontrollers/yolo-on-himax/dev-env.md index 73cb55e14..76d82897c 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/dev-env.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/dev-env.md @@ -1,6 +1,6 @@ --- title: Set up the environment -weight: 2 +weight: 3 ### FIXED, DO NOT MODIFY layout: learningpathall diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md index d20bd3f23..1a1444f19 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md @@ -1,6 +1,6 @@ --- title: Flash firmware onto the microcontroller -weight: 4 +weight: 5 ### FIXED, DO NOT MODIFY layout: learningpathall @@ -89,7 +89,7 @@ After the firmware image flashing is completed, the message `Do you want to end ## Run the model -After the reset button is pressed, the board will start inference with the object detection automatically. Observe the output in the terminal to verify that the image is built correctly. If a person is in front of the camera, you should see the `person_score` value go over `100`. +After the reset button is pressed, the board starts inference with the object detection automatically. Observe the output in the terminal to verify that the image is built correctly. If a person is in front of the camera, you should see the `person_score` value exceed `100`. ```output b'SENSORDPLIB_STATUS_XDMA_FRAME_READY 240' diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/overview.md b/content/learning-paths/microcontrollers/yolo-on-himax/overview.md new file mode 100644 index 000000000..41435620a --- /dev/null +++ b/content/learning-paths/microcontrollers/yolo-on-himax/overview.md @@ -0,0 +1,24 @@ +--- +title: Overview +weight: 2 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## What are the benefits of the Himax WiseEye2 Module? + +* The Himax WiseEye2 implements the Arm-based Cortex M55 CPU and Ethos U55 NPU, and is one of the first "off-the-shelf" platforms of its type. + +* The Himax WiseEye2 Module is an ultra-low power device that is energy-saving. + +* It fully integrates with an existing Open Source AI framework (TFLite). + +## What is a You-Only-Look-Once (YOLO) object detection model? + +YOLO is a technology used in computer vision for identifying and locating objects in images and videos. + +It is Open Source, fast, and has good detection accuracy. + +To learn more about YOLO, see [Where to Start](https://docs.ultralytics.com/#where-to-start). + diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/web-toolkit.md b/content/learning-paths/microcontrollers/yolo-on-himax/web-toolkit.md index e03500d02..5bd06f49e 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/web-toolkit.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/web-toolkit.md @@ -101,6 +101,9 @@ The images below are captured images from the models run in the toolkit. ### Objection detection ![object_detection](./object_detection.jpg) +The Frames Per Second (FPS) index represents the number of ML inferences the hardware can complete per second. A higher number indicates better performance. The colored bounding boxes represent the objects identified by YOLO. The name of the object is labelled in the top left-hand corner of the box, and the number in parentheses is the confidence level as a percentage. This example shows that it can identify 9.53 frames per second with a confidence level of 64% for the 'CPU' object. + ### Face detection ![object_detection](./face_detection.jpg) +Similar to the previous example, the bounding boxes identify the areas in the image that contain faces and recognize the positions of different facial features. This image shows that YOLO has identified a face with 99% confidence. It has marked the mouth with a yellow line segment and used different colours to mark the eyebrows, eyes, and nose. Within the bounding box for the eyes, it has further identified the gaze direction vector. From 6ad0503b179b9da431173b1d6b500bb9d8711691 Mon Sep 17 00:00:00 2001 From: Maddy Underwood <167196745+madeline-underwood@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:12:13 +0000 Subject: [PATCH 4/7] Spelling and grammar check. --- .../microcontrollers/yolo-on-himax/build-firmware.md | 2 +- .../microcontrollers/yolo-on-himax/flash-and-run.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md index bae34e8e0..fc151cc6b 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md @@ -45,7 +45,7 @@ cd ../we2_image_gen_local/ cp ../EPII_CM55M_APP_S/obj_epii_evb_icv30_bdv10/gnu_epii_evb_WLCSP65/EPII_CM55M_gnu_epii_evb_WLCSP65_s.elf input_case1_secboot/ ``` -Run the script your on OS as shown below. This creates a file named `output.img` in the `output_case1_sec_wlcsp` directory: +Run the script on your OS as shown below. This creates a file named `output.img` in the `output_case1_sec_wlcsp` directory: {{< tabpane code=true >}} diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md index 1a1444f19..42faf22d7 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md @@ -42,7 +42,7 @@ The development board might have two USB-C connectors. If you are running into i ## Find the COM port -To flas the image, you need to provide the communication port (COM) which the board is connected to. +To flash the image, you need to provide the communication port (COM) which the board is connected to. On your machine, you can find commands that you can use to list all COMs available to use. Once your board is connected through USB, it will appear on this list of available COMs. From 480dbb8e9ce7edda883749004e59aa1f27e6d3c5 Mon Sep 17 00:00:00 2001 From: Maddy Underwood <167196745+madeline-underwood@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:19:52 +0000 Subject: [PATCH 5/7] Remove mention of Apple silicon. --- content/learning-paths/microcontrollers/yolo-on-himax/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/_index.md b/content/learning-paths/microcontrollers/yolo-on-himax/_index.md index 40747a28d..58af3880a 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/_index.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/_index.md @@ -16,7 +16,7 @@ prerequisites: - An [OV5647-62 Camera Module](https://www.seeedstudio.com/OV5647-69-1-FOV-Camera-module-for-Raspberry-Pi-3B-4B-p-5484.html). - A Flexible Printed Circuit (FPC) cable. - A USB-C cable. - - An x86 Linux machine, or a Mac running macOS with Apple Silicon. + - An x86 Linux machine, or a Mac running macOS. author_primary: Chaodong Gong, Alex Su, Kieran Hejmadi From 1622c1b39d507ac5a4890cfab0767a073ef305d8 Mon Sep 17 00:00:00 2001 From: Maddy Underwood <167196745+madeline-underwood@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:22:27 +0000 Subject: [PATCH 6/7] Make language more concise. --- .../microcontrollers/yolo-on-himax/build-firmware.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md index fc151cc6b..6745db9bc 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/build-firmware.md @@ -57,7 +57,7 @@ Run the script on your OS as shown below. This creates a file named `output.img` {{< /tab >}} {{< /tabpane >}} -The script output ends with the following output: +The script output ends with the following: ```output Output image: output_case1_sec_wlcsp/output.img @@ -66,4 +66,4 @@ Output image: output_case1_sec_wlcsp/output.img IMAGE GEN DONE ``` -You are now ready to flash the image onto the Himax development board. \ No newline at end of file +You are now ready to flash the image onto the Himax development board. From deab4debde6dfdbc2fbb8b39057eb2eb7d6b42fe Mon Sep 17 00:00:00 2001 From: Maddy Underwood <167196745+madeline-underwood@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:24:05 +0000 Subject: [PATCH 7/7] Clarified wording --- .../microcontrollers/yolo-on-himax/flash-and-run.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md index 42faf22d7..35eca8b37 100644 --- a/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md +++ b/content/learning-paths/microcontrollers/yolo-on-himax/flash-and-run.md @@ -37,7 +37,7 @@ Lift the dark grey latch on the connector as shown in the image below. Now you can connect the Groove Vision AI V2 Module to your computer using the USB-C cable. {{% notice Note %}} -The development board might have two USB-C connectors. If you are running into issues connecting the board in the next step, make sure you are using the right USB-C connector. +The development board might have two USB-C connectors. If you are running into issues connecting the board in the next step, make sure you are using the correct USB-C connector. {{% /notice %}} ## Find the COM port @@ -104,4 +104,4 @@ b'person_score:112' b'EVT event = 10' ``` -This means the image works correctly on the device, and the end-to-end flow is complete. \ No newline at end of file +This means the image works correctly on the device, and the end-to-end flow is complete.