小编Ern*_*ado的帖子

是否有一种有效的手写文本分割算法?

我想通过线条(以及将来的文字)自动划分古代手写文字的图像.

第一个明显的部分是预处理图像......

我只是使用简单的数字化(基于像素的亮度).之后我将数据存储到二维数组中.

下一个显而易见的部分是分析二进制数组.

  1. 我的第一个算法很简单 - 如果数组的一行中的黑色像素多于最大值最小值的均方根,则该行是行的一部分.

    在形成线条列表后,我切断了高度低于平均值的线条.最后它变成了某种线性回归,试图最小化空行和文本行之间的差异.(我以为这个事实) 第一个结果

  2. 我的第二次尝试 - 我尝试使用GA和几个健身功能.染色体包含3个值 - xo,x1,x2.xo [-1; 0] x1 [0; 0.5] x2 [0; 0.5]

确定行到行的同一性的函数是(xo +α1x1+α2x2)> 0,其中α1是行中黑色像素的缩放和,α2是行中极端黑色像素之间的范围的中值.(a1,a2 [0,1])我试过的另一个函数是(x1 <α1或x2>α2)(1/xo + [a1 x1]/[a2 x2])> 0 最后一个函数是最多的高效. GA的结果 适应度函数是 (1 /(HeigthRange + SpacesRange))

范围是最大值和最小值之间的差异.它代表了文本的同质性.此功能的全局最佳 - 将图像划分为线条的最平滑方式.

我使用C#和我的自编码GA(经典,2点交叉,灰色代码染色体,最大群体为40,突变率为0.05)

现在我没有想法如何将这个图像分成几行,精度达到100%.

这样做的有效算法是什么?


更新: 原始图像 原始BMP(1.3 MB)


更新2: 将此文本的结果改进为100% Nev结果

我是怎么做到的:

  • 修复范围计数中的小错误
  • 将健身功能改为1 /(distanceRange + 1)*(heightsRange + 1))
  • 将分类函数最小化为(1/xo + x2 /范围)> 0(行中的点现在不影响分类)(即优化的输入数据并使适应度函数优化更明确)

问题:

问题

GA令人惊讶地未能认识到这一点.我看了'find rages'函数的调试数据,发现在'无法识别'的地方有太多的噪音.功能代码如下:

public double[] Ranges()
{ …
Run Code Online (Sandbox Code Playgroud)

c# algorithm ocr image-processing genetic-algorithm

33
推荐指数
2
解决办法
3346
查看次数

如何解决简单GA(Python)中的早熟收敛?

昨天我开始探索遗传算法,当我最终得到一些基本理论时,我试图在Python上编写简单的GA,它解决了丢番图方程.我是Python和GA的新手,所以请不要严格判断我的代码.

问题

由于早熟收敛,我不能得到任何结果(有一些无返回点(n-population),population [n] == population [n + i],其中i是任意整数.甚至随机变换元素也无法改变这个,这一代很快就退化了)

GA使用交叉来繁殖,并加权选择父母.

  • Q1:我的代码中是否有任何设计错误(如下)?
  • Q1.2:我需要增加精英主义吗?
  • Q1.3:我需要改变品种逻辑吗?
  • Q2:真的需要深层复印吗?

码:

# -*- coding: utf-8 -*-
from random import randint
from copy import deepcopy
from math import floor
import random

class Organism:
    #initiate
    def __init__(self, alleles, fitness, likelihood):
        self.alleles = alleles
        self.fitness = fitness
        self.likelihood = likelihood
        self.result = 0
    def __unicode__(self):
        return '%s [%s - %s]' % (self.alleles, self.fitness, self.likelihood)

class  CDiophantine:
    def __init__(self, coefficients,  result):
        self.coefficients = coefficients
        self.result = …
Run Code Online (Sandbox Code Playgroud)

python artificial-intelligence genetic-programming genetic-algorithm

9
推荐指数
1
解决办法
1056
查看次数

Django+gunicorn+nginx上传大文件502错误

问题

上传 1-2mb 文件工作正常。当我尝试上传 16mb 文件时,几秒钟后出现 502 错误

更详细:

  1. 我点击“上传”
  2. 谷歌浏览器上传文件(上传状态从左下角的 0% 变为 100%)
  3. 状态更改为“等待主机”,其中 HOST 是我的站点主机名
  4. 半分钟后服务器返回“502 Bad Gateway”

我的看法:

def upload(request):
    if request.method == 'POST':
        f = File(data=request.FILES['file'])
        f.save()
        return redirect(reverse(display),  f.id)
    else:
        return render('filehosting_upload.html', request)
Run Code Online (Sandbox Code Playgroud)

render(template, request [,data]) 是我自己的速记,用于处理一些 ajax 内容;

filehosting_upload.html

{% extends "base.html" %}
{% block content %}
    <h2>File upload</h2>
    <form action="{% url nexus.filehosting.views.upload %}" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <input type="file" name="file">
        <button type="submit" class="btn">Upload</button>
    </form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

日志和规格

我在日志中找不到任何信息。

版本: …

django nginx gunicorn

7
推荐指数
1
解决办法
8098
查看次数