我的创作纪念日——创作第512天

机缘

最初成为创作者的初心

每一位创作者都有一个起点,对于我来说,成为创作者的初心源于以下几点:

我的第一篇文章:解决Yolov5的RuntimeError: result type Float can't be cast to the desired output type long int 问题_yolov5 runtimeerror: result type float can't be ca-CSDN博客

  • 实战项目中的经验分享 :在项目中积累了许多宝贵的经验,希望通过分享来帮助其他同行。在一个实际项目中,我们需要实现一个高效的目标检测系统,以便在实时视频流中检测和分类不同的物体。经过调研和实验,我们选择了YOLOv5算法,它在速度和准确性之间达到了良好的平衡,非常适合我们的需求。【也是在这个项目中,我发现YOLOv5的检测效果一点都不比YOLOv8查,我们是在完全相同的实验条件下,只有算法不一样的情况下得到的结果,希望大家在学习的过程中也不要被一些新的东西禁锢了思维,不是新的就是最好的

  • 日常学习过程中的记录:学习是一个持续的过程,记录下来的笔记不仅是对自己知识的整理,也能给其他人提供参考。

  • 通过文章进行技术交流:写作是一种很好的方式来进行技术交流,能够碰撞出更多的灵感火花。

收获

在创作的过程中,我收获了许多:

从刚开始的几百个粉丝,到目前的4k+粉丝,感谢你们的一路陪伴与支持。

2400粉丝的时候,访问量达到了10w+ ,此后我被官方认证为人工智能领域的新星创作者。我也有有了更大动力去更新创作。

在写这篇文章的时候,粉丝数量已经突破4k。写作的一路非常的坎坷,但是因为有你们关注点赞与收藏,是我每次更新的最大动力。

  • 粉丝关注:目前已经有四千名粉丝关注我的文章,这是一种巨大的动力。

  • 正向反馈:文章发布后,收到了大量的赞、评论和阅读量,这让我感受到自己的努力得到了认可。

  • 结识同行:通过创作认识了很多志同道合的同行,大家相互交流,共同进步。

日常

当前创作已经融入了我的日常生活,与我的工作和学习紧密相连:

  • 生活的一部分:创作已经成为我生活的一部分,每天都会抽出时间来写作。

  • 平衡创作和工作学习:尽量安排好时间,利用碎片时间进行写作,同时也确保工作和学习不受影响。

成就

因为日积月累的磨练,各方面的能力均有所提升,在过去的创作中,有一段代码让我非常自豪:

这段代码是我自己纯手写的,尽管是很简单的NMS,但我也很自豪,因为这是我写的第一段完整的代码

import numpy as np

def nms(boxes, score, conf_thres, iou_thres, offset = 4096):

    # TODO
    tf = score[:] > conf_thres
    score = score[tf]

    idx = np.argsort(score)[::-1]
    keep = []

    while len(idx) > 0:

        keep.append(idx[0])
        
        overlap = np.zeros_like(idx[1:], dtype=np.float32)
        for i, j in enumerate(idx[1:]):
            bbox1 = boxes[idx[0]]
            bbox2 = boxes[j]
            out = iou(bbox1,bbox2)
            overlap[i] = out
        idx = idx[1:][overlap < iou_thres]
    
    box = []
    for i in keep:
        box.append(boxes[i])  # list.append()方法是在原地修改列表
    return box

def iou(bbox1,bbox2):
    x1, y1, w1, h1 = bbox1 # left up right bottom
    x2, y2, w2, h2 = bbox2
    if (x1 <= ((x2+ w2)/2) <= w1) or ((y1 <= ((y2+ h2)/2) <= h1)): # 必须加上等号
        left_top_x = max(x1, x2)
        left_top_y = max(y1, y2) 
        right_bottom_x = min(w1, w2)
        right_bottom_y = min(h1, h2)

        I = (right_bottom_x - left_top_x) * (right_bottom_y - left_top_y)
        o = (w1 - x1) * (h1- y1) + (w2 - x2) * (h2 - y2) - I

        IoU = I / o

        return IoU
    else: # 不相交
        return 0

