图像分割实战-Opencv 图像识别Android实战(识别扑克牌 4.图像识别扫盲)
Swin Transformer实战实例分割:训练自己的数据集

刚好用了swin,做分类和目标检测,也来试试分割的,而且很多场景分割更有效果,比如积水识别,安全带,土坑裂缝等等
案例来自比赛
这回真是小试牛刀了,因为是智慧农业赛题――牛只图像分割竞赛
以牛只实例分割图像数据作为训练样本,参赛选手需基于训练样本构建模型,对提供的测试集中的牛只图像进行实例分割检测。方法不限于实例分割,
目标检测是识别图像中存在的内容和检测其位置,
语义分割是对图像中的每个像素打上类别标签,实例分割其实是目标检测和语义分割的结合,在图像中将目标检测出来(目标检测),然后对每个像素打上标签(语义分割)。 语义分割不区分属于相同类别的不同实例(所有人都标为红色),实例分割区分同类的不同实例(使用不同颜色区分不同的人)。所以题目严格意义是语义分割,但是要标出每只牛。
看下数据就是牛棚里的,标签是多边形 polygon,标的还是一般,数据有点模糊,而且角度是俯视,用coco的cow恐怕差太多,图片比较少训练200张,牛2千多,测试100张;
可以通过标注软件查看和修改标注,比如cvat,不过这个是网页版
这里就先用swin-transformer-object-detection跑个baseline吧
部署swin环境同目标检测,这里用paddlex来处理数据集,所以部署环境
conda create -n paddlex python=3.7
conda activate paddlex
pip install cython
git clone
cd .\cocoapi\PythonAPI
python3 build_ext install
pip install paddlepaddle -i
pip install paddlex -i
or
git clone
cd PaddleX
git checkout develop
python install
环境搭建好了,
现在将数据集格式为
划分数据集,也可以省略测试集
paddlex --split_dataset --format COCO --dataset_dir 200 --val_value 0.2 --test_value 0.1
将图片转移到训练和验证文件夹
处理好图片就开始配置swinT了,
两个地方 改为具体类别数 设为1
主要修改类别为自己的类别数 cat
相应修改configs/ base /datasets/coco_中数据集路径
修改模型权重参数等
修改configs\swin\mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_中的max_epochs、lr
参数文件改为coco_instance的
_base_ = [
]
注意一个类也要逗号,还要进行编译 python install
训练
python tools/ configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_
这里提交后只有0.6多,后面还需要调优参数,增强数据,或者试试swin 分割 ,swin-Unet之类。
Opencv 图像识别Android实战(识别扑克牌 4.图像识别扫盲)

我想来看这篇文章的人大多对机器学习都有一定的了解,我觉得没有必要非常学术话的解读这个意义。人的学习目的不就是为了认识更多的事物么,机器学习也是一样,就是让计算机通过学习类比来认识更多的事物。
在这里我们是让计算机认识图像,要让计算机认识事物,首先得教他,他学会了自然就认识了,所以我们准备了很多样本来告诉计算机什么是方块,什么是梅花等等,当样本足够多的时候,计算机通过类比自然就能区别它所看到的事物了。
机器学习算法有很多种,比如KNN,K-means,决策树,SVM,贝叶斯等,我们通过提取样本和目标的特征数据,再应用这些分类算法达到事物分类的目的,这样就简单的完成了一个机器学习的过程。当然机器学习不光用来分类,还有用来完成更多,更复杂的事情,目前图像识别领域的机器学习,千变万化的应用其实还是用来分类。所以图像分类还是图像识别的最基本,最重要的工作之一。
在任何情况对任何事物分类都需要有分类目标,比如一株植物是什么科,那么分类目标是这个植物,样本自然就是我们已经定义好的各种植物以及植物类别。一个人是谁,我们可以用ta的面部特征来分类,人脸就是一个需要分类的目标。同样图像分类我么首先要找到分类的目标,比如我们需要知道某张图里面是否有苹果,通常情况下我们需要把可能存在苹果的地方扣下来和苹果图片作为对比,通过对比当匹配度达到一定程度时我们就认为被扣下来图片区域就是苹果,这样的处理过程通常来讲叫做图像分割,是图像识别中不可或缺的过程,图像分割的效果直接影响图像识别的最终效果。为了解决这个过程,人们提出了很多算法来解决这个问题,在我看来图像分割任然是一个需要不断改进技术。碰巧在这个开源项目中用到的图像分割很简单,不需要知道太多其中的原理,也可以很好的完成这个任务。
当前图像识别领域有两类主要的图像识别手段;单步法和基于候选区识别。单步法比如yolo算法,他直接把未知图片传入到神经网络,不用查找候选区就可以识别目标物体。基于候选区方法则多一个过程,第一首先找到可能存在某个物体的候选区,第二步把这些候选区和已知的样本比对,如果匹配达到一定的程度就认为识别到某个物体。
基于候选区的算法优缺点如下:
更少的样本,更高效的运行速度,更容易理解的算法,更廉价的设备,但是有些情况无法用单步法解决或者效果非常差,本开源项目就是用的基于候选区方式来解决问题。
单步法优缺点:
更多的样本,单步法更多的使用神经网络,对设备性能要求高,能解决更加复杂的问题。
图像分割最好方法

1.基于阈值的分割方法
阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值作比较,最后将像素根据比较结果分到合适的类别中。因此,该方法最为关键的一步就是按照某个准则函数来求解最佳灰度阈值。
阈值法特别适用于目标和背景占据不同灰度级范围的图。图像若只有目标和背景两大类,那么只需要选取一个阈值进行分割,此方法成为单阈值分割;但是如果图像中有多个目标需要提取,单一阈值的分割就会出现作物,在这种情况下就需要选取多个阈值将每个目标分隔开,这种分割方法相应的成为多阈值分割。
2.基于区域的图像分割方法
基于区域的分割方法是以直接寻找区域为基础的分割技术,基于区域提取方法有两种基本形式:一种是区域生长,从单个像素出发,逐步合并以形成所需要的分割区域;另一种是从全局出发,逐步切割至所需的分割区域。
分水岭算法
分水岭算法是一个非常好理解的算法,它根据分水岭的构成来考虑图像的分割,现实中我们可以想象成有山和湖的景象,那么一定是水绕山山围水的景象。
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注