main.py代码是主函数主文件,main.py中用到robot.py trainer .py logger.py utils.py 四个代码中的模块。
为什么没有在主文件中导入 models.py文件呢???
#下面是trainer.py文件导入的库
import os
import numpy as np
import cv2
import torch
from torch.autograd import Variable
from models import push_grasp_net, goal_conditioned_net
from scipy import ndimage
import matplotlib.pyplot as plt
from models import push_grasp_net, goal_conditioned_net可能是因为在trainer.py文件中已经导入了models.py中的相关模块(如push_grasp_net, goal_conditioned_net),所以在main.py中就不需要再次导入models.py。
下面是2018年的代码中的Python 脚本文件,其中calibrate.py debug.py plot.py touch.py四个文件在2024年的文件夹中是没有的。
calibrate.py:可能用于摄像头或传感器的标定(calibration),确保在仿真或真实世界中得到准确的感知数据。
create.py:可能是用于创建某些对象或者数据的文件,具体功能需要查看代码内容。
debug.py:通常包含用于调试项目的代码,帮助开发者定位问题或查看中间结果。
evaluate.py:用于评估模型性能,可能通过测试数据计算抓取或推送的成功率等指标。
logger.py:通常用于管理日志的生成和保存,记录训练或测试的详细过程。
main.py:主文件,通常是整个项目的入口点,负责调用其他模块的功能。训练、测试、仿真环境初始化等可能在此文件中实现。
models.py:定义神经网络模型的文件,通常包括了训练使用的深度学习网络的结构。
plot.py:可能用于绘制训练过程中的图表,比如绘制抓取成功率、损失等信息。
README.md:项目说明文件,提供了项目的背景信息、安装步骤、使用指南等。
robot.py:可能与机器人控制相关的代码,负责控制物理机器人或仿真机器人执行动作。
touch.py:可能用于触觉传感器或者其他感知手段的数据处理或模拟。
trainer.py:训练模块,负责模型的训练逻辑,包括前向传递、损失计算和反向传播等。
utils.py:常用工具函数的集合,用于简化主程序的代码,包含一些辅助性功能,如图像处理、数据加载等。
import time
import datetime
import os
import threading
import argparse
#以上是常见python的库
import numpy as np
import cv2
import torch
#这是导入第三方库
from robot import Robot
from trainer import Trainer
from logger import Logger
import utils
#导入自定义的模块
from tensorboardX import SummaryWriter
from skimage.morphology.convex_hull import convex_hull_image
from scipy.ndimage.morphology import binary_dilation
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
#设置了环境变量CUDA_VISIBLE_DEVICES为'0',这意味着只有第一个GPU设备可见,其他GPU设备将被隐藏。这在运行需要使用GPU加速的程序时非常有用。
from tensorboardX import SummaryWriter:
这是从tensorboardX库中导入SummaryWriter类。
TensorBoard是一个用于可视化神经网络训练过程的工具,它可以展示模型的结构、指标变化趋势等。
SummaryWriter是TensorBoard的一个组件,用于将训练过程中的数据写入日志文件,以便后续使用TensorBoard进行可视化。
from skimage.morphology.convex_hull import convex_hull_image:
这是从skimage.morphology.convex_hull模块中导入convex_hull_image函数。
skimage是一个用于图像处理的Python库,morphology子模块提供了一些形态学操作,如膨胀、腐蚀、开运算、闭运算等。
convex_hull_image函数用于计算二值图像的凸包,即找到一个最小的凸多边形,使得所有原图像中的非零像素都在这个多边形内。
from scipy.ndimage.morphology import binary_dilation:
这是从scipy.ndimage.morphology模块中导入binary_dilation函数。
scipy是一个用于科学计算的Python库,ndimage子模块提供了对多维图像的处理功能。
binary_dilation函数用于对二值图像进行膨胀操作,即扩大图像中的白色区域(通常表示前景),可以用于去除噪声、连接相邻的物体等。