python画三维轨迹图

时间: 2023-05-31 22:20:14 浏览: 60
### 回答1: Python是一种高效的编程语言,在数据可视化方面有着强大的功能,可以用于画三维轨迹图。画三维轨迹图需要使用Python中的一些库,例如matplotlib、numpy和mayavi等。 首先,我们需要导入这些库,并创建一个空的三维坐标系: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') 接下来,我们需要准备要绘制的数据,这些数据应该是一些三维点的坐标。我们可以使用numpy数组存储这些坐标,例如: x = np.array([1, 2, 3, 4, 5]) y = np.array([2, 3, 4, 5, 6]) z = np.array([3, 4, 5, 6, 7]) 在准备好数据之后,我们可以调用ax.plot函数绘制轨迹图: ax.plot(x, y, z) 最后,我们可以在轨迹图上添加一些标签和标题,使图像更加清晰: ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') ax.set_title('3D Trajectory Plot') plt.show() 这是一个基本的Python画三维轨迹图的过程。如果需要绘制更加复杂的轨迹图,可以使用mayavi库。该库提供了许多高级三维可视化功能,如颜色映射和透明度等。 ### 回答2: Python是一种十分强大的编程语言,在科学计算、数据分析、机器学习等领域广泛应用。其优秀的可视化效果也为用户提供了很多便利。本文将介绍如何使用Python画三维轨迹图。 首先,为了使用Python画三维轨迹图,我们需要使用一个叫做matplotlib的库。Matplotlib是Python中非常常用的图形库,可以用来绘制各种图形,包括线形图、柱状图、散点图、轮廓图等等,其中也包含了三维绘图的功能。 在使用Matplotlib画三维轨迹图之前,我们需要导入必要的库,包括NumPy和Matplotlib本身。下面是导入这些库的代码: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D ``` 接着,我们需要准备一些数据,这里我使用一个简单的例子来说明。假设有一颗行星正在绕着太阳旋转,并且在太阳系的参考系下,我们可以记录下行星绕太阳的轨迹。假设行星的轨迹方程如下: $$x=a\sin(\omega t)$$ $$y=b\sin(\omega t+\phi)$$ $$z=c\sin(\omega t+\theta)$$ 其中,$a,b,c$分别为椭圆在$x$轴、$y$轴、$z$轴上的半轴长度,$\omega$是角速度,$\phi$和$\theta$是初始角度。为了方便,我们假设$a=b=c=1$,$\omega=1$,$\phi=0$,$\theta=\pi/3$。 接下来,我们需要用Python代码实现上述轨迹方程,并将结果绘制出来。具体代码如下: ```python # 定义轨迹方程 def orbit(t): x = np.sin(t) y = np.sin(t) z = np.sin(t + np.pi/3) return x, y, z # 设置绘图空间 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制轨迹 t = np.linspace(-10*np.pi, 10*np.pi, 1000) x, y, z = orbit(t) ax.plot(x, y, z) # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图像 plt.show() ``` 在这段代码中,我们首先定义了轨迹方程。然后,我们创建一个三维图形空间,并使用plot()函数将轨迹绘制出来。最后,我们还设置了坐标轴标签,并将图像显示出来。 运行上述代码,我们就可以得到如下的三维轨迹图: ![3D轨迹图示例](https://cdn.luogu.com.cn/upload/image_hosting/y4rtloty.png) 可以看到,我们已经成功地使用Python画出了三维轨迹图。当然,在实际应用中,我们可能需要根据具体情况修改代码,但总的来说,绘制三维轨迹图的方式和绘制其他类型的图形基本类似。 ### 回答3: Python是一门强大的编程语言,功能丰富,可以用于各种不同的领域,包括数据分析、机器学习、科学计算等。在数据可视化方面,Python也有非常出色的表现,可以用来绘制各种类型的图表,包括三维轨迹图。 在Python中,可以使用一些流行的库来绘制三维轨迹图,如Matplotlib、NumPy和mpl_toolkits三维绘图工具包。对于一个三维空间中的轨迹,要绘制其图像,需要依次给出其在x、y、z方向上的坐标点,然后使用库来将这些点绘制为轨迹。 以下是绘制三维轨迹图的具体步骤: 1. 安装必要的软件包 在绘制三维轨迹图之前,需要确保已经安装了必要的软件包。在这里,我们将使用Matplotlib和mpl_toolkits工具包来完成绘图工作。可以使用下面的命令来安装它们: pip install matplotlib pip install mpl_toolkits 2. 创建数据 在绘制三维轨迹图之前,需要先创建用于绘图的数据。在这里,我们可以使用NumPy库来生成随机的三维坐标点。可以使用下面的代码来生成数据: import numpy as np data = np.random.rand(100, 3) 这段代码会生成100个在[0, 1]内的随机x、y、z坐标值。当然,也可以使用自己的数据集来代替这个随机数据。 3. 绘制图形 在数据准备好之后,就可以开始绘制三维轨迹图了。在这里,我们需要使用Matplotlib和mpl_toolkits工具包提供的函数来设置图形的属性和样式。 下面是一个基本的绘图代码示例: from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt fig = plt.figure() ax = fig.gca(projection='3d') ax.plot(data[:, 0], data[:, 1], data[:, 2]) plt.show() 这段代码会创建一个3D图形,将data数组中的三维坐标点绘制成轨迹。结果如下图所示: ![alt text](https://www.micronengineer.com/wp-content/uploads/2016/03/example%20trajectory.png) 4. 设置图像属性 为了让图像更加美观,还可以对其进行一些属性设置。比如可以为轨迹添加标签、设置坐标范围、设置坐标轴标签等。 下面是一个基本的属性设置的代码示例: ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') ax.set_xlim3d(0, 1) ax.set_ylim3d(0, 1) ax.set_zlim3d(0, 1) ax.set_title('My Trajectory') 这段代码会将x、y、z轴的标签设置为X、Y、Z;将坐标范围设置为[0, 1];将图形的标题设置为My Trajectory。 5. 保存图像 最后,可以使用Matplotlib提供的保存函数将图像保存为文件。可以使用下面的代码将图像保存为png格式: plt.savefig('my_trajectory.png') 这段代码会将图像保存为当前工作目录下的my_trajectory.png文件。 总之,使用Python绘制三维轨迹图非常容易,只需要几行代码就可以完成。通过定制属性和样式,可以生成各种美观的图像来展示数据集中的轨迹。

