接着上一篇,这一篇把剩下两个任务做完

  • 读取图片和图片预处理;
  • 搭建VGG神经网络;
  • 开始训练和一些训练技巧;
  • 制作新数据集和数据增强;
  • 模型融合;

生成验证码:

首先在 查字体网 (百度可以搜到~)查到我们需要的字体

然后下载TTF文件,放到我们的文件目录下。

生成验证码:

调用 数据集.py 程序并输入生成数量,生成验证码

代码:

from PIL import ImageFont, ImageDraw, ImageFilter, Image

import random

import pandas as pd

import numpy as np

import os

import cv2

co = np.array(pd.read_csv('l.csv'))

k = []

num = int(input('请输入生成数目并保存在/pic_data中: '))

for i in co:

k.append(tuple(i))

co = k

# 字体路径

font_path = "RAVIE.TTF"

# 位数

numbers = 1

# 验证码大小

size = (120, 40)

# 背景颜色

bgcolor = (random.randint(0, 255), 0, 0)

# line 干扰线

draw_line = True

# 线数量范围

line_numbers = (1, 4)

def bgfontrange():

global bgcolor

bgcolor = random.choice(co)

source1 = [str(x) for x in range(0, 10)] # 0-9之间

source2 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",

"m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

source3 = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L",

"M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

source = []

source.extend(source3)

source.extend(source1)

source.extend(source2)

# 随机生成四个随机数:

def make_text():

return "".join(random.sample(source, numbers)) # "",加上4个随机数

# 随机划线

def make_line(draw, width, height):

begin = (random.randint(0, width), random.randint(0, height))

end = (random.randint(0, width), random.randint(0, height))

draw.line([begin, end], fill=(random.randint(170, 210), random.randint( 130, 170), random.randint(90, 130)), width=random.choice([2, 3])) # 绘线

def create_points(draw, point_chance, width, height):

chance = min(100, max(0, int(point_chance))) # 大小限制在[0, 100]

for w in range(width):

for h in range(height):

tmp = random.randint(0, 100)

if tmp > 100 - chance:

draw.point((w, h), fill=(random.randint(0, 200), 0, 0))

data = pd.DataFrame()

data1 = []

def rndChar():

return chr(random.randint(65, 122))

def rndColorChar():

return(random.randint(20, 110), random.randint(20, 110), random.randint(20, 110))

# 生成验证码

def make_codepng(index):

width, height = size # 图片的宽度与高度

# RGBA是透明度

image = Image.new("RGB", (width, height), bgcolor) # 创建图片

draw = ImageDraw.Draw(image) # 绘图工具

text = make_text() # 生成随机字符串

font = ImageFont.truetype(font_path, 29) # 定义字体大小

font_width, font_height = font.getsize(text) # 设置字体的宽度与高度

s = ''

for t in range(4):

s1 = make_text()

s = s + s1

bias = random.randint(-5, 5)

draw.text((25*t+10, (height-font_height)/2+bias),

s1, font=font, fill=rndColorChar())

text = s

data1.append(s)

if draw_line:

print("num : {}".format(index), end='')

num = random.randint(1, 3)

for i in range(num):

make_line(draw, width, height)

create_points(draw, 6, width, height)

filename = r"./pic_data/"+text+".jpg"

# filename = text + '.jpg'

with open(filename, "wb") as file:

image.save(file, format='JPEG')

if not os.path.exists("./pic_data"):

os.makedirs("./pic_data")

for i in range(num):

bgfontrange() # 背景颜色随机

make_codepng(i)

其中需要的文件是

(l.csv文件保存了对官方给出数据集的背景RGB值的取样)

这样就可以生成一模一样的数据集啦~

模型融合:

一般来说,模型融合可以得到更好的测试集表现结果,当然前提是模型之间相关性越小越好、模型结构差距越大越好。我们这里就使用Voting的方式进行融合,即对同一张图片,使用不同的模型预测进行投票。

这里我做了7个模型,放在了另一个文件夹里:

不同模型采用了不同的预处理方式和网络结构,子文件夹比如Net0,就存放了预处理方式和网络结构及其模型。

由于后来官方改成了提交docker文件,程序改动比较大,这里就不放出来啦,需要源码的留下邮箱哦~

总结:

1、预处理很重要!

2、模型融合很重要!

3、调参数也是一个很重要的环节,这感觉更像一个需要经验的地方,所以有时间不如选一个模型,尝试一下怎么把它的性能调到最高。

下期再见啦~

Ps:下一系列讲一下SSD目标检测算法及其实现,参考了Github上balance大神的SSD-tensorflow,但更多使用了Numpy而非tensorflow实现图片的处理,而且由于balance大神写的时候综合考虑了模型的效率、应用性等等,代码可能比较复杂;这里的话就是使用了一个最简单最直接的方法,参考论文复现的一个SSD-vgg网络,效果如图,尽快更新~

在宿舍随手拍了一张图(然后发现特征很多,干扰也很多,正好适合测试一下目标检测算法),然后第一张是balance大神的300×300的模型的结果,第二张是我们自己从头搭建的模型的结果:

可以看到我们的模型对于小目标检测效果似乎更好一点(比如桌子上的一些bottles),对遮挡目标的检测也比较好(比如这个被衣服挡住的chair);

但是可能存在过拟合的现象,比如把左下角的盆当成了chair(盆:我冤枉啊!),也有把书包检测成chair的情况(书包:我也冤枉啊!)。

先放一下文件目录吧,下期再见~

