Faster R-CNN教程
转载自:Faster R-CNN教程 - CarryPotMan的博客 - 博客频道 - CSDN.NET http://blog.csdn.net/u012891472/article/details/51282809
本教程主要基于Python版本的fasterR-CNN,因为python layer的使用,这个版本会比matlab的版本速度慢10%,但是准确率应该是差不多的。
目前已经实现的有两种方式:
- Alternative training
- Approximate joint training
推荐使用第二种,因为第二种使用的显存更小,而且训练会更快,同时准确率差不多甚至略高一点。
Contents
- 配置环境
- 安装步骤
- Demo
- 建立自己的数据集
- 训练和检测
配置环境
1配置python layers
#In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1
# Unrelatedly, it's also recommended that you use CUDNN
USE_CUDNN := 1
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
2安装几个依赖cython, python-OpenCV,easydict
sudo apt-get install python-opencv
sudo pip install cython easydict
- 1
- 2
- 1
- 2
安装步骤
1克隆工程
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
- 1
- 1
2编译Cython模块
cd $FRCN_ROOT/lib
make
- 1
- 2
- 1
- 2
3编译caffe和pycaffe
cd $FRCN_ROOT/caffe-fast-rcnn
# Now follow the Caffe installation instructions here:
# http://caffe.berkeleyvision.org/installation.html# If you're experienced with Caffe and have all of the requirements installed
# and your Makefile.config in place, then simply do:
make -j8 && make pycaffe
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Demo
安装步骤完成后,就可以运行一下demo了。
cd $FRCN_ROOT
./tools/demo.py
- 1
- 2
- 1
- 2
训练自己的训练集
工程目录简介
首先工程的根目录简单的称为 FRCN_ROOT,可以看到根目录下有以下几个文件夹
- caffe-fast-rcnn
这里是caffe框架目录
- data
用来存放pretrained模型,比如imagenet上的,以及读取文件的cache缓存
- experiments
存放配置文件以及运行的log文件,另外这个目录下有scripts可以用end2end或者alt_opt两种方式训练。
- lib
用来存放一些python接口文件,如其下的datasets主要负责数据库读取,我们接下来的文件都是放在这个目录下的;config负责cnn一些训练的配置选项,建议根据自己的需要在experiment/cfgs/faster_rcnn_end2end.yml文件中进行设置覆盖config.py中的设置。
- models
里面存放了三个模型文件,小型网络的ZF,大型网络VGG16,中型网络VGG_CNN_M_1024。推荐使用VGG16,如果使用端到端的approximate joint training方法,开启CuDNN,只需要3G的显存即可。
- output
这里存放的是训练完成后的输出目录,默认会在faster_rcnn_end2end文件夹下
- tools
里面存放的是训练和测试的Python文件。
创建数据集
接下来我们就要创建自己的数据集了,这部分主要在lib目录里操作。这里下面存在3个目录:
- datasets
在这里修改读写数据的接口主要是datasets目录下
- fast_rcnn
主要存放的是python的训练和测试脚本,以及训练的配置文件config.py
- nms
做非极大抑制的部分,有gpu和cpu两种实现方式
- roi_data_layer
主要是一些ROI处理操作
- rpn
这就是RPN的核心代码部分,有生成proposals和anchor的方法
-
transform
-
utils
1构建自己的IMDB子类
1.1文件概述
可有看到datasets目录下主要有三个文件,分别是
- factory.py
- imdb.py
- pascal_voc.py
factory.py 是个工厂类,用类生成imdb类并且返回数据库共网络训练和测试使用;imdb.py 这里是数据库读写类的基类,封装了许多db的操作,但是具体的一些文件读写需要继承继续读写;pascal_voc.py Ross在这里用pascal_voc.py这个类来操作。
1.2读取文件函数分析
接下来我来介绍一下pasca_voc.py这个文件,我们主要是基于这个文件进行修改,里面有几个重要的函数需要修改
- def init(self, image_set, year, devkit_path=None)
这个是初始化函数,它对应着的是pascal_voc的数据集访问格式,其实我们将其接口修改的更简单一点。 - def image_path_at(self, i)
根据第i个图像样本返回其对应的path,其调用了image_path_from_index(self, index)作为其具体实现 - def image_path_from_index(self, index)
实现了 image_path的具体功能 - def _load_image_set_index(self)
加载了样本的list文件 - def _get_default_path(self)
获得数据集地址 - def gt_roidb(self)
读取并返回ground_truth的db - def selective_search_roidb
读取并返回ROI的db,这个是fast rcnn用的,faster版本的不用管这个函数。 - def _load_selective_search_roidb(self, gt_roidb)
加载预选框的文件 - def selective_search_IJCV_roidb(self)
在这里调用读取Ground_truth和ROI db并将db合并 - def _load_selective_search_IJCV_roidb(self, gt_roidb)
这里是专门读取作者在IJCV上用的dataset - def _load_pascal_annotation(self, index)
这个函数是读取gt的具体实现 - def _write_voc_results_file(self, all_boxes)
voc的检测结果写入到文件 - def _do_matlab_eval(self, comp_id, output_dir=’output’)
根据matlab的evluation接口来做结果的分析 - def evaluate_detections
其调用了_do_matlab_eval - def competition_mode
设置competitoin_mode,加了一些噪点
1.3训练数据格式
在我的检测任务里,我主要是在SED数据集上做行人检测,因此我这里只有background 和person 两类物体,为了操作方便,我像pascal_voc数据集里面一样每个图像用一个xml来标注。如果大家不知道怎么生成xml文件,可以用这个工具 labelImg?
这里我要特别提醒一下大家,一定要注意坐标格式,一定要注意坐标格式,一定要注意坐标格式,重要的事情说三遍!!!要不然你会犯很多错误都会是因为坐标不一致引起的报错。
1.4修改读取接口
这里是原始的pascal_voc的init函数,在这里,由于我们自己的数据集往往比voc的数据集要更简单的一些,在作者代码里面用了很多的路径拼接,我们不用去迎合他的格式,将这些操作简单化即可,在这里我会一一列举每个我修改过的函数。这里按照文件中的顺序排列。
修改后的初始化函数:
class hs(imdb):def __init__(self, image_set, devkit_path=None): # modifiedimdb.__init__(self, image_set)self._image_set = image_setself._devkit_path = devkit_path #datasets路径self._data_path = os.path.join(self._devkit_path,image_set) #图片文件夹路径self._classes = ('__background__', # always index 0'person') #two classesself._class_to_ind = dict(zip(self.classes, xrange(self.num_classes))) # form the dict{'__background__':'0','person':'1'}self._image_ext = '.jpg'self._image_index = self._load_image_set_index('ImageList.txt')# Default to roidb handlerself._roidb_handler = self.selective_search_roidbself._salt = str(uuid.uuid4())self._comp_id = 'comp4'# PASCAL specific config optionsself.config = {'cleanup' : True,'use_salt' : True,'use_diff' : False,'matlab_eval' : False,'rpn_file' : None,'min_size' : 16} #小于16个像素的框扔掉assert os.path.exists(self._devkit_path), \'VOCdevkit path does not exist: {}'.format(self._devkit_path)assert os.path.exists(self._data_path), \'Path does not exist: {}'.format(self._data_path)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
修改后的image_path_from_index:
def image_path_from_index(self, index): #modified"""Construct an image path from the image's "index" identifier."""image_path = os.path.join(self._data_path,index +'.jpg')assert os.path.exists(image_path), \'Path does not exist: {}'.format(image_path)return image_path
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
修改后的_load_image_set_index:
def _load_image_set_index(self,imagelist): # modified"""Load the indexes listed in this dataset's image set file."""# Example path to image set file:# self._devkit_path + /VOCdevkit2007/VOC2007/ImageSets/Main/val.txtimage_set_file = os.path.join(self._devkit_path, imagelist)assert os.path.exists(image_set_file), \'Path does not exist: {}'.format(image_set_file)with open(image_set_file) as f:image_index = [x.strip() for x in f.readlines()]return image_index
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
gt_roidb(self):
这个函数里有个生成ground truth的文件,我需要特别说明一下,如果你再次训练的时候修改了数据库,比如添加或者删除了一些样本,但是你的数据库名字函数原来那个,必须要在data/cache/目录下把数据库的缓存文件.pkl给删除掉,否则其不会重新读取相应的数据库,而是直接从之前读入然后缓存的pkl文件中读取进来,这样修改的数据库并没有进入网络,而是加载了老版本的数据。
修改的_load_pascal_annotation(self, index):
def _load_pascal_annotation(self, index): #modified"""Load image and bounding boxes info from XML file in the PASCAL VOCformat."""filename = os.path.join(self._devkit_path, 'Annotations', index + '.xml')tree = ET.parse(filename)objs = tree.findall('object')if not self.config['use_diff']:# Exclude the samples labeled as difficultnon_diff_objs = [obj for obj in objs if int(obj.find('difficult').text) == 0]# if len(non_diff_objs) != len(objs):# print 'Removed {} difficult objects'.format(# len(objs) - len(non_diff_objs))objs = non_diff_objsnum_objs = len(objs)boxes = np.zeros((num_objs, 4), dtype=np.uint16)gt_classes = np.zeros((num_objs), dtype=np.int32)overlaps = np.zeros((num_objs, self.num_classes), dtype=np.float32)# "Seg" area for pascal is just the box areaseg_areas = np.zeros((num_objs), dtype=np.float32)# Load object bounding boxes into a data frame.for ix, obj in enumerate(objs):bbox = obj.find('bndbox')# Make pixel indexes 0-basedx1 = float(bbox.find('xmin').text)y1 = float(bbox.find('ymin').text)x2 = float(bbox.find('xmax').text)y2 = float(bbox.find('ymax').text)cls = self._class_to_ind[obj.find('name').text.lower().strip()]boxes[ix, :] = [x1, y1, x2, y2]gt_classes[ix] = clsoverlaps[ix, cls] = 1.0seg_areas[ix] = (x2 - x1 + 1) * (y2 - y1 + 1)overlaps = scipy.sparse.csr_matrix(overlaps)return {'boxes' : boxes,'gt_classes': gt_classes,'gt_overlaps' : overlaps,'flipped' : False,'seg_areas' : seg_areas}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
因为我和Pascal用了一样的xml格式,所以这个函数我的改动不多。如果你想用txt文件保存ground truth,做出相应的修改即可。
想采用txt方式存储的童鞋,可以参考文末博客的写法。
坐标的顺序强调一下,要左上右下,并且x1必须要小于x2,这个是基本,反了会在坐标水平变换的时候会出错,坐标从0开始,如果已经是0,则不需要再-1。如果怕出错,可以直接把出界的的直接置0.
记得在最后的main下面也修改相应的路径
from datasets.hs import hs
d = hs('hs', '/home/zyy/workspace/wangml/py-faster-rcnn/lib/datasets/')
res = d.roidb
from IPython import embed; embed()
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
OK,在这里我们已经完成了整个的读取接口的改写。
2修改factory.py
当网络训练时会调用factory里面的get方法获得相应的imdb,
首先在文件头import 把pascal_voc改成hs
# --------------------------------------------------------
# Fast R-CNN
# Copyright (c) 2015 Microsoft
# Licensed under The MIT License [see LICENSE for details]
# Written by Ross Girshick
# --------------------------------------------------------"""Factory method for easily getting imdbs by name."""__sets = {}from datasets.hs import hs
import numpy as np# # Set up voc_<year>_<split> using selective search "fast" mode
# for year in ['2007', '2012']:
# for split in ['train', 'val', 'trainval', 'test']:
# name = 'voc_{}_{}'.format(year, split)
# __sets[name] = (lambda split=split, year=year: pascal_voc(split, year))
#
# # Set up coco_2014_<split>
# for year in ['2014']:
# for split in ['train', 'val', 'minival', 'valminusminival']:
# name = 'coco_{}_{}'.format(year, split)
# __sets[name] = (lambda split=split, year=year: coco(split, year))
#
# # Set up coco_2015_<split>
# for year in ['2015']:
# for split in ['test', 'test-dev']:
# name = 'coco_{}_{}'.format(year, split)
# __sets[name] = (lambda split=split, year=year: coco(split, year))name = 'hs'
devkit = '/home/zyy/workspace/wangml/py-faster-rcnn/lib/datasets/'
__sets['hs'] = (lambda name = name,devkit = devkit: hs(name,devkit))def get_imdb(name):"""Get an imdb (image database) by name."""if not __sets.has_key(name):raise KeyError('Unknown dataset: {}'.format(name))return __sets[name]()def list_imdbs():"""List all registered imdbs."""return __sets.keys()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
训练和检测
1.预训练模型介绍
首先在data目录下,有两个目录
-
faster_rcnn_models/
-
imagenet_models/
faster_rcnn_model文件夹下面是作者用faster rcnn训练好的三个网络,分别对应着小、中、大型网络,大家可以试用一下这几个网络,看一些检测效果,他们训练都迭代了80000次,数据集都是pascal_voc的数据集。
imagenet_model文件夹下面是在Imagenet上训练好的通用模型,在这里用来初始化网络的参数.
在这里我比较推荐大型网络,训练也挺快的,差不多25小时(titan black 6G)。
还有一个比较奇怪的现象,开启CuDNN一般情况是可以加速的,但是在训练ZF模型的时候,开启CuDNN反而会特别慢,所以大家如果训练特别慢,可以尝试关掉CuDNN。
2.修改模型文件配置
模型文件在models下面对应的网络文件夹下,在这里我用大型网络的配置文件修改为例子
比如:我的检测目标物是person ,那么我的类别就有两个类别即 background 和 person
因此,首先打开网络的模型文件夹,打开train.prototxt
修改的地方重要有三个
分别是这几个地方
- 首先在data层把num_classes 从原来的21类 20类+背景 ,改成 2类 人+背景
- 把RoI Proposal的’roi-data’层的 num_classes 改为 2
- 接着在cls_score层把num_output 从原来的21 改成 2
- 在bbox_pred层把num_output 从原来的84 改成8, 为检测类别个数乘以4,比如这里是2类那就是2*4=8
测试的时候,test.prototxt也需要做相应的修改。
OK,如果你要进一步修改网络训练中的学习速率,步长,gamma值,以及输出模型的名字,需要在同目录下的solver.prototxt中修改。
3.启动Fast RCNN网络训练
python ./tools/train_net.py --gpu 1 --solver models/hs/faster_rcnn_end2end/solver.prototxt --weights data/imagenet_models/VGG16.v2.caffemodel --imdb hs --iters 80000 --cfg experiments/cfgs/faster_rcnn_end2end.yml
- 1
- 1
参数讲解:
-
这里的–是两个-,不要输错
-
train_net.py是网络的训练文件,之后的参数都是附带的输入参数
-
–gpu 代表机器上的GPU编号,如果是nvidia系列的tesla显卡,可以在终端中输入nvidia-smi来查看当前的显卡负荷,选择合适的显卡
-
–solver 代表模型的配置文件,train.prototxt的文件路径已经包含在这个文件之中
-
–weights 代表初始化的权重文件,这里用的是Imagenet上预训练好的模型,大型的网络我们选择用VGG16.v2.caffemodel
-
–imdb 这里给出的训练的数据库名字需要在factory.py的_sets中,我在文件里面有_sets[‘hs’],train_net.py这个文件会调用factory.py再生成hs这个类,来读取数据
4.启动Fast RCNN网络检测
可以参考tools下面的demo.py 文件,来做检测,并且将检测的坐标结果输出到相应的txt文件中。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 省市县三级联动(webFrom...DropdownList)
编辑页面<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title> </head> <body>&l…...
2024/3/14 10:48:40 - 017_《参透Delphi_Kylix》
《参透Delphi_Kylix》 Delphi 教程 系列书籍 (017) 《参透Delphi_Kylix》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1Part2作者: 乔林 出版社:中国铁道出版社 ISBN:7113049206 上架时间:2003-5-24 出版日期:2003 年3月 开本:16开 页码:884 版次:1-1 内容…...
2024/3/14 16:53:50 - Coverity代码静态检测工具介绍
http://blog.csdn.net/yasi_xi/article/details/8349985 使用了Coverity代码静态检测工具。功能很强大,超乎我的期望。主要功能如下: 列出不会被执行到的代码列出没被初始化的类成员变量列出没有被捕获的异常列出没有给出返回值的return语句某个函数虽然有返回值,但调用该函…...
2024/3/14 16:53:48 - 以博客系统为例的数据库分析与设计之设计篇1
首先,画出应用的功能结构图然后,根据功能画出本应用中数据库的部分E-R图,然后根据E-R图来进行表结构以及关系的设计具体数据表设计用户表user_id int,非空,自增长,主键 user_name varchar,非空 user_pwd varchar,非空 user_nickname varchar user_status int(用户状态)用…...
2024/3/16 0:25:55 - QBASIC语言程序设计 谭浩强 pdf
链接:https://pan.baidu.com/s/1T_IcetkVPWACsciatFI2VQ 密码:1zkf本书为完整版,以下为内容截图:...
2024/3/13 22:20:37 - 从最简单的实例学习ARM 指令集(一)
打算为入门ARM指令集写点初级文章,没什么远大理想,纯当娱乐算了。首先编辑一个最简单的函数,包含变量分配及初始化:test1.c#include <stdio.h>void main() {int d = 4; }然后编译:arm-linux-gnueabihf-gcc test.c -o test1然后看看汇编代码:arm-linux-gnueabihf-ob…...
2024/3/13 22:20:35 - 淘宝(客户端)上的店家里面的视频是如何下载的
https://zhidao.baidu.com/question/268155934521821365.html我会了,现在可以下载了,用地瓜网络下载器解析一下就可以了!不过还是感谢您的回答!相关软件:淘宝视频下载器 淘图宝 http://jingyan.baidu.com/article/e2284b2b75b1c3e2e6118d26.html ei浏览器缓冲下载法。...
2024/3/29 6:53:02 - .net mvc------下拉列表DropDownList控件------绑定数据
下拉列表 以性别为例 -------------------------------------- 代码复制格式乱就用 ctrl+K+D 代码没写全,如果出现波浪线请 解析—引用 --------------------------------------- 视图代码 //表达式,对象的集合,一个对象-----第一个为空的值 @Html.DropDownListFor(model =&…...
2024/3/13 22:20:33 - mysql可视化工具官方教程
第1章基本信息本章介绍了MySQL的工作台的一般信息以及它是如何改变。MySQL的工作台是与MySQL服务器和数据库工作的图形工具。MySQL的工作台完全支持MySQL服务器版本5.1及以上。它还与MySQL服务器5.0兼容,但不是每5.0功能可以支持。它不支持MySQL服务器版本4.x版MySQL的工作台功…...
2024/3/13 22:20:33 - DropdownList 赋初始值问题
网上查了这样的代码 虽然是可以用。但是会点击多次会出现”“ dropdownList不能选多个值的问题“private void initdroplistitemlirun(string c_Business){if (this.Dplirun.Items.FindByText(c_Business) != null){for (int i = 0; i < this.Dplirun.Items.Count; i++){thi…...
2024/3/19 14:30:59 - Ubuntu16.04中谷歌浏览器的安装
一、准备材料 1、软件下载 方法一:可以直接去如下链接下载(1)rpm格式版本下载地址:http://download.csdn.net/download/suwu150/9728881(2)deb格式版本下载地址: http://download.csdn.net/download/suwu150/9728887 注意: 以上两个不能版本在使用的时候,gitHub会有提示不…...
2024/3/13 22:20:30 - Hexo在Github中搭建博客系统(1)Hexo安装
声明: 此博客专栏在我本人GitHub站点chwshuang.github.io网站 和个人网站 hushuang.me(正在备案)已经发布,所以没有侵权行为。今天通过安装Hexo博客系统,搭建了自己的一套博客 现在分享搭建过程,感谢hexo团队和maupassant主题创作团队,是你们赋予这个博客的生命!一、什么是…...
2024/3/13 22:20:32 - 计算机视觉相关数据集和比赛
一. ImageNet Large Scale Visual Recognition Competition (ILSVRC)Imagenet数据集是目前深度学习图像领域应用得非常多的一个数据集,关于图像分类、定位、检测等研究工作大多基于此数据集展开。Imagenet数据集有1400多万幅图片,涵盖2万多个类别;其中有超过百万的图片有明确…...
2024/3/14 16:53:50 - 解决谷歌浏览器下载缓慢问题
下载某个文件的时候发现网速很慢,而且不一会网速就归零了,然后谷歌浏览器就会断开连接,然后就又得重新来过。。。为了防止这个可以尝试新方法用wget方法下载首先获取一下要下载的连接然后命令行输入 wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-darwi…...
2024/3/14 16:53:46 - ARM7学习笔记——中断向量控制器VIC
◆向量中断控制器概述ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。但是芯片内部有许多中断源,最多可以有32个中断输入请求。向量中断控制器的作用就是允许哪些中断源可以产生中断,可以产生哪类中断,产生中断后执行哪段服务程序。◆允许中断源产生中断允许中断源…...
2024/3/14 16:53:46 - MVC 下拉框DropDownList的使用
1.后台Controller构建数据: string strSql = @"select * from tb_e_GoodsQuestionType where IsDelete=0"; IList<GoodsQuestionTypeModel> list = SqlHelper.GetEntities<GoodsQuestionTypeModel>(strSql);//查出数据放到list实体集合中// 类型下拉信息…...
2024/3/14 16:53:44 - SQL过滤
我的网站也被注入过,现在解决了。 把如下代码 保存为 nosql.asp文件 然后include到各各页面。 <% --------定义部份------------------ Dim XH_Post,XH_Get,XH_Cookie,XH_In,XH_Inf,XH_Xh,XH_Inf2,XH_In2 自定义需要过滤的字串,用 "|" 分隔 XH_In = "|;|and…...
2024/3/14 10:48:23 - 用Delphi开发易语言支持库,附源代码
三年多之前(2003年5月),在易语言3.0的C/C++版支持库开发框架公布不久, 我(liigo)在第一时间将其转换为Pascal版,并推出第一个用Delphi编写的易语言支持库,同时公开所有源代码,且不保留任何版权。 时间过的真快。 易语言3.7开始,易语言官方内部使用的支持库开发框架升…...
2024/3/14 10:48:17 - 博客系统前台页面设计
设计内容: 博客前台页面设计分工: 美工设计与前台代码开发软件: Photoshop cs5 Dreamweaver cs5开发周期:5+3+8=16小时兼容性调试:通过IE8,Sougo,chrome,firefox使用说明: 压缩包中附有设计原始文件与合成好的html,动态的东西加在html文件的…...
2024/3/14 16:53:41 - IAR for ARM介绍、下载、安装与注册
推荐分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang推荐在我公众号「strongerHuang」和博客阅读该专栏1.EWSTM8系列教程01_IAR介绍、下载、安装和注册 2.EWSTM8系列教程02_…...
2024/3/14 16:53:40
最新文章
- 代码随想录学习Day 20
669.修剪二叉搜索树 题目链接 讲解链接 思路:采用递归方法,若root.val > high,判断左子树是否为空,若不空,递归遍历左子树,若空就返回null;若root.val < low,则判断右子树是…...
2024/3/29 19:58:43 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - nodejs+vue高校门诊管理系统python-flask-django-php
相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低高校门诊的运营人员成本,实现了高校门诊管理的标准化、制度化、程序化的管理,有效地防止了高校门诊管理的随意管理,提高了信息的处理速度和精确度,能够及时…...
2024/3/27 3:28:22 - springboot网站开发如何配置log4j日志插件
springboot网站开发如何配置log4j日志插件!为了便于服务器等环境下的错误情况的排查根源,还是很有必要使用日志插件的,它可以记录下我们提前埋下的锚点信息。 在遇到故障,查看这些锚点记录的日志信息,可以快速高效的解…...
2024/3/29 7:58:52 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/3/29 18:08:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/3/29 18:08:34 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/3/29 2:45:46 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/3/29 16:26:39 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/3/29 5:19:52 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/3/29 18:08:00 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/3/29 11:11:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/3/29 1:13:26 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/3/29 8:28:16 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/3/29 7:41:19 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/3/29 18:07:15 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/3/29 9:57:23 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/3/29 0:49:46 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/3/29 18:06:57 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/3/29 17:27:19 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/3/29 18:06:36 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/3/29 18:06:22 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/3/28 18:26:34 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/3/29 18:06:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/3/28 20:09:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57