【不正经操作】百度深度学习框架paddlepaddle本地运行-Python环境配置笔记

百度深度学习框架PaddlePaddle

百度深度学习框架PaddlePaddle是一个支持深度学习和机器学习的开源框架。它由百度公司于2016年开发并发布,现在已经成为中国最受欢迎的深度学习框架之一,并且在国际上也获得了不少关注。

特点与功能

易于使用

PaddlePaddle提供了Python API和命令行工具,使得使用者可以轻松地构建、训练和部署深度学习模型。同时,PaddlePaddle还内置了各种深度学习模型和数据集,用户只需要进行简单的调用就可以快速上手。

多种神经网络结构

PaddlePaddle支持大规模的神经网络结构,包括:卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元网络(GRU)等。此外,PaddlePaddle还支持自定义神经网络结构,方便用户根据实际需求进行修改和优化。

分布式训练和推理

为了应对大规模数据和高并发访问的需求,PaddlePaddle支持分布式训练和推理,可以将计算负载分配到多个GPU或多台服务器上进行处理,从而提高计算效率和处理能力。

高性能和高效稳定

PaddlePaddle通过使用高效的并行计算技术和动态图执行引擎,保证了高性能和高效稳定。此外,PaddlePaddle还支持异构计算,可以充分利用GPU、FPGA等硬件设备的优势。

应用广泛

PaddlePaddle被广泛应用于图像识别、自然语言处理、语音识别、推荐系统等领域。例如,百度的图片搜索、语音识别、知识图谱等产品都是基于PaddlePaddle开发的。

优势与竞争

动态图机制

PaddlePaddle采用了动态图机制,相比于静态图机制,可以更加灵活地构建和优化神经网络模型,同时还可以实现更好的可读性和可维护性。

跨平台支持

PaddlePaddle支持Windows、Linux和MacOS等不同操作系统,在不同的平台上都可以进行深度学习模型的构建和训练。

分布式训练优势

PaddlePaddle的分布式训练具有优秀的性能和可扩展性,可将计算负载分配到多台服务器上进行处理,有效地提高了训练速度和精度。

商业落地

百度在多个行业都有应用实践,PaddlePaddle也得到了广泛的商业落地,包括金融、医疗、智能驾驶等领域。

相关链接

  • 官方网站:https://www.paddlepaddle.org.cn/
  • PaddlePaddle Github:https://github.com/PaddlePaddle/Paddle
  • PaddlePaddle中文文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/index_cn.html

AI Studio

AI Studio是由百度开发的深度学习和人工智能开发平台,旨在为开发者提供一站式的解决方案。AI Studio集成了PaddlePaddle等多种深度学习框架,提供了可视化的界面、强大的计算资源和丰富的数据集,让用户可以快速构建、训练和部署深度学习模型。

特点与功能

可视化交互界面

AI Studio提供了基于Web的可视化交互界面,用户可以通过简单的拖拽和配置完成模型的构建和训练。同时,AI Studio还支持Jupyter Notebook和Python编程环境,方便用户进行自定义操作。

强大的计算资源

AI Studio提供了GPU和CPU等多种计算资源,用户可以根据实际需求选择合适的资源来进行模型训练和推理。此外,AI Studio还支持分布式训练和推理,可以将计算负载分配到多个计算节点上进行处理。

丰富的数据集

AI Studio集成了各种常见的数据集,包括:ImageNet、CIFAR-10/100、MNIST、LFW等。用户可以直接使用这些数据集进行模型训练,也可以上传自己的数据集进行训练和测试。

多种深度学习框架支持

AI Studio除了支持PaddlePaddle之外,还支持TensorFlow、PyTorch等多种深度学习框架。用户可以根据自己的喜好和需求选择合适的框架来进行开发。

应用场景广泛

AI Studio被广泛应用于图像识别、自然语言处理、推荐系统等领域。例如,在图像识别方面,AI Studio可以用于物体检测、图像分割、人脸识别等任务;在自然语言处理方面,AI Studio可以用于文本分类、情感分析、机器翻译等任务。

相关链接

  • AI Studio官网:https://aistudio.baidu.com/
  • AI Studio中文文档:https://ai.baidu.com/docs#/AIStudio/top

