Code Monkey home page Code Monkey logo

maixpy's Introduction

MaixPy (v4)

Let's Sipeed up, Maximize AI's power!

MaixPy (v4): Easily create AI projects with Python on edge device

GitHub Repo stars Apache 2.0 PyPI PyPI - Downloads GitHub repo size Build MaixCAM Trigger wiki

English | 中文

New MaixPy (v4) and new hardware platform MaixCAM is coming now(2024.4)!
If you have any suggestions, tell us on MaixHub, or Telegram/MaixPy or QQ group: 862340358.

Click the Star in the upper right corner to let us know you like it to encourage us to add more features.

Introduction

With MaixPy you can easily create AI vision project within 10 lines of code:

from maix import camera, display, image, nn

classifier = nn.Classifier(model="/root/models/mobilenetv2.mud")
cam = camera.Camera(classifier.input_width(), classifier.input_height(), classifier.input_format())
dis = display.Display()

while 1:
    img = cam.read()
    res = classifier.classify(img)
    max_idx, max_prob = res[0]
    msg = f"{max_prob:5.2f}: {classifier.labels[max_idx]}"
    img.draw_string(10, 10, msg, image.COLOR_RED)
    dis.show(img)

Result video:

classifier.mp4

Simply use peripheral like serial port:

from maix import uart

devices = uart.list_devices()

serial = uart.UART(devices[0], 115200)
serial.write_str("hello world")
print("received:", serial.read(timeout = 2000))

We also provide a handy MaixVision workstation software to make development easier and faster:

maixvision.mp4

And online AI train platform MaixHub, one click to train AI model and deploy to MaixCAM even you have no AI knowledge and expensive training equipment.

MaixHub

Features

Python programing, MaixVision Workstation, AI vision, video streaming, voice recognize, peripheral usage etc.

Details and videos visit official site: wiki.sipeed.com/maixpy/

Hardware platform MaixCAM

And we provide new powerful hardware platform MaixCAM:

MaixCAM

CPU NPU Memory
- 1GHz RISC-V(Linux)/ARM A53
- 700MHz RISCV-V(RTOS)
- 25~300MHz 8051(LowPower)
1Tops@INT8 NPU, support BF16
support YOLOv5 YOLOv8 etc.
256MB DDR3
Connecting Peripheral MultiMedia Buy
USB2.0/WiFi6/BLE5.4 IIC/PWM/SPI/UART/WDT/ADC - 4M Camera
- 2.3" 552x368 Touchscreen
- H.264/H.265/MJPEG codec
Sipeed Official Store

Chip register level open, more detalils: MaixCAM

  • Big core can choose one of RISC-V and ARM A53.
  • Maix-I K210 series is outdated, MaixPy v4 not support it, use it please visit MaixPy-v1

Who are using MaixPy?

  • AI Algorithm Engineer who want to deploy your AI model to embedded devices.

MaixPy provide easy-to-use API to access NPU, and docs to help you develop your AI model.

  • STEM teacher who want to teach AI and embeded to students.

MaixPy provide easy-to-use API, PC tools, online AI train service ... Let you focus on teaching AI, not the hardware and complicated software usage.

  • Maker who want to make some cool projects but don't want to learn complicated hardware and software.

MaixPy provide Python API, so all you need is learn basic Python syntax, and MaixPy's API is so easy to use, you can make your project even in a few minutes.

  • Engineer who want to make some projects but want a prototype as soon as possible.

MaixPy is easy to build projects, and provide corresponding C++ SDK, so you can directly use MaixPy to deploy or transfer Python code to C++ in a few minutes.

  • Students who want to learn AI, embedded development.

We provide many docs and tutorials, and lot of open source code, to help you find learning route, and grow up step by step. From simple Python programming to Vision, AI, Audio, Linux, RTOS etc.

  • Enterprise who want to develop AI vision products but have no time or engineers to develop complicated embedded system.

Use MaixPy even graphic programming to develop your products with no more employees and time. For example, add a AI QA system to your production line, or add a AI security monitor to your office as your demand.

  • Contestants who want to win the competition.

MaixPy integrate many functions and easy to use, fasten your work to win the competition in limited time. There are already many contestants win the competition with MaixPy.

Performance comparison

K210 and v831 are outdated, they have many limitations in memory, performance, NPU operators missing etc.
No matter you are using them or new comer, it's recommended to upgrade to MaixCAM and MaixPy v4.

Here's the comparison between them:

