来源:投稿 作者:LSC
编辑:学姐
说了大概15分钟
Yolov4相比yolov3的改进:
(1)backbone使用了CSPdarknet53,yolov3是darknet53
(2)neck中使用了PAN操作,里面还有SPP结构
(3)iou改为CIOU
Yolov5相比yolov4的改进:
(1)输入端使用了focus操作
(2)数据增强使用了mosaic操作
分类: 准确率accuracy, 精确率presicion, 召回率recall, f1值
回归: 均方误差MSE, 平均绝对误差MAE, 拟合优度R2
分割: 像素准确率(Pixel Accuracy, PA), 类别像素准确率(Class Pixel Accuray, CPA),类别平均像素准确率(Mean Pixel Accuracy, MPA), 交并比(Intersection over Union, IoU), 平均交并比(Mean Intersection over Union, MIoU)
检测: mAP、mAR
F1 = 2 * presicion * recall / (presicion + recall)
通过父类定义一个函数,一般是虚函数,由子类去继承并实现这个函数不同的功能。
C++中虚函数是通过一张虚函数表(Virtual Table)来实现的,在这个表中,主要是一个类的虚函数表的地址表;这张表解决了继承、覆盖的问题。在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以当我们用父类的指针来操作一个子类的时候,这张虚函数表就像一张地图一样指明了实际所应该调用的函数。 https://blog.csdn.net/Cdreamfly/article/details/127362269
构造函数不是,析构函数一定是。
Vector: 向量,本质是动态数组
Queue: 队列,还有优先级队列,基于最大堆实现
Stack: 栈,先入后出
Map: 映射,有两种,一种是基于红黑树,一种是基于哈希表
Set: 集合,内部实现有两种方式,同map
List: 链表
浅拷贝只复制数值,不复制地址,在拷贝后的数上改动不影响原来的数,深拷贝是复制地址,在拷贝后的数上做改动相当于改动原来的数。
只判断数值是否想等,不判断地址是否想等,也就是不一定完全一样。
标题:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
题目描述:
在不复制数组的情况下原地对数组进行操作
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
思路: 双指针
代码:
#include
using namespace std;
void swap(int a[], int l, int r)
{
int tmp = a[l];
a[l] = a[r];
a[r] = tmp;
}
int main() {
// char str[3];
// std::cin>>str;
std::cout << "hello world" << std::endl;
int nums[5] = {0,1,0,3,12}, n = 5;
int l = 0, r = 0;
while(l < n && nums[l] != 0) {l++;}
while(r < n && nums[r] == 0) {r++;}
while(l < n && r < n)
{
swap(nums, l, r);
while(l < n && nums[l] != 0) {l++;}
while(r < n && nums[r] == 0) {r++;}
// cout << l << " " << r << endl;
}
for(int i = 0; i < n; ++i)
{
printf("%d ", nums[i]);
}
return 0;
}
关注下方《学姐带你玩AI》
算法工程师万能简历公式+200多个简历模板(中英文)
回复“简历”轻松获取!
码字不易,欢迎大家点赞评论收藏!