七库下载 手游攻略 手游评测 python人工智能:完整的图像识别(非图像验证码),以及模型的使用

python人工智能:完整的图像识别(非图像验证码),以及模型的使用

时间:2024-11-12 10:40:31 来源:网络 浏览:0

我们一直在谈论人工智能和图像识别,但是有多少人知道呢?网上有堆积如山的文章。前段时间,由于工作需要,只有我一个人做后端开发,要做图像识别。

于是我开始了疯狂的寻找。首先我们来说说目前互联网上介绍最多、最好、最棘手的模型——AIimage。它用了10行代码就完成了图像识别。可以通过代码来识别对象,但必须使用它们的模型。他们不能自己训练,所以我开始寻找AIimage的训练模型。我找到了它并且它能够被训练。我使用了训练好的模型并正式进行了测试。哇,看起来像屎一样!

后来得到了一位大哥的真实消息,给了我这套完整的训练+完整的使用代码。先说说这位大哥吧。他真是个好人。我从git获取代码,然后自己运行。各种bug+都不行。我不好意思问调试的事情,但是这位大哥亲自帮我调试,解决bug,远程调试到半夜。太难了。我给他发了红包,他没收了,还留言:学*!

大哥永远是大哥

之所以写这篇文章,主要是为了让像我这样的纯粹新手更容易使用代码。由于源码没有完整的结构,并且存在一些小问题,所以我给出的是完全通过的代码。

我不懂人工智能。以下内容来自老大哥原创文章:TensorFlow复刻ResNet系列模型

阅读之前需要了解的事项:

如果读者在阅读中发现任何错误,请在评论中指出,共同进步。

编译环境:Python3.5

张量流GPU 1.3.0

1.结构分析

说起卷积模型,LeNet、Inception、Vgg都是图像识别领域学*神经网络的经典模型。上图模型是经典的Vgg-19与34层传统卷积网络和ResNet-34的对比。

在计算量方面,Vgg-19的三层全连接神经网络的计算量明显大于传统的卷积网络和resnet。传统卷积网络和resnet的参数数量是相同的。

普通和resnet

在训练拟合方面,论文分别提供了plain-18、plain-34、resnet-18 和resnet-34 的比较。不难发现,随着层数的增加,plain的精度并没有明显提升。改进,resnet不仅随着层数的增加训练精度有所提高,而且在相同深度下比plain有更高的精度。

python人工智能:完整的图像识别(非图像验证码),以及模型的使用

残差模块

上图展示了residual模块的结构。为了有效,残差块需要具有两层或多层。同时,输入x和输出F(x)的维度也必须相同。

残差块

1、尺寸不足的部分用全0填充

2、输入输出维度一致时使用恒等映射,不一致时使用线性投影。

3. 对所有块使用线性投影。

2.实施规划(ResNet-50-101-152)

不同深度的ResNet结构

结构定义词典

结构字典

