This code is to run a Cellpose ONNX model in c++ code and implemented on the macOS app RectLabel.
cellpose.mp4
Install CUDA, cuDNN, PyTorch, and ONNX Runtime.
Install Cellpose3 and Cellpose4.
git clone https://github.com/MouseLand/cellpose.git cellpose3 --branch v3.1.1
git clone https://github.com/MouseLand/cellpose.git cellpose4
git clone https://github.com/ryouchinsa/cellpose-cpp.git
cp cellpose-cpp/cyto3_onnx.py cellpose3
cp cellpose-cpp/resnet_torch.py cellpose3/cellpose
cp cellpose-cpp/cpsam_onnx.py cellpose4
cd cellpose4
python -m pip install 'cellpose[gui]'
cd ..
wget https://huggingface.co/rectlabel/cellpose/resolve/main/demo_images.zip
unzip demo_images.zip
Export each ONNX model and check how the ONNX model works.
cd cellpose3
# macOS
python cyto3_onnx.py --mode export --image ../demo_images/img02.png --device cpu
python cyto3_onnx.py --mode import --image ../demo_images/img00.png --device cpu
# Ubuntu GPU
python cyto3_onnx.py --mode export --image ../demo_images/img02.png --device cuda:0
python cyto3_onnx.py --mode import --image ../demo_images/img00.png --device cuda:0
cd ..
cd cellpose4
# macOS
python cpsam_onnx.py --mode export --image ../demo_images/img02.png --device cpu
python cpsam_onnx.py --mode import --image ../demo_images/img00.png --device cpu
# Ubuntu GPU
python cpsam_onnx.py --mode export --image ../demo_images/img02.png --device cuda:0
python cpsam_onnx.py --mode import --image ../demo_images/img00.png --device cuda:0
cd ..
cd cellpose-cpp
Build and run.
# macOS
cmake -S . -B build -DONNXRUNTIME_ROOT_DIR=/Users/ryo/Downloads/onnxruntime-osx-universal2-1.20.0
# Ubuntu GPU
cmake -S . -B build -DONNXRUNTIME_ROOT_DIR=/root/onnxruntime-linux-x64-gpu-1.20.0
cmake --build build
# macOS
./build/cyto3_cpp_test -encoder="../cellpose3/cyto3.onnx" -image="../demo_images/img00.png" -device="cpu"
./build/cyto3_cpp_test -encoder="../cellpose4/cpsam.onnx" -image="../demo_images/img00.png" -device="cpu"
# Ubuntu GPU
./build/cyto3_cpp_test -encoder="../cellpose3/cyto3.onnx" -image="../demo_images/img00.png" -device="cuda:0"
./build/cyto3_cpp_test -encoder="../cellpose4/cpsam.onnx" -image="../demo_images/img00.png" -device="cuda:0"
Running time for demo_images/img00.png.
Model | Size | Time on Apple M1 | Time on g4dn.xlarge |
---|---|---|---|
cyto3.onnx (download) |
27.5MB | 10s | 3s |
cpsam.onnx (download) |
1.22GB | 40s | 5s |