Feature Maix-I K210 Maix-II v831 MaixCAM
CPU 400MHz RISC-V x2 800MHz ARM7 1GHz RISC-V(Linux)
700MHz RISC-V(RTOS)
25~300MHz 8051(Low Power)
Memory 6MB SRAM 64MB DDR2 256MB DDR3
NPU 0.25Tops@INT8
official says 1T but...
0.25Tops@INT8 1Tops@INT8
Encoder 1080p@30fps 2K@30fps
Screen 2.4" 320x240 1.3" 240x240 2.28" 552x368 / 5" 1280x720 / 7" 1280x800 / 10“ 1280x800
TouchScreen 2.3" 552x368
Camera 30W 200W 500W
WiFi 2.4G 2.4G WiFi6 2.4G/5G
USB USB2.0 USB2.0
Eth 100M(Optional) 100M(Optional)
SD Interface SPI SDIO SDIO
BLE BLE5.4
OS RTOS Tina Linux Linux + RTOS
Language C / C++ / MicroPython C / C++ / Python3 C / C++ / Python3
Software MaixPy MaixPy3 MaixCDK + MaixPy v4 + opencv + numpy + ...
PC software MaixPy IDE MaixPy3 IDE MaixVision Workstation
Docs ⭐️⭐️⭐️⭐️ ⭐️⭐️⭐️ 🌟🌟🌟🌟🌟
Online AI train ⭐️⭐️⭐️ ⭐️⭐️⭐️⭐️ 🌟🌟🌟🌟🌟
Official APPs ⭐️⭐️ ⭐️⭐️⭐️ 🌟🌟🌟🌟🌟
AI classify(224x224) MobileNetv1 50fps
MobileNetv2 ✖
Resnet ✖
MobileNet ✖
Resnet18 20fps
Resnet50 ✖
MobileNetv2 130fps
Resnet18 62fps
Resnet50 28fps
AI detect YOLOv2(224x224) 15fps YOLOv2(224x224) 15fps YOLOv5s(224x224) 100fps
YOLOv5s(320x256) 70fps
YOLOv5s(640x640) 15fps
YOLOv8n(640x640) 23fps
Ease of use ⭐️⭐️⭐️⭐️ ⭐️⭐️⭐️ 🌟🌟🌟🌟🌟

Maix Ecosystem

MaixPy not only a Python SDK, but have a whole ecosystem, including hardware, software, tools, docs, even cloud platform etc. See the picture below:

What difference between MaixPy v1, MaixPy3 and MaixPy v4?

  • MaixPy v1 use MicroPython programming language, only support Sipeed Maix-I K210 series hardware, have limited third-party packages.
  • MaixPy3 is designed for Sipeed Maix-II-Dock v831, not a long-term support version.
  • MaixPy v4 use Python programming language, so there's much package we can use directly. MaixPy v4 support new hardware platforms of Sipeed, it's a long-term support version, the future's hardware platforms will support this version. MaixPy v4 have a MaixPy-v1 compatible API, so you can quickly migrate your MaixPy v1 project to MaixPy v4.