if __name__ == '__main__':
    boxes = [
        [100, 100, 200, 200],
        [120, 110, 220, 210],
        [300, 320, 400, 400],
        [180, 100, 300, 180]
    ]
    scores = np.array([0.9, 0.8, 0.7, 0.6])
    classes = [0,1,1,2]
    # np.concatenate 先转置 可以拼接 
    out = nms(boxes, scores, 0.5, 0.25)
    print(out)

此外我也写了很多关于深度学习面试问题总结的文章,有上深度学习相关的百种问答技巧,也欢迎大家查看。

百面算法工程师 | 损失函数篇

百面算法工程师 | python解释器相关

百面算法工程师 | 零碎知识点 【待更新】

百面算法工程师 | 经典分类网络总结

百面算法工程师 | 目标检测总结

百面算法工程师 | YOLOv5面试考点原理全解析

百面算法工程师 | YOLOv6面试考点原理全解析

百面算法工程师 | YOLOv8面试考点原理全解析

百面算法工程师 | 深度学习目标检测岗位面试总结

百面算法工程师 | 分类和聚类

百面算法工程师 | Tranformer

百面算法工程师 | 卷积基础知识Conv

百面算法工程师 | 分割网路总结

百面算法工程师 | 激活函数

百面算法工程师 | 优化函数

百面算法工程师 | 深度学习基础理论

百面算法工程师 | 传统图像算法

百面算法工程师 | 池化层

百面算法工程师 | 支持向量机

百面算法工程师 | 模型评价指标

百面算法工程师 | 正则优化函数------BN、LN、Dropout

百面算法工程师 | 特征工程相关理论

百面算法工程师 | 降维

百面算法工程师 | 模型优化

百面算法工程师 | 集成学习------Boosting&Bagging

百面算法工程师 | 贝叶斯网络