开始配置

这里我们配置这个项目的环境
基于ppyoloe-sod海星目标检测(小目标检测)

虚拟环境创建

call cmd
rem 创建虚拟环境
python -m venv venv
rem 激活虚拟环境
call venv\Scripts\activate.bat
python -m pip install --upgrade pip

半自动化使用.bat手动打包迁移python项目

lap

lab包直接装装不上,使用编译安装法
https://pypi.org/project/lap/#files

pip install -i https://mirrors.aliyun.com/pypi/simple/ numpy<1.24
curl -o lap-0.4.0.tar.gz https://files.pythonhosted.org/packages/bf/64/d9fb6a75b15e783952b2fec6970f033462e67db32dc43dfbb404c14e91c2/lap-0.4.0.tar.gz
tar -zxvf lap-0.4.0.tar.gz
cd lap-0.4.0
python setup.py build
python setup.py install

在这里插入图片描述

 pip show lap

在这里插入图片描述

下载PaddleDetection

git clone https://gitee.com/PaddlePaddle/PaddleDetection.git
pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python==4.5.3.56
pip install -i https://mirrors.aliyun.com/pypi/simple/ pycryptodome

#安装PaddleDetection相关依赖


pip install -r PaddleDetection/requirements.txt
python  PaddleDetection/setup.py install

AI Studio会自动创建version.py,这里我们需要在该路径手动创建

PaddleDetection\ppdet\version.py
在这里插入图片描述

(venv) PS E:\Downloads\ppd> python PaddleDetection/setup.py install
fatal: not a git repository (or any of the parent directories): .git
Traceback (most recent call last):
File “PaddleDetection/setup.py”, line 56, in
write_version_py()
File “PaddleDetection/setup.py”, line 52, in write_version_py
with open(filename, ‘w’) as f:
FileNotFoundError: [Errno 2] No such file or directory: ‘ppdet/version.py’

然后

cd PaddleDetection
python setup.py install

requirements.txt

numpy < 1.24
tqdm
typeguard
visualdl>=2.2.0
opencv-python <= 4.6.0
PyYAML
shapely
scipy
terminaltables
Cython
pycocotools
setuptools# for MOT evaluation and inference
lap
motmetrics
sklearn==0.0# for vehicleplate in deploy/pipeline/ppvehicle
pyclipper

pip list

(venv) PS E:\Downloads\pad> pip list
Package Version


anyio 4.0.0
astor 0.8.1
Babel 2.13.0
bce-python-sdk 0.8.92
blinker 1.6.3
certifi 2023.7.22
charset-normalizer 3.3.0
click 8.1.7
colorama 0.4.6
contourpy 1.1.1
cycler 0.12.1
Cython 3.0.4
decorator 5.1.1
exceptiongroup 1.1.3
filelock 3.12.4
fire 0.5.0
Flask 3.0.0
flask-babel 4.0.0
fonttools 4.43.1
fsspec 2023.9.2
future 0.18.3
h11 0.14.0
httpcore 0.18.0
httpx 0.25.0
idna 3.4
importlib-metadata 6.8.0
importlib-resources 6.1.0
itsdangerous 2.1.2
Jinja2 3.1.2
joblib 1.3.2
kiwisolver 1.4.5
lap 0.4.0
llvmlite 0.39.1
MarkupSafe 2.1.3
matplotlib 3.7.3
motmetrics 1.4.0
mpmath 1.3.0
networkx 3.1
numba 0.56.4
numpy 1.23.5
opencv-python 4.5.5.64
opt-einsum 3.3.0
packaging 23.2
paddle-bfloat 0.1.7
paddledet 2.6.0
paddlepaddle 2.5.1
paddlepaddle-gpu 2.5.1
pandas 2.0.3
Pillow 10.1.0
pip 23.3
protobuf 3.20.2
psutil 5.9.6
pybboxes 0.1.6
pyclipper 1.3.0.post5
pycocotools 2.0.7
pycryptodome 3.19.0
pyparsing 3.1.1
python-dateutil 2.8.2
pytz 2023.3.post1
PyYAML 6.0.1
rarfile 4.1
requests 2.31.0
sahi 0.11.14
scikit-learn 1.3.1
scipy 1.10.1
tzdata 2023.3
urllib3 2.0.7
visualdl 2.5.3
Werkzeug 3.0.0
xmltodict 0.13.0
zipp 3.17.0

