Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ONNX model parser #21

Open
wants to merge 30 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
fd08fba
Update README.md (add ONNX instuction
AlKurpiakov Dec 11, 2024
0e1f207
Update README.md
AlKurpiakov Dec 11, 2024
37ff96b
Update README.md
AlKurpiakov Dec 11, 2024
806a3c3
Update README.md
AlKurpiakov Dec 11, 2024
53bf405
Update README.md
AlKurpiakov Dec 11, 2024
cbc9cdf
Update README.md
AlKurpiakov Dec 11, 2024
4b160ba
Update README.md
AlKurpiakov Dec 11, 2024
96ce9fc
Update README.md
AlKurpiakov Dec 11, 2024
a9686c2
Merge branch 'embedded-dev-research:main' into ONNX-Model-Parser
AlKurpiakov Feb 20, 2025
520427b
Create GetModel.sh
AlKurpiakov Feb 20, 2025
732ee43
Add files via upload
AlKurpiakov Feb 20, 2025
e26e9a3
Update main.cpp
AlKurpiakov Feb 20, 2025
38b07cb
Update main.cpp
AlKurpiakov Feb 20, 2025
aa881e2
Update main.cpp
AlKurpiakov Feb 20, 2025
85dd29d
Update main.cpp
AlKurpiakov Feb 20, 2025
ac2c881
Update main.cpp
AlKurpiakov Feb 20, 2025
36d4602
Update main.cpp
AlKurpiakov Feb 25, 2025
f5dc582
Merge branch 'embedded-dev-research:main' into ONNX-Model-Parser
AlKurpiakov Mar 4, 2025
4f91c0c
update frontend directiry
AlKurpiakov Mar 4, 2025
1f33397
Update main.cpp
AlKurpiakov Mar 4, 2025
2ade40b
Update main.cpp
AlKurpiakov Mar 4, 2025
6986dde
Update main.cpp
AlKurpiakov Mar 4, 2025
743eb7a
update frontend directiry
AlKurpiakov Mar 4, 2025
42a0455
Merge branch 'embedded-dev-research:main' into ONNX-Model-Parser
AlKurpiakov Mar 4, 2025
b62749d
update frontend directiry
AlKurpiakov Mar 4, 2025
39215c4
include requirements.txt in main.yml
AlKurpiakov Mar 10, 2025
8cbff3d
update requirements.txt
AlKurpiakov Mar 10, 2025
57b5052
update requirements.txt and main.yml
AlKurpiakov Mar 10, 2025
589371c
update main.yml
AlKurpiakov Mar 18, 2025
d26736e
change CMakeLists.txt (add source file properties)
AlKurpiakov Apr 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get install -y cmake ninja-build ccache scons
sudo apt-get install python3-dev libprotobuf-dev protobuf-compiler
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
- name: ccache
uses: hendrikmuhs/[email protected]
with:
Expand All @@ -38,6 +41,9 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get install -y cmake ninja-build ccache scons
sudo apt-get install python3-dev libprotobuf-dev protobuf-compiler
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
- name: ccache
uses: hendrikmuhs/[email protected]
with:
Expand All @@ -59,7 +65,20 @@ jobs:
submodules: recursive
- name: Install dependencies
run: |
brew install ninja scons
brew install ninja scons











python -m pip install --upgrade pip
python -m pip install -r requirements.txt
- name: ccache
uses: hendrikmuhs/[email protected]
with:
Expand All @@ -82,6 +101,9 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get install -y cmake ninja-build ccache gcovr lcov scons
sudo apt-get install python3-dev libprotobuf-dev protobuf-compiler
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
- uses: actions/checkout@v4
with:
submodules: true
Expand Down
1 change: 1 addition & 0 deletions app/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
add_subdirectory(frontend)
add_subdirectory(example)
49 changes: 49 additions & 0 deletions app/frontend/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
cmake_minimum_required(VERSION 3.10)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, add add_subdirectory(frontend) in app/CMakeLists.txt

project(ModelParser)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Protobuf REQUIRED)

set(ONNX_GENERATED_DIR "${CMAKE_SOURCE_DIR}/generated")

set(ONNX_PROTO_SRCS
"${ONNX_GENERATED_DIR}/onnx.pb.cc"
)

set(ONNX_GENERATED_HEADER
"${ONNX_GENERATED_DIR}/onnx.pb.h"
)

set(SRC_FILES
main.cpp
${ONNX_PROTO_SRCS}
)

set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/generated/onnx.pb.h PROPERTIES GENERATED TRUE)
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/generated/onnx.pb.cc PROPERTIES GENERATED TRUE)
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/generated/yolo11x.onnx PROPERTIES GENERATED TRUE)

file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generated)

set(YOLO_SRC "${CMAKE_SOURCE_DIR}/generated/yolo11x.onnx")
set(YOLO_DST "${CMAKE_CURRENT_BINARY_DIR}/generated/yolo11x.onnx")

if(EXISTS "${YOLO_SRC}")
configure_file(${YOLO_SRC} ${YOLO_DST} COPYONLY)
else()
file(WRITE "${YOLO_DST}" "")
endif()

add_executable(ModelParser ${SRC_FILES})

target_include_directories(ModelParser PRIVATE
${ONNX_GENERATED_DIR}
${Protobuf_INCLUDE_DIRS}
)

target_link_libraries(ModelParser
${Protobuf_LIBRARIES}
${ONNX_GENERATED_HEADER}
)
7 changes: 7 additions & 0 deletions app/frontend/GetModel.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

mkdir generated
protoc --proto_path=../../3rdparty/onnx/onnx --cpp_out=./generated onnx.proto
yolo export model=yolo11x.pt format=onnx save_dir=./generated


19 changes: 19 additions & 0 deletions app/frontend/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## __How to run yolov11x model parser__

1. Build the project.

2. Get a network model using Ultralytics CLI

- Give "executable mode" to the script GetModel.sh
```
chmod +x GetModel.sh
```
- Run script
```
bash GetModel.sh
```

3. Run the project
```
./ModelParser
```
35 changes: 35 additions & 0 deletions app/frontend/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include <fstream>
#include <iostream>
#include <string>
#include <vector>

#include "onnx.pb.h"

int main() {
std::ifstream model_file("generated/yolo11x.onnx", std::ios::binary);

if (!model_file.is_open()) {
std::cerr << "Failed to open model" << std::endl;
return 1;
}

onnx::ModelProto model;
if (!model.ParseFromIstream(&model_file)) {
std::cerr << "Model parsing error" << std::endl;
return 1;
}
model_file.close();

std::vector<std::string> layer;

for (int i = 0; i < model.graph().node_size(); ++i) {
const onnx::NodeProto& node = model.graph().node(i);
layer.emplace_back(node.op_type());
}

for (auto it : layer) {
std::cout << it << std::endl;
}

return 0;
}
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ultralytics>=8.3.32