YOLOv4

YOLOv4

@AikenHong 20200726

基于YOLO v4 掌握一些CV方面训练的Trick,同时针对Typora的使用进行一个熟悉掌握。GITHUB CODE

一些相关的参考资料

⚡️https://zhuanlan.zhihu.com/p/150127712

机器之心YOLOv4

⚡️https://www.zhihu.com/question/390191723/answer/1177584901

本文中一些其他的收获

• 其他可替代的Object Detection的SOTA算法有哪些

• BoS,BoF方法

• 简直是一个Tricks的综述

Abstract

本文对近期再CNN上的一些Feature方法进行了尝试组合,并实现了新的SOTA,其实就是一些通用的**Trick**的组合尝试,包括

• 加权残差连接(WRC)

• Cross-Stage-Partial-connection,CSP

• Cross mini-Batch Normalization,CmBN


OW Object Detector

OW Object Detector

@Aiken 2021

框架撞车系列,主要看看这一篇论文中怎么解决如下的问题👇,并从中借鉴和优化的我框架设计

思路分析

Motivation

模型实现的主要的两个TASK:

  1. Open Set Learning : 在没有明确监督的时候,将尚未引入的目标类别识别为未知
  2. Incremental Learning:类别增量学习

实现这两个问题的主要思路:

  • 自动标注:借鉴RPN的class-agnostic,以及检测和分类的显著性指标的差异,找到并自动标注NewClass
  • 对比聚类:使用prototype feature来进行聚类,同时计算Distance损失
    it seems like contain a unknown prototype.
  • energy based:亥姆霍兹自由能公式?

image-20210412171723896

ENERGY BASED


Attention Mechanism
EfficientNet

EfficientNet

Tags: Paper
URL1: https://arxiv.org/pdf/1905.11946.pdf
URL2: https://arxiv.org/pdf/2104.00298.pdf

提出了一种模型缩放策略,如何更高效的平衡网络的深度、宽度、和图片分辨率
**1. Efficient Net: Rethinking Model Scaling for Convolutional Neural Networks

  1. EfficientNetV2: Smaller Models and Faster Training**

@Aiken H 2021 find detail to code his

Efficient Net V1

除了提出了缩放策略以外,还使用神经架构搜索还建立了一个新的baseline network,得到了一系列模型。

平衡网络宽度、深度、分辨率至关重要,这种平衡可以通过简单的恒定比率缩放维度来实现,于是我们提出了一种简单有效的复合缩放方法。

https://raw.githubusercontent.com/AikenH/md-image/master/img/image-20210610180603496.png

复合缩放的物理意义:输入图像更大的话就需要更多层来增加感受野和更多通道,从而能在更大的图像上捕获更多细粒度的图案,而宽度和深度(对于表达能力来说很重要)之间也存在着一定的关系,“我们”是第一个对此进行了建模的。

从各个维度单独的进行缩放能发现都存在着增益瓶颈,如何去得到这么一个合适的等比缩放增益


Astar

Astar

A* 是一种在平面图形上计算最优路径的方法,通常用来做 2D 游戏的最短寻路,该算法是一种 Dijkstra 算法的变体,使用启发式的策略来提高算法的搜索效率。

wikipediamediumpythonf

基本思想

基于启发式的方法,基于BFS去做最短路径搜索,借助类似Manhattan距离作为启发,每次加入后续的多个点,然后按照后续点的属性去排序,不断的加入close的区间,直到第一次遍历到终点就是最短的路径。

f代表的是经过当前点,从起点到最终点的距离,g代表的是从起点到当前节点的距离,h代表的是启发式方法到终点的距离。

维护三个list:open(候选列表)、close(状态确定的列表)、children(等待操作的列表)

首先用 bfs 的方法,找到当前节点的可达后续节点,将这些节点加入 children,确定 child 不在 close_list 中后(即在 open 中)则判断哪个是最优解,然后更新 openlist 和 closelist 。

即:每次遍历的当前节点都从 open 中总距离最小的选,然后放入 close。直到 openlist 为空。


Docker Configuration00 Install on WSL2

Docker Configuration00 Install on WSL2

基于 WSL2 对于 Docker 的适配,本文介绍 Windows 下利用 WSL2 对 Docker 的安装和部署,对于 WSL2 的安装可以参考上篇文章: Windows Configuration01 WSL2 - AikenH Blogs

Install Docker on Windows

该部分主要介绍以下几内容:安装,存储盘迁移,连接 WSL2 发行版,完成了这几步之后就可以畅游 Docker 世界了。

前置:先安装好一个 WSL2 的发行版

首先,官网 Docker: 下载 Docker Desktop for windows,安装基于 WSL2 的 docker,安装完成后 Docker 的发行版和存储目录会默认存放在,该地址可以用来确认后续的迁移状态。

  • Docker-Desktop/data:%LOCALAPPDATA%/Docker/wsl
  • WSL2:%LOCALAPPDATA%/packages/c......./local_state

Colab 使用的问题记录

Colab 使用的问题记录

@Aiken 2020

在使用Google Colab的时候会有一些常见的使用错误,然后我们记录一些常见的错误的解决方案,方便后续使用。