本地运行

"""NAME : 3kshUSER : adminDATE : 18/10/2023PROJECT_NAME : ppdCSDN : friklogff
"""
# 调用一些需要的第三方库
import numpy as np
import pandas as pd
import shutil
import json
import os
import cv2
import glob
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import seaborn as sns
from matplotlib.font_manager import FontProperties
from PIL import Image
import random
###解决中文画图问题
myfont = FontProperties(fname=r"NotoSansCJKsc-Medium.otf", size=12)
plt.rcParams['figure.figsize'] = (12, 12)
plt.rcParams['font.family']= myfont.get_family()
plt.rcParams['font.sans-serif'] = myfont.get_name()
plt.rcParams['axes.unicode_minus'] = False# 加载训练集路径
TRAIN_DIR = 'kaggle_dataset/train2017/'
TRAIN_CSV_PATH = 'TRAIN_CSV_PATH = kaggle_dataset/annotations/train.json'
# 加载训练集图片目录
train_fns = glob.glob(TRAIN_DIR + '*')
print('数据集图片数量: {}'.format(len(train_fns)))def generate_anno_result(dataset_path, anno_file):with open(os.path.join(dataset_path, anno_file)) as f:anno = json.load(f)total = []for img in anno['images']:hw = (img['height'], img['width'])total.append(hw)unique = set(total)ids = []images_id = []for i in anno['annotations']:ids.append(i['id'])images_id.append(i['image_id'])# 创建类别标签字典category_dic = dict([(i['id'], i['name']) for i in anno['categories']])counts_label = dict([(i['name'], 0) for i in anno['categories']])for i in anno['annotations']:counts_label[category_dic[i['category_id']]] += 1label_list = counts_label.keys()  # 各部分标签size = counts_label.values()  # 各部分大小train_fig = pd.DataFrame(anno['images'])train_anno = pd.DataFrame(anno['annotations'])df_train = pd.merge(left=train_fig, right=train_anno, how='inner', left_on='id', right_on='image_id')df_train['bbox_xmin'] = df_train['bbox'].apply(lambda x: x[0])df_train['bbox_ymin'] = df_train['bbox'].apply(lambda x: x[1])df_train['bbox_w'] = df_train['bbox'].apply(lambda x: x[2])df_train['bbox_h'] = df_train['bbox'].apply(lambda x: x[3])df_train['bbox_xcenter'] = df_train['bbox'].apply(lambda x: (x[0] + 0.5 * x[2]))df_train['bbox_ycenter'] = df_train['bbox'].apply(lambda x: (x[1] + 0.5 * x[3]))print('最小目标面积(像素):', min(df_train.area))balanced = ''small_object = ''densely = ''# 判断样本是否均衡,给出结论if max(size) > 5 * min(size):print('样本不均衡')balanced = 'c11'else:print('样本均衡')balanced = 'c10'# 判断样本是否存在小目标,给出结论if min(df_train.area) < 900:print('存在小目标')small_object = 'c21'else:print('不存在小目标')small_object = 'c20'arr1 = []arr2 = []x = []y = []w = []h = []for index, row in df_train.iterrows():if index < 1000:# 获取并记录坐标点x.append(row['bbox_xcenter'])y.append(row['bbox_ycenter'])w.append(row['bbox_w'])h.append(row['bbox_h'])for i in range(len(x)):l = np.sqrt(w[i] ** 2 + h[i] ** 2)arr2.append(l)for j in range(len(x)):a = np.sqrt((x[i] - x[j]) ** 2 + (y[i] - y[j]) ** 2)if a != 0:arr1.append(a)arr1 = np.matrix(arr1)# print(arr1.min())# print(np.mean(arr2))# 判断是否密集型目标,具体逻辑还需优化if arr1.min() < np.mean(arr2):print('密集型目标')densely = 'c31'else:print('非密集型目标')densely = 'c30'return balanced, small_object, densely# 分析训练集数据
generate_anno_result('kaggle_dataset', 'annotations/train.json')# 图片大小分布
# 读取训练集标注文件
with open('kaggle_dataset/annotations/train.json', 'r', encoding='utf-8') as f:train_data = json.load(f)
train_fig = pd.DataFrame(train_data['images'])
train_fig.head()
ps = np.zeros(len(train_fig))
for i in range(len(train_fig)):ps[i]=train_fig['width'][i] * train_fig['height'][i]/1e6
plt.title('训练集图片大小分布', fontproperties=myfont)
sns.distplot(ps, bins=21,kde=False)
# 可以看出,所有图片大小都相同,都为720*1280# 训练集目标大小分布
# !python box_distribution.py --json_path kaggle_dataset/annotations/train.json
#
#
# 注意:
#
# 当原始数据集全部有标注框的图片中,有1/2以上的图片标注框的平均宽高与原图宽高比例小于0.04时,建议进行切图训练。
# 所以根据上面的说明,海星检测这个数据集其实介于“可切可不切”之间。当然,我们可以继续试验下,看看切图是否可以取得更加优秀的效果train_anno = pd.DataFrame(train_data['annotations'])
df_train = pd.merge(left=train_fig, right=train_anno, how='inner', left_on='id', right_on='image_id')
df_train['bbox_xmin'] = df_train['bbox'].apply(lambda x: x[0])
df_train['bbox_ymin'] = df_train['bbox'].apply(lambda x: x[1])
df_train['bbox_w'] = df_train['bbox'].apply(lambda x: x[2])
df_train['bbox_h'] = df_train['bbox'].apply(lambda x: x[3])
df_train['bbox_xcenter'] = df_train['bbox'].apply(lambda x: (x[0]+0.5*x[2]))
df_train['bbox_ycenter'] = df_train['bbox'].apply(lambda x: (x[1]+0.5*x[3]))
df_train['bbox_w'].max(),df_train['bbox_h'].max()
ps = np.zeros(len(df_train))
for i in range(len(df_train)):ps[i]=df_train['area'][i]/1e6ps = np.zeros(len(df_train))
plt.title('训练集目标大小分布', fontproperties=myfont)
sns.distplot(ps, bins=21,kde=True)
# 各类别目标形状分布
# 各类别目标形状分布
sns.set(rc={'figure.figsize':(12,6)})
sns.relplot(x="bbox_w", y="bbox_h", hue="category_id", col="category_id", data=df_train[0:1000])
# 各类别目标中心点形状分布
# 各类别目标中心点形状分布
sns.set(rc={'figure.figsize':(12,6)})
sns.relplot(x="bbox_xcenter", y="bbox_ycenter", hue="category_id", col="category_id", data=df_train[0:1000]);
# 训练集目标大小统计结果
df_train.area.describe()
# 训练集目标个数分布
df_train['bbox_count'] = df_train.apply(lambda row: 1 if any(row.bbox) else 0, axis=1)
train_images_count = df_train.groupby('file_name').sum().reset_index()
plt.title('训练集目标个数分布', fontproperties=myfont)
sns.distplot(train_images_count['bbox_count'], bins=21,kde=True)
# 分析结论:海星检测的数据集图片分辨率相同,均为1280*720、小目标占比相当大。
#
# 总的来说,这是个比较典型的小目标检测场景。# 这段代码用于使用`sahi`库对训练集和验证集的标注数据进行图像切割,并生成切割后的子图像。以下是代码的功能和参数说明:
#
# 1. 安装`sahi`库:
#    ```python
#    !pip install sahi
#    ```
#
# 2. 对训练集标注进行切图:
#    ```python
#    !python PaddleDetection/tools/slice_image.py --image_dir kaggle_dataset/train2017\
#     --json_path kaggle_dataset/annotations/train.json --output_dir kaggle_dataset/train2017_400_sliced --slice_size 400 --overlap_ratio 0.25
#    ```
#
#    - `--image_dir`:原始数据集图片文件夹的路径,这里是 `kaggle_dataset/train2017`。
#    - `--json_path`:COCO标注数据文件地址,这里是 `kaggle_dataset/annotations/train.json`。
#    - `--output_dir`:切图结果所在文件位置,这里是 `kaggle_dataset/train2017_400_sliced`。
#    - `--slice_size`:切图大小,默认为正方形,这里设置为 400x400 像素。
#    - `--overlap_ratio`:切分时的子图之间的重叠率,这里设置为 0.25。
#
# 3. 对验证集标注进行切图,与训练集切图的方式类似,只是针对验证集数据:
#    ```python
#    !python PaddleDetection/tools/slice_image.py --image_dir kaggle_dataset/val2017\
#     --json_path kaggle_dataset/annotations/valid.json --output_dir kaggle_dataset/val2017_400_sliced --slice_size 400 --overlap_ratio 0.25
#    ```
#
# 这段代码的作用是将原始数据集的图像切分成指定大小的子图像,以便后续进行目标检测或其他计算机视觉任务。确保你已安装了所需的库并提供了正确的数据集路径和参数,以使代码成功运行。
# python PaddleDetection\\tools\\slice_image.py --image_dir kaggle_dataset\\train2017\\ --json_path kaggle_dataset\\annotations\\train.json --output_dir kaggle_dataset\\train2017_400_sliced --slice_size 400 --overlap_ratio 0.25
# python PaddleDetection/tools/slice_image.py --image_dir kaggle_dataset/val2017\ --json_path kaggle_dataset/annotations/valid.json --output_dir kaggle_dataset/val2017_400_sliced --slice_size 400 --overlap_ratio 0.25# pip install paddlepaddle
# pip install paddlepaddle-gpu# python PaddleDetection/tools/train.py -c configs/ppyoloe_p2_crn_l_80e_sliced_xview_400_025.yml --use_vdl=True -o worker_num=1 --eval

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/188934.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode(5)多数元素【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 169. 多数元素 1.题目 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示…