相关推荐

### 回答1: 好的,我来给您一个例子,以三元一次常微分方程为例,画出其解的三维图像。 假设我们有如下的三元一次常微分方程: dx/dt = y dy/dt = z dz/dt = -x - y - z 这个方程组描述了一个在三维空间中沿着螺旋线运动的物体。我们可以使用 MATLAB 的 ode45 函数求解这个方程组的解,并使用 plot3 函数画出它的三维图像。具体代码如下: matlab % 定义方程组 f = @(t, Y) [Y(2); Y(3); -Y(1) - Y(2) - Y(3)]; % 求解方程组 [t, Y] = ode45(f, [0 20], [1 0 0]); % 绘制三维图像 plot3(Y(:,1), Y(:,2), Y(:,3), 'LineWidth', 2); xlabel('x'), ylabel('y'), zlabel('z'); title('运动轨迹'); 运行这段代码后,可以得到一个沿着螺旋线运动的物体的三维轨迹图像。如果您想要更改初始条件或者修改方程组,可以自行调整代码中的参数。 ### 回答2: 要画出三元一次常微分方程的三维图,我们首先需要了解三元一次常微分方程的基本形式。一般来说,三元一次常微分方程可以表示为: dx/dt = f(x, y, z) dy/dt = g(x, y, z) dz/dt = h(x, y, z) 其中,f(x, y, z),g(x, y, z),h(x, y, z)是关于x, y, z的函数。通过这组方程,我们可以描述一个三维空间中的点(x, y, z)随时间t的变化。 接下来,我们需要确定方程中的函数f, g, h的具体形式。以一个简单的例子来说明,假设我们的方程为: dx/dt = x + y + z dy/dt = -x + y - z dz/dt = -2x + 2y + 3z 我们可以通过求解这组方程,得到x, y, z随时间t的变化规律。然后,我们可以选择一组初始条件,如x(0)=1, y(0)=2, z(0)=3,并将其带入方程中求解。得到的解可以表示为一个函数x(t), y(t), z(t)。 最后,我们可以利用软件工具如Matlab或Python中的matplotlib库,将得到的函数x(t), y(t), z(t)的曲线绘制在三维坐标系中。其中,t轴表示时间,x轴表示x的值,y轴表示y的值,z轴表示z的值。通过观察这个三维图,我们可以更直观地了解方程描述的物理或数学模型在三维空间中的变化过程。 综上所述,要画出三元一次常微分方程的三维图,我们需要确定方程的具体形式,求解方程得到关于时间的函数表达式,选择初始条件,利用计算工具绘制出得到的函数在三维坐标系中的图像。这样,我们就可以通过这个三维图更好地理解方程描述的系统的动态行为。 ### 回答3: 三元一次常微分方程可以表示为如下形式: $ \frac{d^3x}{dt^3}+a\frac{d^2x}{dt^2}+b\frac{dx}{dt}+cx = f(t) $ 其中,$a$、$b$、$c$为常数,$f(t)$为已知函数。 为了画出该方程的三维图,我们需要确定轴的范围和步长。假设时间轴$t$的范围为$t_{\text{min}}$到$t_{\text{max}}$,步长为$\Delta t$;$x$的范围为$x_{\text{min}}$到$x_{\text{max}}$,步长为$\Delta x$。 我们通过数值解的方法来获得方程的解集。首先,我们将时间轴$t$分为若干个等距的点。对于每个时间点$t_i$,我们可以通过迭代的方法计算出$x(t_i)$的值。 根据方程的定义,我们可以得到如下的迭代计算公式: $ x(t_{i+1}) = x(t_i) + \Delta t \cdot v(t_i) $ $ v(t_{i+1}) = v(t_i) + \Delta t \cdot a(t_i) $ $ a(t_{i+1}) = a(t_i) + \Delta t \cdot \left[-\frac{b}{c}v(t_i) - \frac{a}{c}a(t_i) + \frac{f(t_i)}{c}\right] $ 其中,$x(t_i)$、$v(t_i)$和$a(t_i)$分别是位置、速度和加速度在$t_i$时刻的值。 我们从初始条件开始迭代计算,直到达到$t_{\text{max}}$时刻为止。在每个时间点上,我们都可以获得$x(t_i)$的值,这样就可以绘制出方程的三维图像。 在三维图中,横轴表示时间$t$,纵轴表示位置$x$,而高度方向表示方程的解集。不同颜色或线条的曲线表示方程的不同初始条件下的解。 通过绘制方程的三维图,我们可以更直观地理解方程的解集。同时,我们还可以通过调整参数$a$、$b$和$c$,以及初始条件和已知函数$f(t)$,来观察方程解集的变化,进一步了解方程的性质。
好的,这里是一个简单的带空气阻力的小球斜抛运动三维空间建模的Python示例代码: python import math import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 定义常量 g = 9.8 # 重力加速度 rho = 1.2 # 空气密度 Cd = 0.47 # 小球的阻力系数 A = math.pi * (0.036 / 2) ** 2 # 小球的横截面积 m = 0.045 # 小球的质量 # 定义初始条件 v0 = 20 # 初始速度 theta = 45 # 发射角度 x0, y0, z0 = 0, 0, 0 # 初始位置 # 计算运动轨迹 dt = 0.01 # 时间间隔 vx0 = v0 * math.cos(theta * math.pi / 180) vy0 = v0 * math.sin(theta * math.pi / 180) vz0 = 0 vx, vy, vz = [vx0], [vy0], [vz0] x, y, z = [x0], [y0], [z0] while y[-1] >= 0: v = math.sqrt(vx[-1]**2 + vy[-1]**2 + vz[-1]**2) ax = -0.5 * rho * Cd * A * vx[-1] * v / m ay = -0.5 * rho * Cd * A * vy[-1] * v / m - g az = -0.5 * rho * Cd * A * vz[-1] * v / m vx.append(vx[-1] + ax * dt) vy.append(vy[-1] + ay * dt) vz.append(vz[-1] + az * dt) x.append(x[-1] + vx[-2] * dt + 0.5 * ax * dt ** 2) y.append(y[-1] + vy[-2] * dt + 0.5 * ay * dt ** 2) z.append(z[-1] + vz[-2] * dt + 0.5 * az * dt ** 2) # 绘制运动轨迹 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot(x, y, z) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.show() 这段代码使用了Euler方法对小球的运动轨迹进行了数值模拟,其中考虑了空气阻力的影响。最终,它将小球的运动轨迹绘制在了三维空间中,呈现出了更加真实的效果。 需要注意的是,这段代码只是一个简单的示例,它并没有考虑到一些实际问题,例如空气阻力随温度和湿度变化的影响等。如果需要更加准确的模拟,需要进行更加详细的研究和计算。
### 回答1: Python是一种广泛使用的编程语言,具有强大的数值计算和科学计算能力。在航天领域,Python常被用于轨道计算和空间轨迹分析。如果已经知道轨道的根数(包括离心率、半长轴、倾角、升交点赤经、近地点幅角等参数),我们可以利用Python来求解与这些根数相关的速度和位置信息。 首先,我们可以利用轨道根数计算轨道周长和周期。根据椭圆轨道的基本公式,可以得到轨道周长和周期的表达式。由此,我们可以利用给定的根数参数,通过编写Python函数来计算轨道的周长和周期。 其次,根据轨道周长和周期,我们可以计算轨道上点在单位时间内所经过的弧长,也即轨道点的速度大小。通过将单位时间内的弧长除以单位时间,就可以得到轨道点的速度大小。再结合点的位置矢量计算方法,我们可以得到轨道点的速度矢量。 最后,使用速度矢量和位置矢量的计算公式,我们可以得到轨道点的位置信息。根据点在轨道上的位置,我们可以计算其相对于地心的坐标。 总结来说,通过Python编程语言,我们可以利用已知的轨道根数参数,通过计算公式和数值计算方法,求解轨道点的速度和位置信息。这样,我们就能够更好地了解和分析天体轨迹,满足航天领域的需求。 ### 回答2: 是的,Python可以通过已知轨道根数来求解速度和位置。轨道根数是描述天体轨道形状和大小的参数。常见的轨道根数包括半长轴、偏心率、轨道倾角、升交点赤经等。 在Python中,可以使用天体力学相关的库来进行轨道根数求解。例如,可以使用Astropy库提供的相应函数,如orbital.elements_from_binary等来计算轨道根数。然后,根据已知的根数,可以使用天体力学的公式和算法来计算速度和位置。 具体而言,可以使用开普勒定律来求解速度和位置。通过开普勒第三定律(也称为调和定律),可以根据轨道根数和引力常数来计算天体的周期。然后,根据轨道根数和周期,可以计算出圆周运动的角速度。 在此基础上,可以使用角速度来计算天体在轨道上的位置。通过已知的轨道根数和角度,可以使用正弦、余弦等三角函数来计算出所需的位置。 综上所述,借助Python中的天体力学库以及对开普勒定律和角速度的理解,我们可以利用已知的轨道根数来求解速度和位置。这些计算对于天体力学研究、航天器轨道设计等领域具有重要意义。 ### 回答3: Python可以使用空间力学的数学模型来计算和求解轨道根数的速度和位置。在空间力学中,轨道根数是描述行星、卫星或其他天体在运动过程中轨道形状和位置的重要参数。 Python的科学计算库和天体力学模块提供了许多函数和工具来计算轨道根数的速度和位置。通过给定轨道根数的值,可以使用这些函数来计算出相应的速度和位置。 其中,速度可以通过轨道根数中的速度向量元素来计算。这些元素包括轨道倾角、升交点赤经、升交点赤纬和轨道偏心率等。通过使用空间力学的公式和数学计算,可以将这些元素转换为三维速度向量。 同样地,位置也可以通过轨道根数中的位置向量元素来计算。这些元素包括轨道倾角、升交点赤经、升交点赤纬和轨道倾角等。通过使用空间力学的公式和数学计算,可以将这些元素转换为三维位置向量。 Python的科学计算库可以提供精确的计算结果,并且能够处理复杂的轨道根数和计算需求。通过使用这些功能,我们可以快速准确地求解轨道根数的速度和位置,帮助我们更好地理解和研究天体运动的规律。
计算原子密度函数需要将轨迹文件中的原子坐标取出来,然后将空间划分为小的立方体,计算每个立方体中原子的数量,最后根据立方体大小、总原子数等参数计算原子密度函数。 以下是一个简单的Python代码,可以计算轨迹文件中的原子密度函数: python import numpy as np # 读取轨迹文件,每一行是一个帧,每一列是一个原子的x,y,z坐标,用空格分隔 data = np.genfromtxt('traj.xyz', skip_header=2, usecols=(1, 2, 3)) num_frames = len(data) // n_atoms data = data.reshape(num_frames, n_atoms, 3) # 计算原子密度函数 n_bins = 100 # 立方体数量 bin_size = 0.1 # 立方体大小 volume = bin_size ** 3 # 立方体体积 n_atoms = data.shape[1] # 总原子数 rho = np.zeros(n_bins) # 原子密度函数 for frame in data: for atom in frame: x, y, z = atom i = int(x / bin_size) j = int(y / bin_size) k = int(z / bin_size) if 0 <= i < n_bins and 0 <= j < n_bins and 0 <= k < n_bins: rho[i,j,k] += 1 # 归一化 rho = rho / (n_atoms * volume * num_frames) # 可视化 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') x, y, z = np.indices(rho.shape) ax.scatter(x, y, z, s=5, c=rho.flatten()) plt.show() 这个代码首先使用numpy库中的genfromtxt函数读取轨迹文件,指定跳过前两行(第一行为原子数目,第二行为空行),只读取第二列到第四列的数据,即原子的x、y、z坐标。然后,将读取的数据重塑为三维数组,其中第一维表示帧数,第二维表示原子数,第三维表示坐标数(即3)。 接下来,该代码计算原子密度函数。首先,定义立方体数量n_bins和立方体大小bin_size。然后,计算立方体体积volume,并初始化原子密度函数rho为一个长度为n_bins的零数组。在循环中,对于每个帧和每个原子,计算原子所在的立方体的索引i、j、k,并将rho[i,j,k]加1。最后,将rho归一化为原子密度,并使用matplotlib库可视化原子密度函数。 请注意,上述代码中的变量n_atoms需要根据轨迹文件中的原子数进行修改。此外,该代码仅仅提供了一个简单的计算原子密度的方法,如果您需要更精确的计算,请参考文献或使用更专业的软件包。

