Skip to content

损失函数 ​

交点损失 ​

对于线段 AB 与 CD:

orientation(P1,P2,P3)=tanh⁡((P2y−P1y)⋅(P3x−P2x)−(P2x−P1x)⋅(P3y−P2y))o1=orientation(A,B,C)o2=orientation(A,B,D)o3=orientation(C,D,A)o4=orientation(C,D,B)o5=orientation(B,C,D)intersect(AB,CD)=(o1≠o2)⋅(o3≠o4)orient(AB,CD)=o1⋅o5

相交判断(intersect):

  • (o1≠o2):点 C 和 D 在线段 AB 两侧
  • (o3≠o4):点 A 和 B 在线段 CD 两侧

方向关系(orient):

  • 正值 → 同向旋转
  • 负值 → 反向旋转
  • 零 → 至少三点共线

如果两条曲线段相交,则应鼓励它们之间的夹角尽量要小;如果不相交,则 应增大它们之间的夹角:

θ=atan2(cross(AB,CD),dot(AB,CD))Lintersect = intersect ⋅(λgeometric_punish−1)⋅cos⁡(θ)

角度损失 ​

角度损失用来鼓励生成的 Bézier 曲线的连接部分保持良好的角度关系:

Langle =Relu(−AB→⋅BC→|AB→|⋅|BC→|)+Relu(−BC→⋅CD→|BC→|⋅|CD→|)

通过惩罚相邻线段形成的钝角(>90°),迫使模型学习形成直角或锐角(≤90°)的几何结构