2023年【汽车驾驶员(高级)】找解析及汽车驾驶员(高级)复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 汽车驾驶员&#xff08;高级&#xff09;找解析是安全生产模拟考试一点通总题库中生成的一套汽车驾驶员&#xff08;高级&#xff09;复审考试&#xff0c;安全生产模拟考试一点通上汽车驾驶员&#xff08;高级&#…

element ui中Select 选择器,自定义显示内容

正常情况下&#xff0c;下拉框选项展示内容&#xff0c;就是选择后展示的label内容 如图所示&#xff1a; 但是要想自定义选项内容&#xff0c;但是展示内容不是选项label的内容&#xff0c;可以在el-option标签内增加div进行自定义选项label展示&#xff0c;但选择后结果展示…

目标检测算法改进系列之Backbone替换为VanillaNet

VanillaNet简介 简介&#xff1a;VanillaNet是一种在设计中融入优雅的神经网络架构&#xff0c;通过避免高深度&#xff0c;shortcut和自注意力等复杂操作&#xff0c;VanillaNet简单而强大。每一层都经过精心制作&#xff0c;紧凑而直接&#xff0c;在训练后对非线性激活函数…

联系作者方式的教程

首先你应该目前是在付费资源运行效果的展示文章页面&#xff0c;如下所示 然后一直往下滑&#xff0c;滑到这个文章的最下面&#xff0c;就可以看到我的推广名片&#xff0c;最后点击这个名片就可以获取到我的联系方式了~