最新推荐

python 画二维、三维点之间的线段实现方法

今天小编就为大家分享一篇python 画二维、三维点之间的线段实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python 画3维轨迹图并进行比较的实例

今天小编就为大家分享一篇python 画3维轨迹图并进行比较的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

基于python的宠物商店。python+django+vue搭建的宠物商店-毕业设计-课程设计.zip

基于python的宠物商店。python+django+vue搭建的宠物商店-毕业设计-课程设计

基于Matlab的图像去雾(多方法对比,PSNR,信息熵,GUI界面).zip

基于Matlab的图像去雾(多方法对比,PSNR,信息熵,GUI界面).zip

GMW 3600 通用供应商分析 开发 验证过程任务和可交付成果.pdf

GMW 3600 通用供应商分析 开发 验证过程任务和可交付成果.pdf

代码随想录最新第三版-最强八股文

这份PDF就是最强⼋股⽂! 1. C++ C++基础、C++ STL、C++泛型编程、C++11新特性、《Effective STL》 2. Java Java基础、Java内存模型、Java面向对象、Java集合体系、接口、Lambda表达式、类加载机制、内部类、代理类、Java并发、JVM、Java后端编译、Spring 3. Go defer底层原理、goroutine、select实现机制 4. 算法学习 数组、链表、回溯算法、贪心算法、动态规划、二叉树、排序算法、数据结构 5. 计算机基础 操作系统、数据库、计算机网络、设计模式、Linux、计算机系统 6. 前端学习 浏览器、JavaScript、CSS、HTML、React、VUE 7. 面经分享 字节、美团Java面、百度、京东、暑期实习...... 8. 编程常识 9. 问答精华 10.总结与经验分享 ......

