Skip to content

Instantly share code, notes, and snippets.

View YimianDai's full-sized avatar
💭
I may be slow to respond.

Yimian Dai YimianDai

💭
I may be slow to respond.
View GitHub Profile

YOLO v1

YOLO 太典型的 one-stage method,可谓简单粗暴

放弃了 Region Proposal,直接划分为 S * S 个grid

@YimianDai
YimianDai / research.md
Last active August 10, 2019 00:46
Notes on Research

Contents

  • General CV
    • Model
      • Operator
      • Image Classification
      • Object Detection
      • Image Segmentation
  • Outlier Detection
@YimianDai
YimianDai / Noun-Discrimination.md
Last active August 2, 2019 23:19
名词辨析

Localization vs Detection

Localization 虽说都要给出 Bounding Box,但是不同于 Detection 有专门的 Detection 数据集,Localization 用的还是 Classification 的数据集,也就是每幅图像中只有一个占据主要区域面积的物体,而 Detection 的数据集中一幅图像内可以有任意多个物体,也可以没有。

ICLR-2014-Overfeat 那篇论文提到了两者的区别。

Loss vs Metric

  1. Loss 要可微分,这样才可以做 SGD;Metric 则没有这个要求
@YimianDai
YimianDai / SoftmaxCrossEntropyLoss.md
Last active August 4, 2019 06:08
SoftmaxCrossEntropyLoss

SoftmaxCrossEntropyLoss

__init__

    def __init__(self, sparse_label=True, batch_axis=0, ignore_label=-1,
                 size_average=True, **kwargs):
@YimianDai
YimianDai / SSDMultiBoxLoss.md
Created July 29, 2019 23:06
SSDMultiBoxLoss
@YimianDai
YimianDai / MixupDetection.md
Last active May 22, 2024 03:21
MixupDetection

首先需要明确的是 MixupDetection 这个类是在 VOCDetection 类之上的一个 wrapper,因为 mixup 这个技巧/方法可以简单的认为是一个 Data Augmentation 的手段。传统的 Data Augmentation 手段:裁剪、翻转 / 旋转、尺度变化,mixup 的做法在于将两幅图像按照随机权重相加。

MixupDetection 的实现考虑了两幅图像的大小可能是不同的,因此 mixup 后的图像为最大的图像,因此代码中 mixup 图像由下得到

        height = max(img1.shape[0], img2.shape[0])
        width = max(img1.shape[1], img2.shape[1])
        mix_img = mx.nd.zeros(shape=(height, width, 3), dtype='float32')
@YimianDai
YimianDai / Submit-PR.md
Last active June 13, 2024 03:14
向开源项目提交 Pull Request

步骤

Part 1 - Local Repo Config

  1. 先 Fork 感兴趣项目,即 dmlc/gluon-cv
  2. Clone 到本地,git clone [email protected]:YimianDai/gluon-cv.git
  3. 添加源项目 dmlc/gluon-cv 作为 upstream 源,git remote add upstream https://github.com/dmlc/gluon-cv.git
  4. 禁止直接向 upstream 源 push,因为我们不是 dmlc 的人,没有 push 的权限,要提交代码必须通过 Pull Request,git remote set-url --push upstream no_push
  5. 创建并切换到本地的新分支 fixMixSoftmaxCrossEntropyLossgit checkout -b fixMixSoftmaxCrossEntropyLoss
@YimianDai
YimianDai / MixSoftmaxCrossEntropyLoss.md
Last active July 29, 2019 23:28
MixSoftmaxCrossEntropyLoss

MixSoftmaxCrossEntropyLoss

介绍说是 MixSoftmaxCrossEntropyLoss 就是 SoftmaxCrossEntropyLoss2D with Auxiliary Loss,但事实上感觉不止于此。

_aux_forward_aux_mixup_forward 的区别在于,_aux_forward 计算 Loss 是调用的 SoftmaxCrossEntropyLoss,而 _aux_mixup_forward 调用的是 _mixup_forward。那么 _mixup_forward 同普通的 SoftmaxCrossEntropyLoss 有什么区别呢?

_mixup_forward 中的 label1label2 分别指什么? 这里的 mixup 是指 mixup: Beyond Empirical Risk Minimization 这篇论文里的内容。目标检测任务的优化策略 tricks 中有很形象的插图说明。

@YimianDai
YimianDai / notes-on-mxnet.md
Last active September 16, 2019 22:21
Notes on MXNet / Gluon / Gluon-CV

Numpy 和 MXNet 里的的 NDArray 里面的 axis 是和 MATLAB 一样都是列优先的,所以 axis = 0 是每列每列来,axis = 1 则是每行每行来。

NumPy 支持逻辑索引,而 MXNet 的 NDArray 不支持,因此如果要做逻辑索引,需要将其转成 Numpy 数组。

  1. Data
  • Data Transform
@YimianDai
YimianDai / Segmentation-Train.md
Last active April 23, 2020 20:52
GluonCV Segmentation Train Script

Toolbox 既是一种 Blessing,可以让一知半解的我们迅速上手,同时也是一种 Curse,需要考虑很多细节。一点关于 gluon-cv/scripts/segmentation/train.py 的笔记。

  • parse_args
    • model
    • dataset
    • training hyper params
    • cuda and logging
    • checking point
    • evaluation only