自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 nvdia triton server运行pt文件

triton server默认都是tensorrt推理。但也会出现有操作不支持,导致无法转模型为engine的情况。可以选择直接运行pytorch的pt文件,以下为操作步骤。1.pytorch后端环境编译步骤原理是使用 pytorch C++ API运行pt文件模型。安装依赖项apt-get install patchelf rapidjson-dev python3-dev构建NGC 的 PyTorch 容器。例如,构建一个使用 NGC 21.02 版本的 PyTor.

2021-08-20 14:48:41 1187

原创 unet pytorch源码分析

https://github.com/milesial/Pytorch-UNet网络整体结构代码""" Full assembly of the parts to form the complete network """import torch.nn.functional as Ffrom .unet_parts import *class UNet(nn.Module): def __init__(self, n_channels, n_classes, bil..

2021-05-24 17:58:35 2678

原创 detectron2 安装配置

安装前准备python ≥3.6 PyTorch ≥ 1.5python3可查看python版本pip list可查看pytorch版本gcc和g++ 1 sudo apt-get install build-essential 查看cuda 版本是否与torch版本对应,如不对应则切换cuda版本 1 2 3 sudo rm -rf /usr/local/cuda #删除之前的软连接 sud

2021-05-11 16:56:36 233

原创 unet项目全流程,标注,训练,转tensorrt

柴犬/unet项目全流程 - 码云 - 开源中国 (gitee.com)

2021-05-11 16:35:11 708 5

原创 问题解决心路历程:yolov4 tesnorrt client 运行yolov5engine时预测输出不对

