Halcon 学习笔记九:mlp训练学习实战颜色识别

简介: Halcon 学习笔记九:mlp训练学习实战颜色识别

Halcon 学习笔记九:mlp训练学习实战颜色识别

* This example demonstrates a completeness check of colored game
* pieces using MLP classification. The training and application
* of the classifier is first shown on colored images and then on
* gray images.
* 
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 557, 416, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
* 
* Initialization
ImageRootName := 'color/color_pieces_0'
Regions := ['yellow','pink','blue','background']
Highlight := ['goldenrod','magenta','cyan']
gen_empty_obj (Classes)
* 
* Train and apply the MLP classifier
for Mode := 0 to 1 by 1
    dev_set_color ('black')
    read_image (Image, ImageRootName + '0')
    * 
    * Simulate gray image
    if (Mode == 1)
        rgb1_to_gray (Image, GrayImage)
        compose3 (GrayImage, GrayImage, GrayImage, Image)
        dev_display (Image)
        disp_message (WindowHandle, 'Train and apply the classes again on gray images', 'window', 12, 12, 'black', 'false')
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
    * 
    * Colored images
    if (Mode == 0)
        * 
        * Specify color classes
        for I := 1 to 4 by 1
            dev_display (Image)
            dev_display (Classes)
            disp_message (WindowHandle, ['Drag rectangle inside ' + Regions[I - 1] + ' color','Click right mouse button to confirm'], 'window', 24, 12, 'black', 'false')
            draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
            gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
            concat_obj (Classes, Rectangle, Classes)
        endfor
    endif
    * 
    * Train the specified color classes
    create_class_mlp (3, 7, 4, 'softmax', 'normalization', 3, 42, MLPHandle)
    add_samples_image_class_mlp (Image, Classes, MLPHandle)
    disp_message (WindowHandle, 'Training...', 'window', 100, 12, 'black', 'false')
    train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
    * 
    * Use the trained MLP classifier to test if each image
    * contains four game pieces of each color
    for J := 0 to 3 by 1
        read_image (Image, ImageRootName + J)
        if (Mode == 1)
            rgb1_to_gray (Image, GrayImage)
            compose3 (GrayImage, GrayImage, GrayImage, Image)
        endif
        * 
        * Apply the trained classes
        classify_image_class_mlp (Image, ClassRegions, MLPHandle, 0.5)
        dev_display (Image)
        disp_message (WindowHandle, 'Looking for 4 game pieces of each color ...', 'window', 24, 12, 'black', 'false')
        dev_set_line_width (2)
        * 
        * Count the number of game pieces for each color class
        for Figure := 1 to 3 by 1
            copy_obj (ClassRegions, ObjectsSelected, Figure, 1)
            connection (ObjectsSelected, ConnectedRegions)
            select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 400, 99999)
            count_obj (SelectedRegions, Number)
            dev_set_color (Highlight[Figure - 1])
            dev_display (SelectedRegions)
            OutString := Regions[Figure - 1] + ': ' + Number + '   '
            dev_set_color ('green')
            disp_message (WindowHandle, OutString, 'window', 24 + 30 * Figure, 12, 'black', 'false')
            if (Number != 4)
                disp_message (WindowHandle, 'Not OK', 'window', 24 + 30 * Figure, 120, 'red', 'false')
            else
                disp_message (WindowHandle, 'OK', 'window', 24 + 30 * Figure, 120, 'green', 'false')
            endif
        endfor
        if (J < 3 or Mode == 0)
            disp_continue_message (WindowHandle, 'black', 'true')
            stop ()
        endif
    endfor
    clear_class_mlp (MLPHandle)
endfor
dev_clear_window ()
dev_display (Image)
Message := 'The game pieces cannot be classified reliable on'
Message[1] := 'gray images because the gray values of the'
Message[2] := 'game pieces cannot always be distinguished from'
Message[3] := 'the gray values of the background.'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')

后续可以尝试对下图进行训练和预测


相关文章
|
4月前
|
人工智能 开发工具 计算机视觉
AI计算机视觉笔记三十:yolov8_obb旋转框训练
本文介绍了如何使用AUTODL环境搭建YOLOv8-obb的训练流程。首先创建虚拟环境并激活,然后通过指定清华源安装ultralytics库。接着下载YOLOv8源码,并使用指定命令开始训练,过程中可能会下载yolov8n.pt文件。训练完成后,可使用相应命令进行预测测试。
|
6月前
|
机器学习/深度学习 编解码 算法框架/工具
使用Python实现深度学习模型:图像超分辨率与去噪
【7月更文挑战第17天】 使用Python实现深度学习模型:图像超分辨率与去噪
170 4
|
7月前
|
机器学习/深度学习 存储 算法
心得经验总结:浅析人脸检测之Haar分类器方法
心得经验总结:浅析人脸检测之Haar分类器方法
46 0
|
7月前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】44. 图像增广的几种常用方式并使用图像增广训练模型【Pytorch】
【从零开始学习深度学习】44. 图像增广的几种常用方式并使用图像增广训练模型【Pytorch】
|
8月前
|
机器学习/深度学习 算法 PyTorch
基于Pytorch用GAN生成手写数字实例(附代码)
基于Pytorch用GAN生成手写数字实例(附代码)
200 0
|
8月前
|
机器学习/深度学习 数据采集 PyTorch
PyTorch使用神经网络进行手写数字识别实战(附源码,包括损失图像和准确率图像)
PyTorch使用神经网络进行手写数字识别实战(附源码,包括损失图像和准确率图像)
173 0
|
机器学习/深度学习 存储 PyTorch
PyTorch应用实战五:实现二值化神经网络
PyTorch应用实战五:实现二值化神经网络
605 0
|
机器学习/深度学习 编解码 达摩院
【OpenVI-图像超分实战篇】别用GAN做超分了,快来试试基于扩散模型的图像超分吧!
近10年来,深度学习技术得到了长足进步,在图像增强领域取得了显著的成果,尤其是以GAN为代表的生成式模型在图像复原、老片修复,图像超分辨率等方面大放异彩。图像超分辨率是视频增强方面,用于提升画质的典型应用。生成对抗网络GAN使得在图像分辨率增加的同时,保持细节特征,补充生成真实的纹理,其中应用广泛的工作是Real-ESRGAN。 扩散模型DiffusionModel在图像超分辨率这方面的新的应用,展现出其超过GAN的生成多样性和真实性。看完后,你会发现,还在用GAN做图像超分辨率吗?已经OUT了,快来试试DiffusionModel吧!
27149 3
【OpenVI-图像超分实战篇】别用GAN做超分了,快来试试基于扩散模型的图像超分吧!
|
机器学习/深度学习 算法
【MATLAB第14期】#源码分享| 基于多层前馈神经网络的回归预测模型代码分享,多参数多图调整
【MATLAB第14期】#源码分享| 基于多层前馈神经网络的回归预测模型代码分享,多参数多图调整
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络理论篇】 33 基于图片内容处理的机器视觉:目标检测+图片分割+非极大值抑制+Mask R-CNN模型
目标检测任务的精度相对较高,主要是以检测框的方式,找出图片中目标物体所在的位置。目标检测任务的模型运算量相对较小,速度相对较快。
343 0