YOLOv5面试考点原理全解析 数据增强模块 网络结构 正负样本匹配 LOSS 优化策略和训练过程 推理和后处理过程
YOLOv8面试考点原理全解析 1. 网络结构 2. Loss 计算 3. 训练数据增强 4. 训练策略 5. 模型推理过程
YOLOv6面试考点原理全解析 1. 数据增强模块 2. 网络结构 3. 正负样本匹配策略 4. Loss 设计
损失相关 1.1 Focal Loss[主要针对one stage] 1.2 DFL(YOLOv8损失函数) 1.3 IoU 1.4 GIoU 1.5 DIoU 1.6 CIoU 1.7 SIoU
python解释器相关 2.1 Python的装饰器的作用是什么,为什么要这么做 2.2 什么是解释性语言,什么是编译性语言 2.3 python程序的执行过程 2.4 python的作用域 2.5 python的数据结构 2.6 python多线程 2.7 python多进程 2.8 Python互斥锁与死锁 2.9 Python的深拷贝与浅拷贝 2.10 hasattr() getattr() setattr() 函数使用详解 2.11 init.py 文件的作用以及意义 2.12 点积和矩阵相乘的区别
零碎知识点 3.1 BN 3.2 双线性插值 3.3 为什么传统CNN的输入图片是固定大小
经典分类网络与发展 4.1 AlexNet 4.2 VGGNet 4.3 GoogLeNet 4.4 ResNet 4.5 DenseNet 4.6 MobileNet 4.7 ShuffleNet 4.8 SENet(ImageNet最后一届竞赛的冠军,提出了SE结构)
object detect 5.1 Single Shot MultiBox Detector(SSD) 5.2 YOLO v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 5.3 NMS 5.4 Anchor 5.5 类别不均衡 5.6 anchor free FCOS 5.7 YOLOX
分类和聚类 6.1 为什么正确率有时不能有效评估分类算法? 6.2 什么样的分类器最好? 6.3 什么是聚类,你知道哪些聚类算法? 6.4 K-Means聚类算法如何调优? 6.5 K-Means聚类算法如何选择初始点? 6.6 K-Means聚类聚的是特征还是样本 6.7 K-Means++
Transformer 7.1 Encoder 7.2 Decoder 7.3 训练与测试阶段Decoder的输入、输出 7.4 Transformer Encoder和Decoder的区别 7.5 Transformer中的Embedding 7.6 Positional Embedding 7.7 Transformer中的Attention以及Q、K、V 7.8 Transformer中的Multi head Attention 7.9 Mask Multi head Attention 7.10 self-attention
卷积Conv 8.1 图像卷积过程 8.2 卷积层基本参数 8.3 卷积后图像的长和宽大小的计算方式 8.4 卷积神经网络中的权重共享 8.5 上采样中的反卷积 8.6 空洞卷积 8.7 深度可分离卷积 8.8 为什么可分离卷积中Depthwise卷积后还要进行pointwise卷积 8.9 分组卷积 Group Conv 8.10 1x1卷积作用 8.11 卷积的底层实现/加速技巧 8.12 卷积神经网络的特点 8.13 卷积的memory,params,GFLOPs计算方法
分割网络 9.1 语义分割 9.2 实例分割 9.3 为什么传统CNN的输入图片是固定大小 9.4 FCN 9.5 SegNet 9.6 使用池化层进行上采样的优势 9.7 UNet 9.8 PSPNet 9.9 DeepLab v1 v2 v3 9.10 Mask R-CNN 9.11 RoIAlign
激活函数 Activate Function 10.1激活函数作用 10.2 为什么激活函数都是非线性的 10.3 常见激活函数的优缺点及其取值范围 10.4 激活函数问题的汇总 10.5 如何选择激活函数 10.6 激活函数有哪些性质
优化函数 11.1 优化函数的作用 11.2 梯度下降法的作用 11.3 优化函数及其优缺点 11.4 SGD和Adam的对比 11.5 Batch的影响
基础理论 12.1 超参数调优 12.2 为什么需要Batch Size 12.3 归一化的目的 12.4 局部最优与全局最优 12.5 监督学习与非监督学习的区别 12.6 监督学习有哪些步骤 12.7 为什么神经网络越来越深,变深的意义在哪 12.8 为什么深度神经网络较浅层网络难以训练 12.9 超参数搜索过程是怎样的 12.10 模型Fine tuning 12.11 深度学习为什么不用二阶优化 12.12 什么是TOP5错误率 12.13 开发平台的选择
传统图像算法 13.1 HSV色彩空间 13.2 swish激活函数 13.3 OpenCV------几何变换 13.4 图像平滑处理 13.5 图像梯度
池化层 14.1 什么是池化 14.2 池化层的作用 14.3 平均池化 14.4 最大池化 14.5 空间金字塔池化 14.6 ROI Pooling 14.7 最大池化与平均池化是如何进行反向传播的 14.8 卷积层与池化层的区别
支持向量机------SVM 15.1 SVM 15.2 SVM原理 15.3 SVM解决问题的类型 15.4 核函数的作用以及特点 15.5 核函数的表达式 15.6 SVM为什么引入对偶问题 15.7 SVM使用SGD及步骤 15.8 为什么SVM对缺失数据敏感 15.9 SVM怎么防止过拟合
模型评价指标 16.1 回归模型评估常用的方法 16.2 混淆矩阵 16.3 查准率,查全率,F1-score,准确率 16.4 PR曲线图 16.5 AP与mAP
正则优化函数 17.1 什么是过拟合和欠拟合 17.2 解决过拟合和欠拟合的方法有哪些 17.3 什么是正则化? 17.4 L1与L2为什么对于特征选择有着不同方式 17.5 正则化有什么作用 17.6 介绍一下BN 17.7 BN训练与测试有什么不同 17.8 BN/LN/IN/GN区别
特征工程相关理论 18.1 特征工程有哪些 18.2 遇到缺值的情况如何处理 18.3 机器学习中解决样本不均衡问题的方法 18.4 深度学习中解决样本不均衡问题的方法 18.5 常见的特征筛选方法 18.6 特征选择的目的 18.7 训练时出现Nan的原因 18.8 怎么找出相似性高的特征并去掉
降维 19.1 怎样避免维数灾难? 19.2 降维的必要性? 19.3 降维有什么意义? 19.4 PCA主成分分析? 19.5 PCA核心思想? 19.6 如何得到包含最大差异性的主成分方向? 19.7 特征值分解矩阵 19.8 SVD分解矩阵? 19.9 PCA算法流程总结? 19.10 PCA核心思想 19.11 PCA降维之后的维度怎么确定? 19.12 PCA有什么优缺点? 19.13 线性判别分析LDA? 19.14 线性判别分析LDA核心思想? 19.15 LDA的优缺点? 19.16 PCA和LDA的对比
模型优化 21.1 你知道的模型压缩方法有哪些? 21.2 模型压缩的作用与意义 21.3 谈谈低秩近似 21.4 剪枝与稀疏约束 21.5 参数量化的优缺点 21.6 你了解知识蒸馏(Knowledge Distillation)吗 21.7 降低网络复杂度但不影响精度的方法有哪些 21.8 聊聊TensorRT加速原理
集成学习 22.1 集成学习方法有哪些? 22.2 介绍一下Boosting算法 22.3 介绍一下Bagging算法 22.4 分别介绍一下AdaBoost、GBDT、XGboost、LightGBM、RF算法 22.5 Adaboost的优缺点 22.6 LightGBM与XGBoost的区别 22.7 XGBoost、GBDT的区别 22.8 随机森林与GBDT区别 22.9 GBDT算法步骤 22.10 随机森林(Random Forest)中的"随机"体现在哪些方面
贝叶斯网络 23.1 先验概率与后验概率是怎么回事 23.2 极大似然估计的原理 23.3 极大似然估计 23.4 朴素贝叶斯 23.5 怎么理解朴素贝叶斯的"朴素" 23.6 朴素贝叶斯中有什么具体应用 23.7 举例理解朴素贝叶斯分类器(最浅显易懂的经典案例) 23.8 什么是拉普拉斯平滑法