经过同事提醒发现是预处理的问题。yolov4def preprocess(image,input_height,input_width): image = cv2.resize(image, ( input_width,input_height)) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) image = np.transpose(np.array(image, dtype=np.float32, order=..

2021-05-11 09:31:58 352

原创 docker file 编写教程

docker build命令用于从Dockerfile构建映像。-f :指定要使用的Dockerfile路径;--tag, -t:镜像的名字及标签;示例:docker build -f /path/to/a/Dockerfiledocker build -t SOLO docker/docker file结构FROM:指定基础镜像,必须为第一个命令FROM pytorch/pytorch:1.3-cuda10.1-cudnn7-de...

2021-05-11 09:31:33 680

原创 阈值分割算法效果测试

直方图阈值分割一般图像都有双峰性,一个峰是前景一个是后景。一般取这两个峰值之间的最小值为图片的二值化的阈值从而二值化图片值得一提的是,对于任何一张图像,它的直方图中如果存在较为明显的双峰,用直方图分割技术法可以达到很好的效果,否则,达到的效果会很不理想。所以建议先绘制直方图看看。import numpy as npimport cv2import osdef calcGrayHist(image): ''' 统计像素值 ..

2021-05-11 09:19:26 497 1

原创 问题解决心路历程:tensorrt 与 原模型精度相差过大

今天用pytorch训练了一份resnet18的模型,用于工作服检测。但是把模型转为tensorrt engine部署后,发现运行起来预测结果完全错误。1.一开始以为是过拟合,但是用训练数据预测,发现还是不对。2.这时开始怀疑是自己模型结构哪里写错了,但是编译已经通过了,也就是自己写的tensorrt模型,完美接收了来自pytorch的resnet18的参数。发现自己写的tensorrt版本的resnet结构,输入数据是224*224,pytorch版是128*64。..

2021-05-10 17:16:25 3896 1

原创 开源实例分割软件labelme使用教程

项目源码github源码地址gitee拷贝的源码地址 (上面的加载慢用这个)安装(windows为例)先安装conda,这里推荐minicondaminiconda安装教程见如下文章http://doge.ac.cn/?p=2840安装完毕后用conda安装labelme# python3conda create --name=labelme python=3.6conda activate labelmepip install l..

2021-05-10 17:13:50 670

原创 安装pycocotools报错

报了一长串错Building wheel for pycocotools (setup.py) ... error ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-xktd0rpk/pycocotools_12febb60ea2840848..

2021-05-10 17:11:28 3775

原创 git 基础操作合集

1.创建项目1.git init 将此目录转换为git可管理的仓库2.git config --global user.name "xx" git config --global user.email "xx"(都配也行)3.git add . 文件添加到暂存区(stage)4.git commit -m "xxx" 文件提交至本地仓库2.上传更改git statusgit add .git commit -m ""git push origin maste..

2021-05-10 17:10:19 75

原创 selenium class_name带空格,无法获取到元素

错误原因元素的class_name带空格,无法通过之前的方法获取到元素今天写一个网站自动化测试脚本时driver.find_elements_by_class_name('el-tooltip.operator.open')[2].click()driver.find_elements_by_css_selector('el-tooltip operator open')[2].click()driver.find_elements_by_css_selector('el-..

2021-05-10 17:08:33 1018

原创 opencv puttext 中文乱码解决方法

解决方法先转成PIL的图片格式,再用PIL绘制字体,然后再转回opencv图片格式定义方法from PIL import Image, ImageDraw, ImageFontdef cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20): if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型 img = Image..

2021-05-10 17:07:12 1988 2

原创 urllib防超时,递归下载图片

import urllibimport urllib.request as requestdef download(url, name): try: urllib.request.urlretrieve(url, name) except Exception as e: print(e) download(url, name)with open("hk.txt") as f: url_list = f.read().sp.

2021-05-10 17:05:30 92

原创 语义分割,实例分割,全景分割示例

b 语义分割c 实例分割d 全景分割全景分割 = 语义分割 + 实例分割(以后谁再问我,直接发这个图)

2021-05-10 17:03:16 348

原创 pytorch tensorboard使用的简单教程

1.编写先初始化from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter(comment=f'LR_{lr}_BS_{batch_size}_SCALE_{img_scale}')散点图writer.add_scalar('Loss/train', loss.item(), global_step) #loss 直方图writer.add_histogram('w..

2021-05-10 17:00:28 1183

原创 这些年炼丹时的低级失误,持续反省中

预处理1.ImageFolder读取时需要补零ImageFolder 读取顺序之坑 – 柴犬的犬舍 (doge.ac.cn)2.通道转换用transpose,而不是reshape(我是傻逼)np.reshape()和np.transpose() – 柴犬的犬舍 (doge.ac.cn)3.pytorch ToTensor对部署的影响transforms.ToTensor()操作之后,图像会从[0, 255] -> [0.0,1.0]部署时需要..

2021-05-10 16:58:17 103

原创 pyqt5 pyuic生成py文件报错Error in input file: no element found: line 1, column 0

这一步一定要选中ui文件之后再点pyuic,不然会报错这时候运行的命令是pyuic5.exe main.py -o main.py而不是pyuic5.exe xxx.py -o xxx.ui(因为很多人pyuic的arguments都是$FileName$ -o $FileNameWithoutExtension$.py,即通过xxx.ui生成xxx.py)报错是提示找不到ui文件...

2020-08-26 15:39:15 6644 1

原创 在训练CNN时,loss稳定在-log(类别数)

在训练CNN时,loss稳定在log(类别数),是存在什么问题? 比如说二分类误差稳定在0.69,十分类误差稳定在2.302首先,0.69, 2.302表明网络就是在随机的猜,这里一般都是因为用了交叉熵损失函数这里yi往往是1,最后就是1*log(yhat)而如果是随机猜,预测值会接近1/n,即最后为log(1/n)=-log(n)1.检查是否代码问题,是否有bug;调参数、learning rate等看看,也很有可能先开始梯度太大,weight跑到了很远的地方(或者直接跑到了

2020-08-05 16:04:58 1100

原创 Python __call__详解

问题今天看自己调用EfficientNet的源码发现了这么一段class DogeNet(nn.Module): def __init__(self): super(DogeNet, self).__init__() model = EfficientNet.from_pretrained('efficientnet-b4') model._fc = nn.Linear(1792, 2) self.effici..

2020-08-04 16:15:03 854

原创 RCNN家族简短总结

传统算法全部滑窗一遍太慢,所以有了RCNN,先筛选一部分滑窗的候选区,再全都过卷积分类回归。RCNN每个候选区都卷积一次太慢,所以Fast RCNN直接先卷积,然后在特征图上用selective search找候选区域,然后再分类回归。Fast RCNN找候选区域不是神经网络算法,太慢了,所以有了Faster RCNN,用卷积神经网络找候选区域。...

2020-07-31 14:46:30 168

原创 感受野的计算

感受野的概念之前提到,vgg的主要亮点在于堆叠多个3x3卷积核来代替7x7的卷积核减少了所需的参数量,在保持感受野相同的情况下,提升了网络的深度,在一定程度上提升了神经网络的效果这里输出层层感受野指的是该层每个单元对应输入图像上的区域大小感受野大小计算RFi+1为下一层卷积层感受野,RFi为当前卷积层感受野大小。k为卷积核大小,s为步长。这里和步长相关,是因为如下图所示。如果,以卷积核正中间的点为中心。周围的点所对应的区域,都是分别往不同方向移动步长个单位。..

2020-07-25 20:49:30 1016

原创 maxout对参数量的影响

相当于在输出前面又加了一层,该层有K个神经元,最后只输出这些神经元中最高的值即z1=w1*x+b1z2=w2*x+b2z3=w3*x+b3z4=w4*x+b4z5=w5*x+b5out=max(z1,z2,z3,z4,z5)缺点会直接导致参数量变为k倍,现在已经很少有用的,基本被relu替代...

2020-07-25 20:49:00 181

原创 单个卷积层的计算量为多少

最终一个卷积核的卷积如下所示(下式最主要的是按照特征图上每个点的形成来理解)比如一张图时224*224*3的图,一个卷积层有256个3*3的卷积核在它上面进行卷积,每个卷积核的每次卷积都会进行如上图的一次操作,即k1x1+k2x2+k3x3+......k9x9+b,一个卷积核有3*3个点,因此最终每个卷积核在每个通道上进行9次卷积操作,而输入的图像有三个通道,最终进行了3*3*3次卷积,一共有256个卷积核,最终为3*3*3*256验算以上理论:以alexnet第...

2020-07-25 20:48:01 874

原创 alexnet和vgg为什么参数量过多

卷积层以上图的模型为例,卷积层的参数个数只有(卷积核的宽*卷积核的高+1)*输出通道数,其中括号内卷积核的宽*卷积核的高是属于权重值的,1是属于偏置值的。下面只用权重估算如第一层卷积层只有7*7*3*64=9408个参数第二层卷积层只有3*3*64*192=110592个参数全连接层而全连接层则是将延展成一维的特征图维度为(特征图宽*特征图高*输入通道数)*1直接乘上维度为 (特征图宽*特征图高*输入通道数)*全连接层输出通道数 的矩阵 ,最终这个矩阵参数量为(特...

2020-07-25 20:47:13 1106

原创 pytorch ImageFolder 读取顺序之坑

ImageFolder读文件如果读的是1.jpg,2.jpg........1000.jpg这种,千万要注意最后读取顺序,因为肯定会读成这样这时候就需要写个脚本给他补零,修正读取顺序import ospath = 'test/AD&CN'file_list = os.listdir(path)for file in file_list: # 补0 10表示补0后名字共10位 filename = file.zfill(10) # print(filena

2020-07-25 20:44:00 2070 4

原创 tensorrt7.0在windows环境下安装方式(来自nvidia官方文档精简后)

CUDA 10.2或11.0 RC,cudnn8.0,以上都安装完成的情况下开始安装tensorrt。怎么安装参考之前安装pytorch的教程。先去nvidia官网下载Windows版本匹配的TensorRT zip文件。https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#downloading解压zip文件1.7.x.x.x(含TensorRT版本)2.cuda-x.x和c..

2020-07-24 10:50:37 2297 1

原创 l2正则化系数过高导致梯度消失

lamda = 3 # 正则化惩罚系数 w_grad=(np.dot(self.input.T, grad) + (self.lamda * self.w))/self.batch_size这里把正则化系数设置为3如果采用4层relu隐藏层的神经网络,将会直接导致梯度消失1%| | 2/200 [00:17<28:09, 8.53s/it]loss为0.23035...

2020-04-05 17:29:22 1694

原创 numpy手写mlp

直接提供代码一共分四个文件trainer.py用于接受参数开始训练layer.py用于定义每个层的属性和功能net.py用于构建整个神经网络mlp用于读取mnist数据集并进行训练记得把trainer,layer,net这三个文件拷到同一个文件夹下,方便mlp文件调用这三个文件的类DogeTrainer.pyfrom dogel...

2020-04-02 14:28:20 2122 1

原创 numpy手写softmax回归

softmax诞生原因线性回归主要用于连续值预测,即回归问题,比如判定一个东西是鸡的概率是多少而当模型需要预测多个离散值时,即分类问题,比如判定一个东西是鸡还是鹅还是鸭此时就需要多个输出单元,并且修改运算方式从而方便预测和训练,这也就是softmax层诞生的原因这里使用的是minist手写数字识别数据集1.首先通过Pytorch读取数据集def load_data(): tra...

2020-04-01 14:49:26 1507

原创 Zigbee 8051环境 开发笔记- 1 环境配置

首先是安装IAR 开发环境,全套包括IAR注册机都在https://pan.baidu.com/s/1ge4Nomn#list/path=%2F   安装完之后打开 第一步 project - create new project ,然后选择选择Empty project,单击OK保存,保存完之后,就能看到工程,然后File→Save W

2017-07-11 11:22:44 488

原创 山东科技大学小学期数据库大作业

一天写完了。。。。。挂这里就当是造福后人了,虽然写的这么乱估计也没什么人看,就当是见笑了选题:¨CREATE TABLE 表名> (列名>数据类型>[列完整性约束条件>][,列名>数据类型>[列完整性约束条件>]…][,表完整性约束条件>])¨ALTER TABLE 表名> [ADD 新列名>数据类型>[列完整性约束>]] [DROP列完整性约束名>][MODIFY 列名>

2017-06-15 17:03:42 3923 3

原创 python 将py脚本打包生成exe可执行文件

python 环境 2.7.4最终效果如下使用 了 pyinstaller 这里打包一个exe只需两步第一步python 环境下 命令行直接 pip install pyinstaller第二步下载完成后,命令行pyinstaller  -F 文件名 即可生成exe文件,文件一般在c/user/  你的用户名     /dist/下如果要修改图标

2017-06-15 16:20:45 3500

原创 android studio Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]

First,when i found this problem when i ran my application with Android Studio.Then,i clicked "OK".But i failed  in installing my application .So i tried to solve the problem in five wa

2017-06-08 15:23:19 438

原创 补5-22博客 获取点击坐标并将控件移动到点击位置

package doge.healthcare.activity;import android.content.Context;import android.content.SharedPreferences;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import

2017-05-23 10:41:41 608 1

原创 android 创建底部导航栏 (radiogroup+fragment)

//原本的类package doge.healthcare.Utils;import android.app.Activity;import android.app.Fragment;import android.app.FragmentTransaction;import android.content.Context;import android.graphics.drawabl

2017-05-21 21:13:20 615

原创 android中国天气网api获取天气信息并解析

package doge.healthcare.Utils;import android.os.Handler;import android.os.Message;import android.util.Log;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;imp

2017-05-20 17:05:42 2118

原创 android shape 属性详细解析(mmp这波整理完以后都不用麻烦了)

<corners android:radius="180dp" android:topLeftRadius="180dp" android:topRightRadius="180dp" android:bottomLeftRadius="180dp" android:bottomRightRadius="180dp"/

2017-05-19 16:57:32 871

原创 Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan r

安卓6.0多了新的特性,也就是打开app时,经常会提醒你是否允许xx应用获取xx权限,这就是新特性的表现。也就是说,有的权限,光是在manifest里获取还不够,还要让用户手动允许才能获得这项权限如果只在manifest里面写,而不让用户手动获取,则会崩溃并报类似Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permis

2017-05-18 22:08:54 5793 1

原创 android fragment 生命周期引起的错误及思考

今天调试app时,发现了一个bug,即自己的app中有一个控件是隐藏的,点击按钮后展开,而我在这个fragment 的onstart 函数中加入了对这个控件的长度的测量,代码如下:int w1 = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h1 = View.Measure

2017-05-17 09:46:27 343

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除