无监督视觉表示学习中的时态知识一致性算法

无监督视觉表示学习中的时态知识一致性维信丰酒店1* 元江王2*†马丽华2叶远2张驰2北京邮电大学1旷视科技2网址:fengweixin@bupt.edu.cn,wangyuanjiang@megvii.com{malihua,yuanye,zhangchi} @ megvii.com摘要实例判别范式在无监督学习中已成为它通常采用教师-学生框架,教师提供嵌入式知识作为对学生的监督信号。学生学习有意义的表征,通过加强立场的空间一致性与教师的意见。然而,在不同的训练阶段,教师的输出可以在相同的实例中显著变化,引入意外的噪声,并导致由不一致的目标引起的灾难性的本文首先将实例时态一致性问题融入到现有的实例判别范式中 , 提 出 了 一 种 新 的 时 态 知 识 一 致 性 算 法 TKC(Temporal Knowledge Consis- tency)。具体来说,我们的TKC动态地集成的知识的时间教师和自适应地选择有用的信息,根据其重要性学习实例的时间一致性。

create or replace procedure这句语句后面是自定义么

### 回答1: 是的,"create or replace procedure"语句后面应该跟着自定义的存储过程名。例如: ```sql create or replace procedure my_procedure_name ``` 这里"my_procedure_name"是你自己定义的存储过程名,可以根据具体需求进行命名。 ### 回答2: 不完全是自定义。在Oracle数据库中,"CREATE OR REPLACE PROCEDURE"是一条SQL语句,用于创建或替换一个存储过程。关键词"CREATE"表示创建新的存储过程,关键词"OR REPLACE"表示如果该存储过程