(MaixPy v4 Will not support Maix-I K210 series, if you are using Maix-I K210 series, it's recommended to upgrade hardware platform to use this to get more features and better performance.)

Compile Source Code

If you want to compile MaixPy firmware from source code, refer to Build MaixPy source code page.

License

All files in this repository are under the terms of the Apache License 2.0 Sipeed Ltd. except the third-party libraries or have their own license.

Community

maixpy's People

Contributors

lxowalle avatar mk16kawai avatar neutree avatar sinky-yan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

maixpy's Issues

编译开始就报错

编译一开始就报脚本语法错误:

python setup.py bdist_wheel maixcam

File "setup.py", line 75
cmd += f" --toolchain-id {platform_toolchain_id[board]}" if board in platform_toolchain_id else ""
^
SyntaxError: invalid syntax

MaixCAM最新镜像中的maix.sys模块指向的是python自带的sys模块

如题,测试如下:

image

应该是__init__.py中在添加模块时导入sys导致的冲突

考虑到python自带的sys使用频率极高,且MaixPy的example基本使用的是from maix import xxx的导入方式,更加剧了冲突的发生,个人建议是这个模块或许应该改名以规避一些潜在问题

最新code编译到最后link报错

最新code,编译到最后报错link的错误

home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_try_deinit(bool)' /home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_set_again(int, unsigned int)'
/home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_get_luma(int, unsigned int*)' /home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_get_again(int, unsigned int*)'
/home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_get_vi_vflip(int, bool*)' /home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_get_saturation(int, unsigned int*)'
/home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_get_constrast(int, unsigned int*)' /home/dragon/Desktop/dragon/MaixCDK/dl/extracted/toolchains/maixcam/host-tools/gcc/riscv64-linux-musl-x86_64/bin/../lib/gcc/riscv64-unknown-linux-musl/10.2.0/../../../../riscv64-unknown-linux-musl/bin/ld: maix/libmaix.so: undefined reference to mmf_get_vi_hmirror(int, bool*)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/MaixPy.dir/build.make:115: MaixPy] Error 1
make[1]: *** [CMakeFiles/Makefile2:729: CMakeFiles/MaixPy.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

program exit failed. exit code: 1. while running custom model yolov5s after run about a minute

-- [I] one byte time: 95
-- [I] one byte time: 95
-- [I] one byte time: 95
-- [I] one byte time: 95
-- [I] one byte time: 95
-- [I] one byte time: 95
-- [I] one byte time: 95
-- [I] one byte time: 95

Module: [MIPI_RX], Build Time[#2 PREEMPT Mon Jun 3 14:54:37 HKT 2024]

------------Combo DEV ATTR--------------
Devno WorkMode DataType WDRMode LinkId PN Swap SyncMode DataEndian SyncCodeEndian
0 MIPI RAW10 NONE 4, 3, 2,-1,-1 0, 0, 0, 0, 0 N/A N/A N/A

------------MIPI info-------------------
Devno EccErr CrcErr HdrErr WcErr fifofull decode
0 1 1 0 0 0 raw10
Physical: D0 D1 D2 D3 D4 D5
0 0 0 0 0 0
Digital: D0 D1 D2 D3 CK_HS CK_ULPS CK_STOP CK_ERR Deskew
hs_idle hs_idle hs_idle hs_idle 1 0 0 0 idle
Traceback (most recent call last):
File "/tmp/maixpy_run/main.py", line 102, in
objs = detector.detect(img, conf_th = 0.5, iou_th = 0.45)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: detect(): incompatible function arguments. The following argument types are supported:
1. (self: maix._maix.nn.YOLOv5, img: maix._maix.image.Image, conf_th: float = 0.5, iou_th: float = 0.45, fit: maix._maix.image.Fit = <Fit.FIT_CONTAIN: 1>) -> List[maix::nn::Object]

Invoked with: <maix._maix.nn.YOLOv5 object at 0x3fd8280070>, None; kwargs: conf_th=0.5, iou_th=0.45
maix multi-media driver destroyed.
ISP Vipipe(0) Free pa(0x8dff7000) va(0x0x3fd503d000)
[VI BE_Dbg_Info]
VIPreBEDoneSts :0x0 VIPreBEDmaIdleStatus :0x7
[VI Post_Dbg_Info]
VIIspTopStatus :0x3ff
[VI DMA_Dbg_Info]
VIWdma0ErrStatus :0x3000000 VIWdma0IdleStatus :0xffffffff
VIWdma1ErrStatus :0x3000000 VIWdma1IdleStatus :0xffffffff
VIRdmaErrStatus :0x3000000 VIRdmaIdleStatus :0xffffffff
[VI ISP_PIPE_A FE_Dbg_Info]
VIPreFERawDbgSts :0x3ff VIPreFEDbgInfo :0x3f
[VI ISP_PIPE_A]
VIOutImgWidth :2560
VIOutImgHeight :1440
VIInImgWidth :2560
VIInImgHeight :1440
VIDevFPS : 13
VIFPS : 0
VISofCh0Cnt :1364
VIPreFECh0Cnt :1335
VIPreBECh0Cnt :1335
VIPostCnt :1335
VIDropCnt : 0
VIDumpCnt : 0
[VI ISP_PIPE_A Csi_Dbg_Info]
VICsiIntStatus0 :0x3
VICsiIntStatus1 :0x0
VICsiCh0Dbg :0x0
VICsiCh1Dbg :0x0
VICsiOverFlowCnt : 0
VICsiCh0WidthGTCnt : 0
VICsiCh0WidthLSCnt : 0
VICsiCh0HeightGTCnt : 0
VICsiCh0HeightLSCnt : 22

program exit failed. exit code: 1.

Support Request For MAiX-II-DOCK

Hi
I'm using Ubuntu 22.04 and I try to install MaixPy3 for using Maix-ii-dock
according to the installation manual in readme file after running this command I have an error:
command:
python3 -m pip install pybind11 maixpy3

error:


Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pybind11 in /home/milad/.local/lib/python3.10/site-packages (2.12.0)
Collecting maixpy3
  Using cached maixpy3-0.5.3.tar.gz (74.5 MB)
  Preparing metadata (setup.py) ... done
Collecting evdev
  Using cached evdev-1.7.0.tar.gz (30 kB)
  Installing build dependencies ... error
  error: subprocess-exited-with-error
  
  × pip subprocess to install build dependencies did not run successfully.
  │ exit code: 1
  ╰─> [8 lines of output]
      Collecting setuptools>=61.0
        WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl
        WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl
        WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl
        WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl
        WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl
      ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl (Caused by ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)"))
      
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.


first what should I do?
and second
I know the MaixPy3 is: This repository is DEPRECATED !
for the board Maix-ii-dock can I use MaixPy (MaixPy4) ?

question

原本程序正常运行,但是我修改了颜色阈值后点错了,直接将文件烧到闪存里了,然后k210就不发数据了
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.