源码就不分享啦~需要咨询的私信小编01获取~

计算机能力挑战赛_全国高校计算机能力挑战赛(基于tensorflow+python+opencv)!相关推荐

  1. 广西全国计算机二级考试内容,全国高校计算机等级考试(广西考区)二级考试大纲.doc...

    全国高校计算机等级考试(广西考区)二级考试大纲.doc 附录Ⅲ 全国高校计算机等级考试(广西考区)二级考试大纲 考试科目:<Visual Basic.NET程序设计> (2009年8月修订 ...

  2. 广西计算机一级机试题,全国高校计算机等级考试(广西考区)一级机试试题(C)

    <全国高校计算机等级考试(广西考区)一级机试试题(C)>由会员分享,可在线阅读,更多相关<全国高校计算机等级考试(广西考区)一级机试试题(C)(3页珍藏版)>请在人人文库网上搜 ...

  3. 全国最强计算机的大学排名,全国高校计算机学科实力最新排名,这19所高校最受认可!...

    通过上图可以发现,以上19所高校是国内计算机学科实力最强的高校群.如果你想学习计算机相关专业,这些高校是最佳的选择.然而,不同高校之间还是有些差距的.像清华大学.浙江大学.华中科技大学和上海交通大学这 ...

  4. 计算机信息安全之所以重要,全国高校计算机等级考试广西考区一级笔试模拟试题5...

    四.当一个窗口已经最大化后,下列叙述中错误的是34 .在Windows中,"任务栏"的作用是 35 . 34.A.该窗口可以被关闭B.该窗口可以移动C.该窗口可以最小化D.该窗口可 ...

  5. 高等教育计算机等级,[高等教育]全国高校计算机等级考试5.doc

    [高等教育]全国高校计算机等级考试5 全国高校计算机等级考试(广西考区)一级机试测试题(M5) ★ 时间:50分钟 准考证号____________________ 姓名_______________ ...

  6. 2020年第二届全国高校计算机能力挑战赛Excel模拟题

    2020年第二届全国高校计算机能力挑战赛Excel模拟题 Excel模拟题1 1.模拟答题时间: 60分钟; 2.单选题45题(每题1分),不定向选择题10 (每题2分),判断题10题(每题1分),实 ...

  7. 非科班Java尝试全国高校计算机能力挑战赛第三届计挑赛

    写在前面:①大佬勿在意,小打小闹!②若不决参加与否,希望下文可以给你帮助(仅限程序设计赛项). 文章目录 一.个人真实情况 二.比赛最细简介 三.最全参赛准备 四.比赛时候遇到不会做怎么办? 一.个人 ...

  8. 2019C语言程序设计大赛,2019年全国高校计算机能力挑战赛 C语言程序设计决赛

    2019年全国高校计算机能力挑战赛 C语言程序设计决赛 毕竟这个比赛是第一次举办,能理解.. 希望未来再举办时,能够再完善一下题面表述.数据范围. 话说区域赛获奖名额有点少吧.舍友花60块想混个创新创 ...

  9. 全国高校计算机能力挑战赛真题(二)

    全国高校计算机能力挑战赛Java模拟练习题(二) 竞赛官网:http://www.ncccu.org.cn/ 全国高校计算机能力挑战赛真题(一) 1.模拟时间:90分钟 2.单选题15题(每题3分), ...

  10. 全国高校计算机能力挑战赛

    CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:大学生竞赛指南 话题描述: ...

最新文章

  1. 导出SAP表结构到EXCEl
  2. 再次遇到的问题:Unable to load dynamic library myext.so: undefined symbol
  3. android 背景图片居中显示文字,Android ImageSpan 给文字设置圆角背景 并且文字居中,背景居中。...
  4. windows10环境下载labelImg及使用方法
  5. 基于html5的在线教育,基于HTML5的在线学习系统的设计与实现
  6. 类HTML语法显示格式化文本
  7. 修改R语言安装包的默认路径 r包安装位置
  8. 打印程序HELLOWORLD
  9. MarkDown中使用gif的神器:LICEcap
  10. 如何查看电脑是否已经虚拟化
  11. 如何自建微信外卖平台_如何建立微信点餐平台 微信小程序外卖怎么做
  12. js 身份证 港澳通行证正则
  13. ElementUI-textarea文本域高度自适应设置的方法
  14. 互联网创业的准备——架构
  15. 无锡做大做强“中国芯” 华虹功不可没
  16. Centos7 安装MongoDB
  17. Unity 使场景物体始终面向摄像机
  18. JSON 格式是什么?
  19. opencv保存图片小bug
  20. SystemUI setSystemUiVisibility参数属性

热门文章

  1. 机器学习笔记(二十六):支撑向量机(SVM)
  2. 【路径规划】基于matlab粒子群和遗传算法求解机器人栅格地图避障路径规划问题【含Matlab源码 202期】
  3. 【TWVRP】基于matalb蚁群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1579期】
  4. 【路径规划】基于matlab遗传算法求解多式联运运输问题【含Matlab源码 877期】
  5. SPSS Sobel检验(图文+数据集)【SPSS 044期】
  6. python 句子中没有中文_使用python进行汉语分词
  7. js ajax异步提交,jquery ajax异步提交表单数据的方法
  8. mysql 外键 150_mysql之创建外键报150错误的处理方法
  9. 计算机组装常用工具有锤子,工具箱中常用的五金工具有哪些?
  10. C++ 只要一句,输入重定向。讲讲编程竞赛本机调试技巧