LabVIEW调用库函数节点无法显示DLL中的函数

LabVIEW调用库函数节点无法显示DLL中的函数 正在使用调用库函数节点来调用一个DLL文件。可是&#xff0c;当浏览该DLL时&#xff0c;却无法在Function Name下拉菜单中选择任何函数。为什么所有的DLL函数都无法选中呢&#xff1f; 解答: 调用的DLL可能是通过.NET封装的&#x…

MGA-WPA

作者未提供代码

ROC 曲线详解

前言 ROC 曲线是一种坐标图式的分析工具&#xff0c;是由二战中的电子和雷达工程师发明的&#xff0c;发明之初是用来侦测敌军飞机、船舰&#xff0c;后来被应用于医学、生物学、犯罪心理学。 如今&#xff0c;ROC 曲线已经被广泛应用于机器学习领域的模型评估&#xff0c;说…

Leetcode—2471.逐层排序二叉树所需的最少操作数目【中等】(置换环解法!)

2023每日刷题&#xff08;二十七&#xff09; Leetcode—2471.逐层排序二叉树所需的最少操作数目 置换环解题思想 参考自网络 总交换次数 每一层最小交换次数之和 每一层元素个数 - 置换环数 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* …

基于SSM的旅游管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【第2章 Node.js基础】2.4 Node.js 全局对象...持续更新

