| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> YOLO(2) —— 门外汉的初瞄 -> 正文阅读 |
|
[人工智能]YOLO(2) —— 门外汉的初瞄 |
? ? ? ? 在专业介绍上,网上有一大堆,但真的是直接把门外汉挡门外,让我们这种成为了名副其实的“门外汉”。 基础认识: ????????像我这种探索型的人,看吴恩达的使用,(先前从图像清晰度评价了解到边缘检测,进而了解到“卷积”,只是了解,没有深入学习,但有了直观感受)直接从卷积神经网络开始,然后对其中的重要点有疑问,再向前看前面的视频,再有疑问,再向前。 ? ? ? ? 慢慢会发现,虽然YOLO本质上还是神经元那一套,但已经不能直接去替代了解了。 ? ? ? ? 看完吴恩达视频中对YOLO说法,再结合其他人的分析和图片说明,YOLOv1整体做的事就是 输入一张448x448的RGB三通道图像数据,划分了7x7个区域,使用分类定位,确认物体中心点在那个区域,则这几个区域再预测输出两种框,每个框包含【每一类物理是否“概率性存在”,如果“概率性存在”,则给出这个“概率”及框出它的边框信息】。然后使用“概率”高的那个框做为结果。 CNN做了什么: ? ? ? ? 在门外汉看来,输入是图像,输出给定了框选信息,那么你得从图像角度说你的算法做了什么。 ? ? ? ? 但是呢,“一个师傅”出来的,都是一个模子。不说100%吧,99.99%在解释的时候只会给个论文原图那个的结构,告诉你是几x几x几的数字数据,这几个是什么矩阵数据,估计连他们自己都不知道怎么去对应的图像数据,就只能说几x几x几 ? ? ? ? 所以,想要去理解,不可能,还是只能从几x几x几开始。 ? ? ? ? YOLO1有24个卷积层,那么一个卷积层是什么 ? ? ? ? 视频 卷积的认识--》 卷积的计算 --》 多维卷积 --》 卷积层 边缘检测的卷积 (视频截取) RGB三通道卷积(视频截取) ?单个卷积层(视频截取) ? 一个简单的CNN网络(视频截取) ????????那么问题来了,每一层卷积层都要有卷积核来卷积操作,这些卷积核具体数值是多少? ? ? ? ? 在视频中有提到,3x3滤波器(卷积核),人工设计的检测边缘类型少, (网络资源) 需要检测复杂图像时,相应的滤波器也会比较复杂,这时想着把这9个值当参数,让算法去学习记录,最后的学习结果作为滤波器去检测。 ? ? ? ? 而在论文中也说明了,使用ImageNet数据集训练前20个卷积层,那么训练结果就应该是每一层的卷积核。 乱入一个matlab上的“胡乱测试” ? ? ? 这里有 double 与 uint8转换的问题 darknet使用C写,那么它是怎么进行卷积的 (网络资源) (https://github.com/pjreddie/darknet) ?darknet/cfg/yolov1.cfg 中 第一个卷积层 模型参数 448 / 7 = 64 该怎么理清关系?filters=64 是指64个卷积核吗?一个卷积核7x7这个是论文图中明确的 ? ? 卷积层有多种卷积方式,常见的有五种:Valid、Same、Full、Strided、Fractional_strided,区别在于输出的长宽不同。 pad=1,stride=2,7x7 卷积,结果是 |(448 + 2 * 1 - 7) / 2|?+ 1 = 222 (除以2时向下取整) 按照操作, [1][2][3][4][5][6][7] ? ? ? ? [3][4][5][6][7][8][9] 看作 [1][2][3][4][5][6][7][ ] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [9][ ] 一个两单元长的尺去丈量,从[7]开始翻滚到[9]再翻... 转换公式 (size - 1?+ stride * N) <= (Width?+ 2 * pad) N <= (Width + 2 * pad - size + 1) / stride = (448 + 2 * 1 - 7 + 1) / 2 = 222 6单元 + 222 个2单元 = 6 + 444 = 450单元 [maxpool] 222 / 2 = 111,可以论文图中是112,还漏了一个什么? 只能让它自己给答案 darknet创建时会打印 写测试文件 yolo1.c #include <stdio.h> #include <darknet.h> int main(int argc, char *argv[]) gcc yolo.c -I ./darknet/include/ -L ./darknet/ -ldarknet -o yolo1test -static -lm -pthread $ ./yolo1test ./darknet/cfg/yolov1.cfg 再对着图去看就发现问题了,少画了第一层输出结果 448 x 448 x?? 3?? ->?? 224 x 224 x? 64 这样看就清楚了,64个卷积核,输出 x64,那么使用了3维卷积核 那么第一步,448 x 448 x 3 一个7x7x3卷积核卷积 怎么到 224 x 224 修改下打印,就知道哪里不对了 layer???? filters??? size????????????? input??????????????? output 看下代码 convolutional_layer parse_convolutional(list *options, size_params params) ??? ... } pad为1时 padding = size / 2, pad为0时,解析padding,默认为0 所以pad只是标志位,不是实际pad值 下一步:训练又是怎么一回事? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:53:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |