https://openreview.net/forum?id=YtgRjBw-7GJ
https://bbbc.broadinstitute.org/BBBC039 (CC0)
https://bbbc.broadinstitute.org/BBBC041 (CC BY-NC-SA 3.0)
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง PyTorch แล้ว
pip install -U celldetection
pip install git+https://github.com/FZJ-INM1-BDA/celldetection.git
model = cd . fetch_model ( model_name , check_hash = True )
ชื่อรุ่น | ข้อมูลการฝึกอบรม | ลิงค์ |
---|---|---|
ginoro_CpnResNeXt101UNet-fbe875f1a3e5ce2c | BBBC039, BBBC038, Omnipose, Cellpose, Sartorius - การแบ่งส่วนเซลล์อินสแตนซ์, Livecell, NeurIPS 22 CellSeg Challenge | - |
import torch , cv2 , celldetection as cd
from skimage . data import coins
from matplotlib import pyplot as plt
# Load pretrained model
device = 'cuda' if torch . cuda . is_available () else 'cpu'
model = cd . fetch_model ( 'ginoro_CpnResNeXt101UNet-fbe875f1a3e5ce2c' , check_hash = True ). to ( device )
model . eval ()
# Load input
img = coins ()
img = cv2 . cvtColor ( img , cv2 . COLOR_GRAY2RGB )
print ( img . dtype , img . shape , ( img . min (), img . max ()))
# Run model
with torch . no_grad ():
x = cd . to_tensor ( img , transpose = True , device = device , dtype = torch . float32 )
x = x / 255 # ensure 0..1 range
x = x [ None ] # add batch dimension: Tensor[3, h, w] -> Tensor[1, 3, h, w]
y = model ( x )
# Show results for each batch item
contours = y [ 'contours' ]
for n in range ( len ( x )):
cd . imshow_row ( x [ n ], x [ n ], figsize = ( 16 , 9 ), titles = ( 'input' , 'contours' ))
cd . plot_contours ( contours [ n ])
plt . show ()
import celldetection as cd
cd.models.CPN
cd.models.CpnU22
cd.models.CPNCore
cd.models.CpnResUNet
cd.models.CpnSlimU22
cd.models.CpnWideU22
cd.models.CpnResNet18FPN
cd.models.CpnResNet34FPN
cd.models.CpnResNet50FPN
cd.models.CpnResNeXt50FPN
cd.models.CpnResNet101FPN
cd.models.CpnResNet152FPN
cd.models.CpnResNet18UNet
cd.models.CpnResNet34UNet
cd.models.CpnResNet50UNet
cd.models.CpnResNeXt101FPN
cd.models.CpnResNeXt152FPN
cd.models.CpnResNeXt50UNet
cd.models.CpnResNet101UNet
cd.models.CpnResNet152UNet
cd.models.CpnResNeXt101UNet
cd.models.CpnResNeXt152UNet
cd.models.CpnWideResNet50FPN
cd.models.CpnWideResNet101FPN
cd.models.CpnMobileNetV3LargeFPN
cd.models.CpnMobileNetV3SmallFPN
ดูเอกสารประกอบของ Timm ด้วย
import timm
timm . list_models ( filter = '*' ) # explore available models
cd.models.CpnTimmMaNet
cd.models.CpnTimmUNet
cd.models.TimmEncoder
cd.models.TimmFPN
cd.models.TimmMaNet
cd.models.TimmUNet
import segmentation_models_pytorch as smp
smp . encoders . get_encoder_names () # explore available models
encoder = cd . models . SmpEncoder ( encoder_name = 'mit_b5' , pretrained = 'imagenet' )
ค้นหารายการตัวเข้ารหัส Smp ในเอกสารประกอบ smp
cd.models.CpnSmpMaNet
cd.models.CpnSmpUNet
cd.models.SmpEncoder
cd.models.SmpFPN
cd.models.SmpMaNet
cd.models.SmpUNet
# U-Nets are available in 2D and 3D
import celldetection as cd
model = cd . models . ResNeXt50UNet ( in_channels = 3 , out_channels = 1 , nd = 3 )
cd.models.U22
cd.models.U17
cd.models.U12
cd.models.UNet
cd.models.WideU22
cd.models.SlimU22
cd.models.ResUNet
cd.models.UNetEncoder
cd.models.ResNet50UNet
cd.models.ResNet18UNet
cd.models.ResNet34UNet
cd.models.ResNet152UNet
cd.models.ResNet101UNet
cd.models.ResNeXt50UNet
cd.models.ResNeXt152UNet
cd.models.ResNeXt101UNet
cd.models.WideResNet50UNet
cd.models.WideResNet101UNet
cd.models.MobileNetV3SmallUNet
cd.models.MobileNetV3LargeUNet
# Many MA-Nets are available in 2D and 3D
import celldetection as cd
encoder = cd . models . ConvNeXtSmall ( in_channels = 3 , nd = 3 )
model = cd . models . MaNet ( encoder , out_channels = 1 , nd = 3 )
cd.models.MaNet
cd.models.SmpMaNet
cd.models.TimmMaNet
cd.models.FPN
cd.models.ResNet18FPN
cd.models.ResNet34FPN
cd.models.ResNet50FPN
cd.models.ResNeXt50FPN
cd.models.ResNet101FPN
cd.models.ResNet152FPN
cd.models.ResNeXt101FPN
cd.models.ResNeXt152FPN
cd.models.WideResNet50FPN
cd.models.WideResNet101FPN
cd.models.MobileNetV3LargeFPN
cd.models.MobileNetV3SmallFPN
# ConvNeXt Networks are available in 2D and 3D
import celldetection as cd
model = cd . models . ConvNeXtSmall ( in_channels = 3 , nd = 3 )
cd.models.ConvNeXt
cd.models.ConvNeXtTiny
cd.models.ConvNeXtSmall
cd.models.ConvNeXtBase
cd.models.ConvNeXtLarge
# Residual Networks are available in 2D and 3D
import celldetection as cd
model = cd . models . ResNet50 ( in_channels = 3 , nd = 3 )
cd.models.ResNet18
cd.models.ResNet34
cd.models.ResNet50
cd.models.ResNet101
cd.models.ResNet152
cd.models.WideResNet50_2
cd.models.ResNeXt50_32x4d
cd.models.WideResNet101_2
cd.models.ResNeXt101_32x8d
cd.models.ResNeXt152_32x8d
cd.models.MobileNetV3Large
cd.models.MobileNetV3Small
พบกับเราบน Docker Hub: https://hub.docker.com/r/ericup/celldetection
คุณสามารถดึง celldetection
เวอร์ชันล่าสุดได้ทาง:
docker pull ericup/celldetection:latest
docker run --rm
-v $PWD/docker/outputs:/outputs/
-v $PWD/docker/inputs/:/inputs/
-v $PWD/docker/models/:/models/
--gpus="device=0"
celldetection:latest /bin/bash -c
"python cpn_inference.py --tile_size=1024 --stride=768 --precision=32-true"
docker run --rm
-v $PWD/docker/outputs:/outputs/
-v $PWD/docker/inputs/:/inputs/
-v $PWD/docker/models/:/models/
celldetection:latest /bin/bash -c
"python cpn_inference.py --tile_size=1024 --stride=768 --precision=32-true --accelerator=cpu"
คุณยังสามารถดึงอิมเมจ Docker ของเราเพื่อใช้กับ Apptainer (เดิมเรียกว่า Singularity) ด้วยคำสั่งนี้:
apptainer pull --dir . --disable-cache docker://ericup/celldetection:latest
พบกับเราได้ที่ Hugging Face และอัปโหลดภาพของคุณเองเพื่อการแบ่งส่วน: https://huggingface.co/spaces/ericup/celldetection
นอกจากนี้ยังมี API (Python & JavaScript) ที่ช่วยให้คุณสามารถใช้ GPU ชุมชน (ปัจจุบันคือ Nvidia A100) จากระยะไกลได้!
from gradio_client import Client
# Define inputs (local filename or URL)
inputs = 'https://raw.githubusercontent.com/scikit-image/scikit-image/main/skimage/data/coins.png'
# Set up client
client = Client ( "ericup/celldetection" )
# Predict
overlay_filename , img_filename , h5_filename , csv_filename = client . predict (
inputs , # str: Local filepath or URL of your input image
# Model name
'ginoro_CpnResNeXt101UNet-fbe875f1a3e5ce2c' ,
# Custom Score Threshold (numeric value between 0 and 1)
False , .9 , # bool: Whether to use custom setting; float: Custom setting
# Custom NMS Threshold
False , .3142 , # bool: Whether to use custom setting; float: Custom setting
# Custom Number of Sample Points
False , 128 , # bool: Whether to use custom setting; int: Custom setting
# Overlapping objects
True , # bool: Whether to allow overlapping objects
# API name (keep as is)
api_name = "/predict"
)
# Example usage: Code below only shows how to use the results
from matplotlib import pyplot as plt
import celldetection as cd
import pandas as pd
# Read results from local temporary files
img = imread ( img_filename )
overlay = imread ( overlay_filename ) # random colors per instance; transparent overlap
properties = pd . read_csv ( csv_filename )
contours , scores , label_image = cd . from_h5 ( h5_filename , 'contours' , 'scores' , 'labels' )
# Optionally display overlay
cd . imshow_row ( img , img , figsize = ( 16 , 9 ))
cd . imshow ( overlay )
plt . show ()
# Optionally display contours with text
cd . imshow_row ( img , img , figsize = ( 16 , 9 ))
cd . plot_contours ( contours , texts = [ 'score: %d%% n area: %d' % s for s in zip (( scores * 100 ). round (), properties . area )])
plt . show ()
import { client } from "@gradio/client" ;
const response_0 = await fetch ( "https://raw.githubusercontent.com/scikit-image/scikit-image/main/skimage/data/coins.png" ) ;
const exampleImage = await response_0 . blob ( ) ;
const app = await client ( "ericup/celldetection" ) ;
const result = await app . predict ( "/predict" , [
exampleImage , // blob: Your input image
// Model name (hosted model or URL)
"ginoro_CpnResNeXt101UNet-fbe875f1a3e5ce2c" ,
// Custom Score Threshold (numeric value between 0 and 1)
false , .9 , // bool: Whether to use custom setting; float: Custom setting
// Custom NMS Threshold
false , .3142 , // bool: Whether to use custom setting; float: Custom setting
// Custom Number of Sample Points
false , 128 , // bool: Whether to use custom setting; int: Custom setting
// Overlapping objects
true , // bool: Whether to allow overlapping objects
// API name (keep as is)
api_name = "/predict"
] ) ;
ค้นหาปลั๊กอิน Napari ของเราได้ที่นี่: https://github.com/FZJ-INM1-BDA/celldetection-napari
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Napari ได้ที่นี่: https://napari.org คุณสามารถติดตั้งได้ผ่าน pip:
pip install git+https://github.com/FZJ-INM1-BDA/celldetection-napari.git
หากคุณเห็นว่างานนี้มีประโยชน์ กรุณาติด ดาว ️ และ อ้างอิง :
@article{UPSCHULTE2022102371,
title = {Contour proposal networks for biomedical instance segmentation},
journal = {Medical Image Analysis},
volume = {77},
pages = {102371},
year = {2022},
issn = {1361-8415},
doi = {https://doi.org/10.1016/j.media.2022.102371},
url = {https://www.sciencedirect.com/science/article/pii/S136184152200024X},
author = {Eric Upschulte and Stefan Harmeling and Katrin Amunts and Timo Dickscheid},
keywords = {Cell detection, Cell segmentation, Object detection, CPN},
}