INDEX:

  • 命令行参数的输入问题

  • tensorboard的执行方法

    1
    2
    3
    # 在colab中写的时候要把前面的符号也写上
    %load_ext tensorboard
    %tensorboard --logdir './runs'
  • command命令的使用:包括库安装和卸载之类的。
    主要就是在命令前+!

    1
    2
    3
    4
    5
    !/opt/bin/nvidia-smi
    # 下面顺便解决了一下
    # ImportError: cannot import name 'PILLOW_VERSION'(版本问题)
    !pip uninstall pillow
    !pip install pillow==5.2.0

Windows Configuration01 WSL2

Windows Configuration01 WSL2

WSL(Windows Subsystem Linux) 将 Linux 环境部署在 Windows 中,Linux 环境在补全了 Windows 开发上的不足之外(Bash 等),还有以下的几个特性极大的便利开发和日常使用,因此强烈推荐启用并安装。

  • win11 中 wsl2 已经支持相应主机的 cuda,便利了机器学习的开发;
  • 子系统中通过/mnt 挂载了 windows 的磁盘,可以通过子系统访问和管理 windows 环境;
  • windows 资源管理器可访问和管理子系统中的文件
  • 支持 windows 打开子系统中的 GUI 应用

无论是将 windows 和 linux 分别作为日常和开发的环境来隔离,还是两个协同去做开发和日常,都是一个比较不错的选择,下面就介绍一下如何安装和使用 WSL2。

  • 开始之前可以参考 windows terminal 安装一下这个官方的终端模拟器,在 windows 上的表现是比较优秀的
  • 如果是考虑在 windows 环境开发的话,也可以参考这个[windows],里面有我个人推荐的一些应用。

启用并安装 WSL2

安装和启用 WSL2 需要在 windows 的服务中勾选 Hyper-V 和 Windows Subsystem Linux 支持两个选项,具体操作如下:

  1. Win + S 搜索 “功能”,打开启用或关闭 windows 功能
  2. 启用对应功能,功能安装完毕后即可
    image.png
    image.png
  3. 安装 linux 发行版可以在 windows store 安装,也可以通过如下的命令进行安装:
1
2
3
4
5
6
7
# 列出对应的发行版
wsl -l -o
# 选择相应的发行版进行安装
wsl --install -d <Distribution Name>
# 如果当前的WSL是1版本,更新到2
wsl -l -v
wsl --set-default-version 2

Windows Configuration00 系统初始配置

Windows Configuration00 系统初始配置

@AikenHong 2020

本文介绍个人的 windows 开发环境搭建(包括一些环境安装、功能启用)以及一些使用的小 tips。

软件推荐

Windows 的账号同步功能善用,减少在环境迁移的时候对浏览器插件和 Vscode 插件的繁琐同步步骤。

同时对 Onedrive 和外接硬盘的应用可以很好的减轻备份的负担,在网络环境对 Onedrive 友好的时候还是推荐使用,在 Mac 和 Windows 上都有一个比较好的体验。

一些基础的软件

Software Type Free? & source
Powertorys system enhance y & github
Translucent beautify y & Microsoft Store
Snipaste system enhance y & offical site
Clash for windows proxy y & github
everything search-file y & offical site
Potplayer Player y & offical site
Twinkle Tray screen control y & offical site
7 zip system enhanc y & offical site
Zerotier NAT y & offical site
Nerd Font Font y & offical site
Wallpaper Engine beautify n & steam
MyDockerFinder beautify n & steam
IDM Download n & offical site

开发工具

Software Type Free? & source
Windows Terminal Terminal Simulator y & Microsoft Store
Powershell 7 Shell y & Github
VsCode Editor y & Offical Site
Visual Studio IDE y & Offical Site
Interllij IDEA IDE n & Offical Site
Git - -
Nodejs - -
Anaconda - -

文档编写

Software Type Free & Source
Obsidian Markdown Editor y & offical-site
Typora Markdown Editor n & offical-site
Picgo Image Upload y & offical-site
CopyTranslate Translate y & offical-site
Mathpix Snipping Tool Latex Formulate - & offical-site

Daily

Software Free & Source
Office n & offical-site
Tim y & offical-site
WeChat y & offical-site
OneDrive y & offical-site
Steam - & offical-site
Epic - & offical-site
yy y & offical-site
uu n & offical-site
网易云 y & offical-site

开发环境配置


Build Gitbook

Build Gitbook

Gitbook命令行工具,基于Markdown编写文档,后续基于Github发布该Blog

笔记的构建流程:

Chapter1 Install

安装Gitbook之前我们需要安装node.jsnpm的依赖,使用npm安装gitbook

  • 首先安装Install Nodejs,Npm

    Windows:Node.js (nodejs.org)

    Linux:

    1
    2
    3
    4
    5
    6
    # add & update apt source before install nodejs.
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get update

    # install nodejs after that.
    sudo apt-get install -y nodejs
  • 然后安装gitbook

    1
    2
    3
    4
    5
    npm install gitbook-cli -g 

    gitbook fetch beta # 安装历史版本
    gitbook ls-remote # 列举可以下载的版本

  • 检查Gitbook版本

    1
    gitbook -V