{"id":13702830,"url":"https://github.com/freedomtan/edgetpu-native","last_synced_at":"2025-05-05T06:32:35.196Z","repository":{"id":91994095,"uuid":"181128223","full_name":"freedomtan/edgetpu-native","owner":"freedomtan","description":"edgetpu-native from https://coral.googlesource.com/edgetpu-native","archived":false,"fork":false,"pushed_at":"2019-04-15T03:39:14.000Z","size":4375,"stargazers_count":8,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"label_image","last_synced_at":"2025-04-18T19:21:40.032Z","etag":null,"topics":["edgetpu","label-image","tflite"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freedomtan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-04-13T06:02:30.000Z","updated_at":"2020-01-08T15:33:24.000Z","dependencies_parsed_at":"2024-01-29T20:37:46.453Z","dependency_job_id":null,"html_url":"https://github.com/freedomtan/edgetpu-native","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomtan%2Fedgetpu-native","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomtan%2Fedgetpu-native/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomtan%2Fedgetpu-native/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomtan%2Fedgetpu-native/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freedomtan","download_url":"https://codeload.github.com/freedomtan/edgetpu-native/tar.gz/refs/heads/label_image","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252451979,"owners_count":21750018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["edgetpu","label-image","tflite"],"created_at":"2024-08-02T21:00:43.827Z","updated_at":"2025-05-05T06:32:30.557Z","avatar_url":"https://github.com/freedomtan.png","language":"C++","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# edgetpu-native\nedgetpu-native from https://coral.googlesource.com/edgetpu-native\n\nSee [here](https://github.com/freedomtan/edge_tpu_python_scripts) for scripts using [Python API](https://coral.withgoogle.com/docs/edgetpu/api-intro/)\n\nAdded modified `label_image for tflite` and related updates so that we can build it on Coral Dev Board.\n```\nbazel build edgetpu/cpp/examples/label_image:label_image\n```\nThen we can get\n```\nbazel-bin/edgetpu/cpp/examples/label_image/label_image\n```\n\nWith that, we can use it to run either original quantized TFLite models on CPUs or Edge TPU's canned models on Edge TPUs. E.g., with\n```\nbazel-bin/edgetpu/cpp/examples/label_image/label_image \\\n-m  ~/work/edge_tpu_data/mobilenet_v1_1.0_224_quant_edgetpu.tflite \\\n-i ~/work/data/grace_hopper.bmp \\\n-l ~/work/data/labels.txt \\\n-c 50\n```\nI got\n```\naverage time: 2.63822 ms \n0.796078: 653 653:military uniform\n0.0901961: 907 907:Windsor tie\n0.0156863: 458 458:bow tie, bow-tie, bowtie\n0.0117647: 466 466:bulletproof vest\n0.00392157: 922 922:book jacket, dust cover, dust jacket, dust wrapper\n```\nWith\n```\nbazel-bin/edgetpu/cpp/examples/label_image/label_image \\\n-m  ~/work/edge_tpu_data/mobilenet_v1_1.0_224_quant.tflite \\\n-i ~/work/data/grace_hopper.bmp \\\n-l ~/work/data/labels.txt \\\n-c 50\n```\nI got\n```\naverage time: 392.017 ms \n0.364706: 907 907:Windsor tie\n0.364706: 653 653:military uniform\n0.0431373: 668 668:mortarboard\n0.0352941: 458 458:bow tie, bow-tie, bowtie\n0.027451: 543 543:drumstick\n```\nWith `-v`, we can see many interesing information\n\n```\nNode   0 Operator Custom Name edgetpu-custom-op\n  Inputs: 31\n  Outputs: 30\nI0413 08:35:26.199975    4793 request.cc:24] Adding input \"input\" with 150528 bytes.\nI0413 08:35:26.200373    4793 request.cc:35] Adding output \"MobilenetV1/Predictions/Reshape_1\" with 1001 bytes.\nI0413 08:35:26.201448    4793 kernel_mmu_mapper.cc:124] MmuMapper#Map() : 0000ffff8fdb3000 -\u003e 8000000000000000 (1079 pages).\nI0413 08:35:26.201536    4793 mmio_address_space.cc:47] MapMemory() page-aligned : device_address = 0x8000000000000000\nI0413 08:35:26.201568    4793 driver.cc:130] Mapped params : 0xffff8fdb3000 -\u003e 0x8000000000000000, 4415744 bytes.\nI0413 08:35:26.201593    4793 driver.cc:130] Mapped params : (nil) -\u003e 0x0000000000000000, 0 bytes.\nI0413 08:35:26.201625    4793 single_tpu_request.cc:59] [0] Request constructed.\nI0413 08:35:26.201671    4793 instruction_buffers.cc:32] InstructionBuffers created.\nI0413 08:35:26.201694    4793 package_registry.cc:535] Created new instruction buffers.\nI0413 08:35:26.201718    4793 device_buffer_mapper.cc:100] Mapped scratch : (nil) -\u003e 0x0000000000000000, 0 bytes.\nI0413 08:35:26.201745    4793 single_tpu_request.cc:324] MapDataBuffers() done.\nI0413 08:35:26.201768    4793 executable_util.cc:172] Linking Parameter: 0x8000000000000000\nI0413 08:35:26.201808    4793 kernel_mmu_mapper.cc:124] MmuMapper#Map() : 0000aaaae2778000 -\u003e 8000000000800000 (2 pages).\nI0413 08:35:26.201833    4793 mmio_address_space.cc:47] MapMemory() page-aligned : device_address = 0x8000000000800000\nI0413 08:35:26.201860    4793 device_buffer_mapper.cc:118] Mapped instructions[0] : 0xaaaae2778000 -\u003e 0x8000000000800000, 6832 bytes.\nI0413 08:35:26.201884    4793 single_tpu_request.cc:340] MapInstructionBuffers() done.\nI0413 08:35:26.201904    4793 single_tpu_request.cc:434] [0] SetState old=0, new=1.\nI0413 08:35:26.201928    4793 single_tpu_request.cc:349] [0] NotifyRequestSubmitted()\nI0413 08:35:26.201950    4793 single_tpu_request.cc:434] [0] SetState old=1, new=2.\nI0413 08:35:26.201972    4793 single_queue_dma_scheduler.cc:69] Request[0]: Submitted\nI0413 08:35:26.202004    4793 single_tpu_request.cc:357] [0] NotifyRequestActive()\nI0413 08:35:26.202027    4793 single_tpu_request.cc:434] [0] SetState old=2, new=3.\nI0413 08:35:26.202054    4793 single_queue_dma_scheduler.cc:119] Request[0]: Scheduling DMA[0]\nI0413 08:35:26.202084    4793 kernel_registers.cc:173] Write: offset = 0x00000000000485a8, value = 0x0000000000000001\nI0413 08:35:26.202119    4793 single_tpu_request.cc:59] [1] Request constructed.\nI0413 08:35:26.202146    4793 single_tpu_request.cc:89] Adding input \"input\" with 150528 bytes.\nI0413 08:35:26.202172    4793 single_tpu_request.cc:157] Adding output \"MobilenetV1/Predictions/Reshape_1\" with 1001 bytes.\nI0413 08:35:26.202252    4793 instruction_buffers.cc:32] InstructionBuffers created.\nI0413 08:35:26.202273    4793 package_registry.cc:535] Created new instruction buffers.\nI0413 08:35:26.202292    4793 device_buffer_mapper.cc:100] Mapped scratch : (nil) -\u003e 0x0000000000000000, 0 bytes.\nI0413 08:35:26.202347    4793 kernel_mmu_mapper.cc:124] MmuMapper#Map() : 0000aaaae2750000 -\u003e 8000000000840000 (37 pages).\nI0413 08:35:26.202373    4793 mmio_address_space.cc:47] MapMemory() page-aligned : device_address = 0x8000000000840000\nI0413 08:35:26.202396    4793 device_buffer_mapper.cc:59] Mapped input \"input\" : 0xaaaae2750200 -\u003e 0x8000000000840200, 150528 bytes.\nI0413 08:35:26.202426    4793 kernel_mmu_mapper.cc:124] MmuMapper#Map() : 0000aaaae277e000 -\u003e 8000000000802000 (1 pages).\nI0413 08:35:26.202450    4793 mmio_address_space.cc:47] MapMemory() page-aligned : device_address = 0x8000000000802000\nI0413 08:35:26.202474    4793 device_buffer_mapper.cc:81] Mapped output \"MobilenetV1/Predictions/Reshape_1\" : 0xaaaae277e000 -\u003e 0x8000000000802000, 1008 bytes.\nI0413 08:35:26.202499    4793 single_tpu_request.cc:324] MapDataBuffers() done.\nI0413 08:35:26.202522    4793 executable_util.cc:78] Linking input[0]: 0x8000000000840200\nI0413 08:35:26.202548    4793 executable_util.cc:78] Linking MobilenetV1/Predictions/Reshape_1[0]: 0x8000000000802000\nI0413 08:35:26.202590    4793 kernel_mmu_mapper.cc:124] MmuMapper#Map() : 0000aaaae2782000 -\u003e 8000000000820000 (19 pages).\nI0413 08:35:26.202615    4793 mmio_address_space.cc:47] MapMemory() page-aligned : device_address = 0x8000000000820000\nI0413 08:35:26.202638    4793 device_buffer_mapper.cc:118] Mapped instructions[0] : 0xaaaae2782000 -\u003e 0x8000000000820000, 77776 bytes.\nI0413 08:35:26.202663    4793 single_tpu_request.cc:340] MapInstructionBuffers() done.\nI0413 08:35:26.202683    4793 single_tpu_request.cc:434] [1] SetState old=0, new=1.\nI0413 08:35:26.202705    4793 single_tpu_request.cc:349] [1] NotifyRequestSubmitted()\nI0413 08:35:26.202649    4794 kernel_event_handler.cc:70] event_fd=7. Monitor thread got num_events=1.\nI0413 08:35:26.202787    4793 single_tpu_request.cc:434] [1] SetState old=1, new=2.\nI0413 08:35:26.202874    4794 kernel_registers.cc:173] Write: offset = 0x00000000000485c8, value = 0x0000000000000000\nI0413 08:35:26.202877    4793 single_queue_dma_scheduler.cc:69] Request[1]: Submitted\nI0413 08:35:26.202961    4793 single_tpu_request.cc:357] [1] NotifyRequestActive()\nI0413 08:35:26.203019    4793 single_tpu_request.cc:434] [1] SetState old=2, new=3.\nI0413 08:35:26.203087    4793 single_queue_dma_scheduler.cc:119] Request[1]: Scheduling DMA[0]\nI0413 08:35:26.203159    4793 kernel_registers.cc:173] Write: offset = 0x00000000000485a8, value = 0x0000000000000002\nI0413 08:35:26.203161    4794 single_queue_dma_scheduler.cc:141] Completing DMA[0]\nI0413 08:35:26.203386    4794 host_queue.h:387] Completed 1 elements.\nI0413 08:35:26.213043    4795 kernel_event_handler.cc:70] event_fd=11. Monitor thread got num_events=1.\nI0413 08:35:26.213157    4795 kernel_registers.cc:194] Read: offset = 0x00000000000486d0, value: = 0x0000000000000001\nI0413 08:35:26.213198    4795 kernel_registers.cc:173] Write: offset = 0x00000000000486a8, value = 0x000000000000000e\nI0413 08:35:26.213228    4795 single_tpu_request.cc:366] [0] NotifyCompletion()\nI0413 08:35:26.213257    4795 kernel_mmu_mapper.cc:150] MmuMaper#Unmap() : 0000aaaae2778000 -\u003e 8000000000800000 (2 pages).\nI0413 08:35:26.213286    4795 mmio_address_space.cc:74] UnmapMemory() page-aligned : device_address = 0x8000000000800000, num_pages = 2\nI0413 08:35:26.213313    4795 package_registry.cc:546] Returned instruction buffers back to executable reference\nI0413 08:35:26.213335    4795 single_tpu_request.cc:434] [0] SetState old=3, new=4.\nI0413 08:35:26.213358    4795 single_queue_dma_scheduler.cc:221] Request[0]: Completed\nI0413 08:35:26.213380    4795 single_tpu_request.cc:73] [0] Request destroyed.\nI0413 08:35:26.213160    4794 kernel_event_handler.cc:70] event_fd=7. Monitor thread got num_events=1.\nI0413 08:35:26.213594    4794 kernel_registers.cc:173] Write: offset = 0x00000000000485c8, value = 0x0000000000000000\nI0413 08:35:26.213615    4794 single_queue_dma_scheduler.cc:141] Completing DMA[0]\nI0413 08:35:26.213635    4794 host_queue.h:387] Completed 1 elements.\nI0413 08:35:26.215071    4795 kernel_event_handler.cc:70] event_fd=11. Monitor thread got num_events=1.\nI0413 08:35:26.215150    4795 kernel_registers.cc:194] Read: offset = 0x00000000000486d0, value: = 0x0000000000000002\nI0413 08:35:26.215225    4795 kernel_registers.cc:173] Write: offset = 0x00000000000486a8, value = 0x000000000000000e\nI0413 08:35:26.215301    4795 single_tpu_request.cc:366] [1] NotifyCompletion()\nI0413 08:35:26.215384    4795 kernel_mmu_mapper.cc:150] MmuMaper#Unmap() : 0000aaaae2782000 -\u003e 8000000000820000 (19 pages).\nI0413 08:35:26.215459    4795 mmio_address_space.cc:74] UnmapMemory() page-aligned : device_address = 0x8000000000820000, num_pages = 19\nI0413 08:35:26.215557    4795 kernel_mmu_mapper.cc:150] MmuMaper#Unmap() : 0000aaaae2750000 -\u003e 8000000000840000 (37 pages).\nI0413 08:35:26.215631    4795 mmio_address_space.cc:74] UnmapMemory() page-aligned : device_address = 0x8000000000840000, num_pages = 37\nI0413 08:35:26.215708    4795 kernel_mmu_mapper.cc:150] MmuMaper#Unmap() : 0000aaaae277e000 -\u003e 8000000000802000 (1 pages).\nI0413 08:35:26.215781    4795 mmio_address_space.cc:74] UnmapMemory() page-aligned : device_address = 0x8000000000802000, num_pages = 1\nI0413 08:35:26.215860    4795 package_registry.cc:546] Returned instruction buffers back to executable reference\nI0413 08:35:26.215993    4795 single_tpu_request.cc:434] [1] SetState old=3, new=4.\nI0413 08:35:26.216066    4795 single_queue_dma_scheduler.cc:221] Request[1]: Completed\nI0413 08:35:26.216137    4795 single_tpu_request.cc:73] [1] Request destroyed.\ninvoked \naverage time: 16.521 ms \n0.796078: 653 653:military uniform\n0.0901961: 907 907:Windsor tie\n0.0156863: 458 458:bow tie, bow-tie, bowtie\n0.0117647: 466 466:bulletproof vest\n0.00392157: 922 922:book jacket, dust cover, dust jacket, dust wrapper\nI0413 08:35:26.218554    4793 kernel_mmu_mapper.cc:150] MmuMaper#Unmap() : 0000ffff8fdb3000 -\u003e 8000000000000000 (1079 pages).\nI0413 08:35:26.218633    4793 mmio_address_space.cc:74] UnmapMemory() page-aligned : device_address = 0x8000000000000000, num_pages = 1079\nI0413 08:35:26.218673    4793 instruction_buffers.cc:37] InstructionBuffers destroyed.\nI0413 08:35:26.218690    4793 instruction_buffers.cc:37] InstructionBuffers destroyed.\n```\n\nSee [here](https://github.com/freedomtan/edge_tpu_python_scripts) for scripts using [Python API](https://coral.withgoogle.com/docs/edgetpu/api-intro/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreedomtan%2Fedgetpu-native","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreedomtan%2Fedgetpu-native","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreedomtan%2Fedgetpu-native/lists"}