faster r-cnn 数据准备之,批量修改文件

本文介绍如何使用Shell脚本进行文件的批量重命名、查看文件数量及Vim编辑器中内容替换与删除的方法。包括使用rename命令在文件名前添加字符、修改文件后缀,以及在Vim中撤销与快速跳行的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用rename对文件进行批量重命名

  • 对文件路径下所有文件重命名为顺序数字的形式

i=1; for x in *; do mv $x $i.png; let i=i+1; done

  • 在文件名前添加若干数字0

i=1001; for f in *.png; do mv "$f" ${i#1}.jpeg; ((i++)); done

  • i#1 是shell脚本中的字符串操作

  • KaTeX parse error: Expected '}', got '#' at position 8: {string#̲substring} 是从变量string的开头, 删除最长匹配$substring的子串

  • 在文件名开头添加任意字符(串)

rename -n 's/^/train_/' *.jpeg

  • ^代表开头
  • train_便是我们要添加的字符串,可以改成其他
  • 替换匹配的任意字符,如将文件的后缀JPG 改成 jpg:
rename 's/\.JPG/\.jpg/' *.JPG

找到所有.JPG 替换为 .jpg。

2. 查看当前文件路径下的文件数目

ls -l|grep "^-"| wc -l

3. vim下替换/删除匹配内容

1,1000s/^.\///g

参考这里

  • 1,1000代表指定范围为1-1000行,也可以用:%(代表所有行)
  • s,替换的意思
  • /^./,代表被替换的内容(也就是匹配的内容)
  • ^,行首
  • //,代表替换后的内容,此处为空,也可以是/xxx/的形式;
  • g,替换的意思
:%s/\/T/\_T/g  把所有的(g代表全局) /T的都换成_T

4. vim下通过:输入的命令都可以撤销,撤销命令:u
5. vim下快速跳行
参考

  • 跳到文本的最后一行:按“G”,即“shift+g”
  • 跳到第一行的第一个字符:按两次“g: gg
### 训练 Faster R-CNN 的基本流程 要从头开始训练 Faster R-CNN 模型,可以按照以下方法实现。以下是详细的说明以及 Python 实现的关键部分。 #### 1. 数据准备 数据集应包含标注文件(通常是 COCO 或 Pascal VOC 格式的标注)。对于 Faster R-CNN 来说,目标检测任务的数据通常由图片及其对应的边界框坐标组成。如果使用 PyTorch,则可以通过 `torchvision` 提供的工具加载常用的目标检测数据集[^1]。 ```python from torchvision import datasets, transforms # 定义数据转换操作 data_transforms = transforms.Compose([ transforms.ToTensor(), ]) # 加载数据集 (假设使用的是COCO格式) dataset = datasets.CocoDetection(root='path_to_images', annFile='annotations.json', transform=data_transforms) # 创建DataLoader用于批量处理 dataloader = torch.utils.data.DataLoader(dataset, batch_size=2, shuffle=True) ``` #### 2. 构建 Faster R-CNN 模型 PyTorch 中提供了预定义的 Faster R-CNN 模型结构,可以直接调用并修改其分类头部以适配自定义类别数。 ```python import torchvision.models as models import torch.nn as nn def create_model(num_classes): model = models.detection.fasterrcnn_resnet50_fpn(pretrained=False) # 不加载预训练权重 # 替换分类器层以适应新的类别数量 in_features = model.roi_heads.box_predictor.cls_score.in_features model.roi_heads.box_predictor = models.detection.faster_rcnn.FastRCNNPredictor(in_features, num_classes) return model num_classes = 91 # 假设我们有91类对象 model = create_model(num_classes).to('cuda') ``` #### 3. 设置优化器和学习率调度器 为了更好地控制模型参数更新过程,需配置合适的优化算法与动态调整的学习率策略。 ```python params = [p for p in model.parameters() if p.requires_grad] optimizer = torch.optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005) lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=3, gamma=0.1) ``` #### 4. 开始训练循环 编写完整的训练逻辑,在每次迭代中完成前向传播、损失计算、反向梯度传递及参数更新等步骤。 ```python device = 'cuda' for epoch in range(epochs): model.train() total_loss = [] for images, targets in dataloader: images = list(image.to(device) for image in images) # 转化targets到适合的形式 targets = [{k: v.to(device) for k, v in t.items()} for t in targets] loss_dict = model(images, targets) losses = sum(loss for loss in loss_dict.values()) optimizer.zero_grad() losses.backward() optimizer.step() total_loss.append(losses.item()) avg_loss = sum(total_loss)/len(total_loss) print(f'Epoch {epoch}, Loss: {avg_loss}') lr_scheduler.step() print("Training completed.") ``` 以上代码展示了如何构建一个基础版本的 Faster R-CNN 并对其进行端到端训练的过程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值