我们研究植物气孔发育时候会拍很多叶表皮的显微照片,需要对照片里面的细胞和气孔进行计数,在这个过程中我发现数这些要花很多时间,想着有没有可能自动化一下。
需要统计图里细胞和气孔的数量,如果准确度很高不需要人工校验,准确度不够的话可能需要绘制识别的区域人工校验,这种图半年大概产出了两千多张。
图里的红色圈里是细胞,形状不规则,还有可能出现层叠遮挡。
绿色圈是气孔,大小方向可能不一样,特征挺明显。
1.原图是蔡司显微镜的 czi 文件,我写了个脚本转成了 jpg ,原图灰度集中,不同部分明暗差距很大,在这里拉伸了下灰度,再做了一点点其他处理,源码:
import czifile
import numpy as np
from PIL import Image
import os
import cv2 as cv
def convert(path,name):
czi = czifile.imread(path)
czi = np.squeeze(czi, axis=None)
czi = czi / 256
im = Image.fromarray(czi)
if im.mode != "RGB":
im = im.convert("RGB")
im.save("./jpg/"+name + ".jpg")
def findAllFile(base):
for root, ds, fs in os.walk(base):
for f in fs:
fullname = os.path.join(root, f)
yield [fullname,f]
def convertAndEnance(path,name):
czi = czifile.imread(path)
czi = np.squeeze(czi, axis=None)
czi = czi / 256
clahe = cv.createCLAHE(clipLimit=4, tileGridSize=(8, 8))
czi = czi.astype(np.uint8)
out = clahe.apply(czi)
out = np.power(out/255.0, 0.8)
im=Image.fromarray(out*255)
if im.mode != "RGB":
im = im.convert("RGB")
im.save("./jpg/"+name + ".jpg")
def main():
base = './czi/'
j=0
for i in findAllFile(base):
convertAndEnance(i[0],i[1])
j+=1
print(j/2025,j,'/2025')
main()
了解了下现在常用的 RCNN 和 YOLO ,感觉可以比较准确的识别气孔,但是细胞的效果不太确定,因为没有标注所以没训练,不知道实际效果。
问题 1:要训练到比较精准计数误差 5%内大概需要多少标注的数据
问题 2:哪家数据标注的靠谱还便宜,一张图大概有 60 左右气孔,细胞七八十个,大概要多少成本
之前看到有做类似的论文,但是形态差异比较大,感觉迁移训练可能不太行,发了邮件问也没回应。
看到一篇论文 eCognition 可以做这些事,还没深入了解
试过 segmentAnything 和基于这个的 labelAnything ,能分割出一部分,但是效果很不好
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.