数据结构1800试题.pdf

你还在苦苦寻找数据结构的题目吗?这里刚刚上传了一份数据结构共1800道试题,轻松解决期末挂科的难题。不信?你下载看看,这里是纯题目,你下载了再来私信我答案。按数据结构教材分章节,每一章节都有选择题、或有判断题、填空题、算法设计题及应用题,题型丰富多样,共五种类型题目。本学期已过去一半,相信你数据结构叶已经学得差不多了,是时候拿题来练练手了,如果你考研,更需要这份1800道题来巩固自己的基础及攻克重点难点。现在下载,不早不晚,越往后拖,越到后面,你身边的人就越卷,甚至卷得达到你无法想象的程度。我也是曾经遇到过这样的人,学习,练题,就要趁现在,不然到时你都不知道要刷数据结构题好还是高数、工数、大英,或是算法题?学完理论要及时巩固知识内容才是王道!记住!!!下载了来要答案(v:zywcv1220)。

基于对比检测的高效视觉预训练

10086⇥⇥⇥⇥基于对比检测的高效视觉预训练Ol i vierJ. He´naf f SkandaKoppula Jean-BaptisteAlayracAaronvandenOord OriolVin yals JoaoCarreiraDeepMind,英国摘要自我监督预训练已被证明可以为迁移学习提供然而,这些性能增益是以大的计算成本来实现的,其中最先进的方法需要比监督预训练多一个数量级的计算。我们通过引入一种新的自监督目标,对比检测,任务表示与识别对象级功能跨增强来解决这个计算瓶颈。该目标可提取每幅图像的丰富学习信号,从而在各种下游任务上实现最先进的传输精度,同时需要高达10少训练特别是,我们最强的ImageNet预训练模型的性能与SEER相当,SEER是迄今为止最大的自监督系统之一,它使用了1000多个预训练数据。最后,我们的目标无缝地处理更复杂图像的预训练,例如COCO中的图像,缩小了从COCO到PASCAL的监督迁移学习的差距1. 介绍自从Al