什么是Node.js 全局对象 对于浏览器引擎来说&#xff0c;JavaScript 脚本中的 window 是全局对象&#xff0c;而Node.js程序中的全局对象是 global&#xff0c;所有全局变量(除global本身外)都是global 对象的属性。全局变量和全局对象是所有模块都可以调用的。Node.is 的全局…

axios请求的问题

本来不想记录&#xff0c;但是实在没有办法&#xff0c;因为总是会出现post请求&#xff0c;后台接收不到数据的情况,还是记录一下如何的解决的比较好。 但是我使用export const addPsiPurOrder data > request.post(/psi/psiPurOrder/add, data); 下面是封装的代码。后台接…

头歌答案--数据持久化(非数据库)

目录 ​编辑 数据持久化&#xff08;非数据库&#xff09; 第1关&#xff1a;数据持久化&#xff08;非数据库&#xff09; 任务描述 多线程、多进程爬虫 第1关&#xff1a;多线程、多进程爬虫 任务描述 Scrapy爬虫基础 任务描述 MySQL数据库编程 第1关&#xff1a;…

PowerPoint to HTML5 SDK Crack

Convert PowerPoint to HTML5 Retaining Animations, Transitions, Hyperlinks, Smartart, Triggers and other multimedia effects World’s first and industry best technology for building web/mobile based interactive presentations directly from PowerPoint – that …

2.0 熟悉CheatEngine修改器

Cheat Engine 一般简称为CE&#xff0c;它是一款功能强大的开源内存修改工具&#xff0c;其主要功能包括、内存扫描、十六进制编辑器、动态调试功能于一体&#xff0c;且该工具自身附带了脚本工具&#xff0c;可以用它很方便的生成自己的脚本窗体&#xff0c;CE工具可以帮助用户…

ARM 基础学习记录 / 异常与GIC介绍

GIC概念 念课本&#xff08;以下内容都是针对"通用中断控制器&#xff08;GIC&#xff09;"而言&#xff0c;直接摘录的&#xff0c;有的地方可能不符人类的理解方式&#xff09;&#xff1a; 通用中断控制器&#xff08;GIC&#xff09;架构提供了严格的规范&…

Python文件、文件夹操作汇总

目录 一、概览 二、文件操作 2.1 文件的打开、关闭 2.2 文件级操作 2.3 文件内容的操作 三、文件夹操作 四、常用技巧 五、常见使用场景 5.1 查找指定类型文件 5.2 查找指定名称的文件 5.3 查找指定名称的文件夹 5.4 指定路径查找包含指定内容的文件 一、概览 ​在…

Spring Boot(二)

1、运行维护 1.1、打包程序 SpringBoot程序是基于Maven创建的&#xff0c;在Maven中提供有打包的指令&#xff0c;叫做package。本操作可以在Idea环境下执行。 mvn package 打包后会产生一个与工程名类似的jar文件&#xff0c;其名称是由模块名版本号.jar组成的。 1.2、程序…

YOLO目标检测——猫狗目标检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;宠物识别、猫狗分类数据集说明&#xff1a;猫狗分类检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含有猫和狗图片标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xm…

[量化投资-学习笔记009]Python+TDengine从零开始搭建量化分析平台-KDJ

技术分析有点像烹饪&#xff0c;收盘价、最值、成交量等是食材&#xff1b;均值&#xff0c;移动平均&#xff0c;方差等是烹饪方法。随意组合一下就是一个技术指标。 KDJ又称随机指标&#xff08;随机这个名字起的很好&#xff09;。KDJ的计算依据是最高价、最低价和收盘价。…