此外我也更新了YOLOv5和YOLOv8涨点相关的一些技巧,大家有兴趣的话可以查看

专栏地址YOLOv5入门 + 改进涨点【点击即可跳转】

专栏地址:YOLOv8改进有效涨点【点击即可跳转】

憧憬

未来,我对职业规划和创作规划有如下憧憬:

  • 职业规划:希望能够在技术领域继续深耕,成为一名资深的技术专家。

  • 创作规划:计划继续写作,覆盖更多的技术话题,帮助更多的人,同时提升自己的写作水平。


发布这篇文章在里程碑专区,不仅是对过去的一种总结,也是对未来的一种激励。希望通过我的分享,能够激励更多的创作者坚持下去。

成为创作者的这段旅程,充满了意想不到的收获和感动。从最初的几篇文章,到现在的上千粉丝,每一次点击、每一个赞、每一条评论,都如涓涓细流,汇成了我前行的动力。在这过程中,我不仅收获了知识和技能,更收获了友情和支持。

记得第一次收到读者的正面反馈时,那种激动与满足至今难忘;每当看到自己的文章帮助了他人,内心总有一种说不出的喜悦。通过创作,我结识了许多志同道合的朋友,我们相互扶持,共同成长。这份情谊,是我在创作之路上最大的财富。

在忙碌的生活中,我努力平衡工作、学习和创作。有时也会感到疲惫,但每当想起那些关注我的读者,想起那些因为我的文章而解决了问题的人,我便重新充满了力量。创作,已经不仅仅是一种爱好,它是我生活的一部分,是我表达自己、帮助他人、实现自我价值的重要途径。

展望未来,我满怀希望。希望能继续在技术的道路上不断探索,不断创新;希望通过更多的作品,触及更多人的心灵,点燃更多人的梦想。每一步的努力,都是为了更美好的明天,每一次的创作,都是为了更加光辉的未来。

感谢所有支持我的人,感谢每一个阅读过我文章的人,因为有你们,我的创作之路不再孤单;因为有你们,我相信,一切都会越来越好。让我们一起,继续这段充满希望和感动的旅程。

相关推荐
Ops菜鸟(Xu JieHao)6 天前
我的创作纪念日300天
创作者纪念日·300天创作纪念日
暴力的bug制造机5 个月前
我的创作纪念日&&学期总结
程序人生·创作者纪念日·学期总结
A-刘晨阳8 个月前
【创作者纪念日1095天3年】我的创作纪念日
创作者纪念日
D@.1 年前
我的创作纪念日
程序人生·总结·里程碑