ResNet_demo={ 'layer_50':[{'深度': 256,'num_class': 3}, {'深度': 512,'num_class': 4}, {'深度': 1024,'num_class': 6}, {'深度': 2048,'num_class': 3}],'layer_101': [{'深度': 256,'num_class': 3},{'深度': 512,'num_class': 4},{'深度': 1024,'num_class': 23},{'深度': 2048,'num_class': 3}],'layer_152': [{'深度': 256,'num_class': 3},{'深度' : 512, 'num_class': 8}, {'深度': 1024, 'num_class': 36}, {'深度': 2048, 'num_class': 3}] 子类模块规划

在ResNet网络传输过程中,我们来讨论一些即将出现的问题:

1. 下采样过程

2. 通道填充

下采样图

下采样过程用于不同类型瓶颈模块之间的传输过程。比如上图中粉色卷积层和蓝色卷积层之间的数据交互。蓝色卷积层中的/2是下采样过程。

python人工智能:完整的图像识别(非图像验证码),以及模型的使用

下采样模块代码实现

def Sample(input_tensor, #Tensor Entry ksize=1, #采样块大小stride=2): #采样步长data=input_tensor data=slim.max_pool2d(data,ksize,stride=stride) 返回数据通道填充用于输入数据x与结果数据F(x)生成残差和时引起的通道失配问题

通道填充模块代码实现

def heightFilling(input_tensor, #InputTensor depth): #输出深度data=input_tensor #获取输入张量的深度input_depth=data.get_shape().as_list()[3] #tf.pad 填充的是维度,对于那些不明白的可以去TensoFLow官网了解一下data=tf.pad(data,[[0,0], [0,0], [0,0], [abs(深度- input_深度)//2、abs(深度- input_深度) //2]]) 返回数据好了,两个子类的问题已经解决了。现在让我们规划并实现残差模块。

残差模块

由于构建方向选择层大于等于50层,因此我们使用论文中给出的第二种残差模块(11+33+1*1)。

残差模块代码实现

defbottleneck(input_tensor,output_depth): #取出通道redepth=input_tensor.get_shape().as_list()[3] #当通道不匹配时,进行全零填充和下采样if output_depth !=redepth: #All-零填充input_tensor=heightFilling(input_tensor,output_depth) #下采样input_tensor=抽样(input_tensor)data=input_tensor #下通道处理data=slim.conv2d(inputs=data, num_outputs=output_depth//4, kernel_size=1, stride=1) #提取特征data=slim.conv2d(inputs=data, num_outputs=output_depth//4, kernel_size=3, stride=1)#通道恢复data=slim.conv2d(inputs=data, num_outputs=output_depth, kernel_size=1, stride=1、activation_fn=None, normalizer_fn=None) #生成残差数据=data + input_tensor data=tf.nn.relu(data) 返回数据有了残差模块,我们就可以堆叠网络结构了

然而,为了简化我们的代码块,我选择取出全连接层并将其编写为单独的模块

FC代码实现

这个模块没有什么技术含量,和我们刚开始用的BP神经网络类似。

def cnn_to_fc(input_tensor, #张量入口num_output, #输出接口数量train=False, #是否使用dropout正则化器=None) : #正则函数data=input_tensor #获取输出信息的维度,用于的输入全连接层data_shape=data .get_shape().as_list() Nodes=data_shape[1] * data_shape[2] * data_shape[3] reshape=tf.reshape(data, [data_shape[0], Nodes]) #最后全连接连接层与tf.variable_scope ('layer-fc'): fc_weights=tf.get_variable('weight', [nodes,num_output],initializer=tf.truncated_normal_initializer(stddev=0.1)) ifregularizer !=None: tf.add_to_collection( '损失', 正则化器( fc_weights)) fc_biases=tf.get_variable('bias', [num_output], 初始化器=tf.constant_initializer(0.1)) fc=tf.nn.relu(tf.matmul(重塑, fc_weights) + fc_biases ) if train: fc=tf .nn.dropout(fc, 0.5) return fc 定义传递规则

推理

#Stacked ResNet模块def inference(input_tensor, #数据入口demos, #模型信息(列表) num_output, #出口数量为_train):data=input_tensor #第一层卷积7*7,stride=2,深度为64data=conv2d_same( data,64,7,2,is_train,None,normalizer_fn=False)data=slim.max_pool2d(data,3,2,scope='pool_1')with tf.variable_scope('resnet'): #堆叠通用类瓶颈模块demo_num=0 用于demos: 中的演示demo_num +=1 print('------------------------------------ -- --------') #堆叠子类瓶颈模块for i in range(demo['num_class']): print(demo_num) if demo_num is not 4: if i==demo['num_class'] - 1: 步幅=2 else: 步幅=1 else: 步幅=1 数据=瓶颈(数据,demo['深度'],步幅,is_train) print('------------------ - ------------------------------------')data=tf.layers.batch_normalization(data,training=is_train)data=tf.nn.relu(data ) #平均池化,也可以使用Avg_pool函数data=tf.reduce_mean(data, [1, 2], keep_dims=True)print('output : ', data) #最终全连接层data=slim.conv2d(data , num_output,1,activation_fn=None)data_shape=data.get_shape().as_list()nodes=data_shape[1] * data_shape[2] * data_shape[3]data=tf.reshape(data, [-1, 节点] ) 返回数据推理调用方法

inference(input_tensor=数据录入demos=ResNet_demo['layer_101'], #获取模型字典num_output=出口数量, is_train=False) # BN是否经过训练参考:

https://arxiv.org/pdf/1512.03385.pdf

python人工智能:完整的图像识别(非图像验证码),以及模型的使用

http://blog.csdn.net/xxy0118/article/details/78324256

http://blog.csdn.net/mao_feng/article/details/52734438

使用介绍

图像分类和目录结构

Snip20181114_1.png

第一步是运行FlowIO.py

图片.png

第二步是运行train.py 来训练模型。这里图片很少,训练次数也很少。真实的情况需要大量的训练。

图片.png

第三步:运行Evaluation.py测试结果集,可以跳过

选择正确的型号:

正确的模型.png

第四步,使用模型useModel.py进行图像识别。

图片.png

结果是对的!

请忽略我的结果,因为我只有8 个训练集,而这需要每个类别至少80 个训练集。

用户评论

青墨断笺み

这门Python课程真的很棒!它不仅深入浅出地讲解了如何用AI做图像识别,还教我怎么构建并应用自己的识别模型。对于初学者来说绝对友好。

    有19位网友表示赞同!

栀蓝

之前一直对AI感兴趣但不知道从何入手,学*完这个课程后,感觉自己在图片处理和模式识别方面有了很大提升。

    有5位网友表示赞同!

无关风月

无论是代码实践还是理论讲解,这个关于Python AI的课程都十分到位。对于想要用AI做图像相关项目的同学来说,真是个好起点。

    有15位网友表示赞同!

咆哮

我通过这门课成功地将自己的照片分类器建立起来了,真的很成就感满载。

    有7位网友表示赞同!

莫阑珊

虽然有段时间编程基础不是特别扎实,但跟着老师的步骤逐步来,觉得这个课程超级贴心,并帮助我克服了不少技术障碍。

    有19位网友表示赞同!

发呆

这个Python AI课程对我来说是入门到进阶的完美桥梁。讲解清晰,代码实战性强,真的强烈推荐给想要尝试AI的朋友。

    有9位网友表示赞同!

十言i

在玩了几次验证码之后才发现其实背后的原理就是图像识别算法,学完这门课才知道原来是Python AI这么干的!

    有12位网友表示赞同!

安陌醉生

通过这个课程我可以自信地说:我会用Python构建模型解决图片分类问题。(虽然我还没正式工作,但心理满足感十足!)

    有7位网友表示赞同!

把孤独喂饱

无论是对机器学*感兴趣,还是想提升自己的技能,这个Python AI课程都给了我足够的动力和信心去实践。

    有16位网友表示赞同!

满心狼藉

真的很感谢提供这个课程。图像识别的理论讲得既深入又实用。我感觉自己在AI这方面的知识已经比预想中要多出很多。

    有18位网友表示赞同!

闲肆

从零基础开始学*到现在能够独立进行简单的图片分类,这个Python课程对我的帮助真的超出了预期!

    有16位网友表示赞同!

千城暮雪

我一直梦想着能用AI来解决日常生活中的小问题,现在我觉得自己更接近实现这个目标了。

    有11位网友表示赞同!

权诈

这次的学*体验真的很赞。我不但掌握了基础知识,还尝试了自己的案例项目。对AI的热情又高涨了不少。

    有10位网友表示赞同!

莫失莫忘

课程的教程很有耐心地一步步引导我通过Python探索图像识别的世界,感觉像是在给刚刚毕业的学生打基础。

    有20位网友表示赞同!

有恃无恐

这个关于Python AI和图片识别的课程让我觉得自己的编程技能有了实质性的飞跃,开始期待能用所学做点实际的东西。

    有8位网友表示赞同!

断秋风

我以前在编程中总是担心自己的逻辑有问题,学*了这门课后,发现AI的构建过程比我想象中的更有规律性,很有成就感。

    有13位网友表示赞同!

仰望幸福

这次的学*体验完全超出了我的预期。不光是理论知识,实战操作让我深刻感受到Python AI的力量。

    有12位网友表示赞同!

■□丶一切都无所谓

对于对图片处理充满好奇心的人来说,这个课程简直是理想之选!每个小项目都让人兴奋不已。

    有17位网友表示赞同!

念安я

感谢提供这些详细的指导。从理论出发到动手实践,每一步都很实用,为我能自己独立工作打下了坚实的基础。

    有16位网友表示赞同!

标题:python人工智能:完整的图像识别(非图像验证码),以及模型的使用
链接:https://www.7kxz.com/news/sypc/42694.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
抖音热搜排行榜今日榜4月10日是什么,抖音最火热搜

抖音每天都会有博主发布好玩有趣的视频,那么4月10日今天抖音热门的视频都有哪些内容呢?感兴趣的朋友们一起来

2024-11-12
射雕引弓是什么歌曲,射雕引弓

射雕引雷针怎么获得  引雷针是射雕手游用于引发天雷的重要道具,玩家可以通过引雷入体来增加角色属性。那么

2024-11-12
播放世界之外,世界之树怎么赚钱

世界之外植树激励怎么玩  世界之外将在本周末开启植树激励活动,还会有一系列世界树更新上线,大家知道都有什

2024-11-12
国家一级文物战国商鞅方升,商鞅方升拓片

物华弥新商鞅方升技能强度怎么样  物华弥新是一款战棋策略类型的战斗冒险手游,在游戏里面玩家可以知道每一

2024-11-12