SYMBOL INDEX (330 symbols across 10 files) FILE: deploy/triton-inference-server/boundingbox.py class BoundingBox (line 1) | class BoundingBox: method __init__ (line 2) | def __init__(self, classID, confidence, x1, x2, y1, y2, image_width, i... method box (line 14) | def box(self): method width (line 17) | def width(self): method height (line 20) | def height(self): method center_absolute (line 23) | def center_absolute(self): method center_normalized (line 26) | def center_normalized(self): method size_absolute (line 29) | def size_absolute(self): method size_normalized (line 32) | def size_normalized(self): FILE: deploy/triton-inference-server/labels.py class COCOLabels (line 3) | class COCOLabels(Enum): FILE: deploy/triton-inference-server/processing.py function preprocess (line 6) | def preprocess(img, input_shape, letter_box=True): function postprocess (line 28) | def postprocess(num_dets, det_boxes, det_scores, det_classes, img_w, img... FILE: deploy/triton-inference-server/render.py function render_box (line 13) | def render_box(img, box, color=(200, 200, 200)): function render_filled_box (line 38) | def render_filled_box(img, box, color=(200, 200, 200)): function get_text_size (line 60) | def get_text_size(img, text, normalised_scaling=1.0): function render_text (line 80) | def render_text(img, text, pos, color=(200, 200, 200), normalised_scalin... FILE: hubconf.py function create (line 22) | def create(name, pretrained, channels, classes, autoshape): function custom (line 57) | def custom(path_or_model='path/to/model.pt', autoshape=True): function yolov7 (line 81) | def yolov7(pretrained=True, channels=3, classes=80, autoshape=True): FILE: models/common.py function autopad (line 23) | def autopad(k, p=None): # kernel, padding class MP (line 30) | class MP(nn.Module): method __init__ (line 31) | def __init__(self, k=2): method forward (line 35) | def forward(self, x): class SP (line 39) | class SP(nn.Module): method __init__ (line 40) | def __init__(self, k=3, s=1): method forward (line 44) | def forward(self, x): class ReOrg (line 48) | class ReOrg(nn.Module): method __init__ (line 49) | def __init__(self): method forward (line 52) | def forward(self, x): # x(b,c,w,h) -> y(b,4c,w/2,h/2) class Concat (line 56) | class Concat(nn.Module): method __init__ (line 57) | def __init__(self, dimension=1): method forward (line 61) | def forward(self, x): class Chuncat (line 65) | class Chuncat(nn.Module): method __init__ (line 66) | def __init__(self, dimension=1): method forward (line 70) | def forward(self, x): class Shortcut (line 80) | class Shortcut(nn.Module): method __init__ (line 81) | def __init__(self, dimension=0): method forward (line 85) | def forward(self, x): class Foldcut (line 89) | class Foldcut(nn.Module): method __init__ (line 90) | def __init__(self, dimension=0): method forward (line 94) | def forward(self, x): class Conv (line 99) | class Conv(nn.Module): method __init__ (line 101) | def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in,... method forward (line 107) | def forward(self, x): method fuseforward (line 110) | def fuseforward(self, x): class RobustConv (line 114) | class RobustConv(nn.Module): method __init__ (line 116) | def __init__(self, c1, c2, k=7, s=1, p=None, g=1, act=True, layer_scal... method forward (line 122) | def forward(self, x): class RobustConv2 (line 130) | class RobustConv2(nn.Module): method __init__ (line 132) | def __init__(self, c1, c2, k=7, s=4, p=None, g=1, act=True, layer_scal... method forward (line 140) | def forward(self, x): function DWConv (line 147) | def DWConv(c1, c2, k=1, s=1, act=True): class GhostConv (line 152) | class GhostConv(nn.Module): method __init__ (line 154) | def __init__(self, c1, c2, k=1, s=1, g=1, act=True): # ch_in, ch_out,... method forward (line 160) | def forward(self, x): class Stem (line 165) | class Stem(nn.Module): method __init__ (line 167) | def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in,... method forward (line 176) | def forward(self, x): class DownC (line 181) | class DownC(nn.Module): method __init__ (line 183) | def __init__(self, c1, c2, n=1, k=2): method forward (line 191) | def forward(self, x): class SPP (line 195) | class SPP(nn.Module): method __init__ (line 197) | def __init__(self, c1, c2, k=(5, 9, 13)): method forward (line 204) | def forward(self, x): class Bottleneck (line 209) | class Bottleneck(nn.Module): method __init__ (line 211) | def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_ou... method forward (line 218) | def forward(self, x): class Res (line 222) | class Res(nn.Module): method __init__ (line 224) | def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_ou... method forward (line 232) | def forward(self, x): class ResX (line 236) | class ResX(Res): method __init__ (line 238) | def __init__(self, c1, c2, shortcut=True, g=32, e=0.5): # ch_in, ch_o... class Ghost (line 243) | class Ghost(nn.Module): method __init__ (line 245) | def __init__(self, c1, c2, k=3, s=1): # ch_in, ch_out, kernel, stride method forward (line 254) | def forward(self, x): class SPPCSPC (line 262) | class SPPCSPC(nn.Module): method __init__ (line 264) | def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5, k=(5, 9, 1... method forward (line 276) | def forward(self, x): class GhostSPPCSPC (line 282) | class GhostSPPCSPC(SPPCSPC): method __init__ (line 284) | def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5, k=(5, 9, 1... class GhostStem (line 296) | class GhostStem(Stem): method __init__ (line 298) | def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in,... class BottleneckCSPA (line 307) | class BottleneckCSPA(nn.Module): method __init__ (line 309) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... method forward (line 317) | def forward(self, x): class BottleneckCSPB (line 323) | class BottleneckCSPB(nn.Module): method __init__ (line 325) | def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5): # ch_in,... method forward (line 333) | def forward(self, x): class BottleneckCSPC (line 340) | class BottleneckCSPC(nn.Module): method __init__ (line 342) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... method forward (line 351) | def forward(self, x): class ResCSPA (line 357) | class ResCSPA(BottleneckCSPA): method __init__ (line 359) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class ResCSPB (line 365) | class ResCSPB(BottleneckCSPB): method __init__ (line 367) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class ResCSPC (line 373) | class ResCSPC(BottleneckCSPC): method __init__ (line 375) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class ResXCSPA (line 381) | class ResXCSPA(ResCSPA): method __init__ (line 383) | def __init__(self, c1, c2, n=1, shortcut=True, g=32, e=0.5): # ch_in,... class ResXCSPB (line 389) | class ResXCSPB(ResCSPB): method __init__ (line 391) | def __init__(self, c1, c2, n=1, shortcut=True, g=32, e=0.5): # ch_in,... class ResXCSPC (line 397) | class ResXCSPC(ResCSPC): method __init__ (line 399) | def __init__(self, c1, c2, n=1, shortcut=True, g=32, e=0.5): # ch_in,... class GhostCSPA (line 405) | class GhostCSPA(BottleneckCSPA): method __init__ (line 407) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class GhostCSPB (line 413) | class GhostCSPB(BottleneckCSPB): method __init__ (line 415) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class GhostCSPC (line 421) | class GhostCSPC(BottleneckCSPC): method __init__ (line 423) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class ImplicitA (line 433) | class ImplicitA(nn.Module): method __init__ (line 434) | def __init__(self, channel, mean=0., std=.02): method forward (line 442) | def forward(self, x): class ImplicitM (line 446) | class ImplicitM(nn.Module): method __init__ (line 447) | def __init__(self, channel, mean=1., std=.02): method forward (line 455) | def forward(self, x): class RepConv (line 463) | class RepConv(nn.Module): method __init__ (line 467) | def __init__(self, c1, c2, k=3, s=1, p=None, g=1, act=True, deploy=Fal... method forward (line 498) | def forward(self, inputs): method get_equivalent_kernel_bias (line 509) | def get_equivalent_kernel_bias(self): method _pad_1x1_to_3x3_tensor (line 518) | def _pad_1x1_to_3x3_tensor(self, kernel1x1): method _fuse_bn_tensor (line 524) | def _fuse_bn_tensor(self, branch): method repvgg_convert (line 554) | def repvgg_convert(self): method fuse_conv_bn (line 561) | def fuse_conv_bn(self, conv, bn): method fuse_repvgg_block (line 584) | def fuse_repvgg_block(self): class RepBottleneck (line 646) | class RepBottleneck(Bottleneck): method __init__ (line 648) | def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_ou... class RepBottleneckCSPA (line 654) | class RepBottleneckCSPA(BottleneckCSPA): method __init__ (line 656) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class RepBottleneckCSPB (line 662) | class RepBottleneckCSPB(BottleneckCSPB): method __init__ (line 664) | def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5): # ch_in,... class RepBottleneckCSPC (line 670) | class RepBottleneckCSPC(BottleneckCSPC): method __init__ (line 672) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class RepRes (line 678) | class RepRes(Res): method __init__ (line 680) | def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_ou... class RepResCSPA (line 686) | class RepResCSPA(ResCSPA): method __init__ (line 688) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class RepResCSPB (line 694) | class RepResCSPB(ResCSPB): method __init__ (line 696) | def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5): # ch_in,... class RepResCSPC (line 702) | class RepResCSPC(ResCSPC): method __init__ (line 704) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... class RepResX (line 710) | class RepResX(ResX): method __init__ (line 712) | def __init__(self, c1, c2, shortcut=True, g=32, e=0.5): # ch_in, ch_o... class RepResXCSPA (line 718) | class RepResXCSPA(ResXCSPA): method __init__ (line 720) | def __init__(self, c1, c2, n=1, shortcut=True, g=32, e=0.5): # ch_in,... class RepResXCSPB (line 726) | class RepResXCSPB(ResXCSPB): method __init__ (line 728) | def __init__(self, c1, c2, n=1, shortcut=False, g=32, e=0.5): # ch_in... class RepResXCSPC (line 734) | class RepResXCSPC(ResXCSPC): method __init__ (line 736) | def __init__(self, c1, c2, n=1, shortcut=True, g=32, e=0.5): # ch_in,... class TransformerLayer (line 746) | class TransformerLayer(nn.Module): method __init__ (line 748) | def __init__(self, c, num_heads): method forward (line 757) | def forward(self, x): class TransformerBlock (line 763) | class TransformerBlock(nn.Module): method __init__ (line 765) | def __init__(self, c1, c2, num_heads, num_layers): method forward (line 774) | def forward(self, x): class Focus (line 796) | class Focus(nn.Module): method __init__ (line 798) | def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in,... method forward (line 803) | def forward(self, x): # x(b,c,w,h) -> y(b,4c,w/2,h/2) class SPPF (line 808) | class SPPF(nn.Module): method __init__ (line 810) | def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13)) method forward (line 817) | def forward(self, x): class Contract (line 824) | class Contract(nn.Module): method __init__ (line 826) | def __init__(self, gain=2): method forward (line 830) | def forward(self, x): class Expand (line 838) | class Expand(nn.Module): method __init__ (line 840) | def __init__(self, gain=2): method forward (line 844) | def forward(self, x): class NMS (line 852) | class NMS(nn.Module): method __init__ (line 858) | def __init__(self): method forward (line 861) | def forward(self, x): class autoShape (line 865) | class autoShape(nn.Module): method __init__ (line 871) | def __init__(self, model): method autoshape (line 875) | def autoshape(self): method forward (line 880) | def forward(self, imgs, size=640, augment=False, profile=False): class Detections (line 935) | class Detections: method __init__ (line 937) | def __init__(self, imgs, pred, files, times=None, names=None, shape=No... method display (line 953) | def display(self, pprint=False, show=False, save=False, render=False, ... method print (line 977) | def print(self): method show (line 981) | def show(self): method save (line 984) | def save(self, save_dir='runs/hub/exp'): method render (line 989) | def render(self): method pandas (line 993) | def pandas(self): method tolist (line 1003) | def tolist(self): method __len__ (line 1011) | def __len__(self): class Classify (line 1015) | class Classify(nn.Module): method __init__ (line 1017) | def __init__(self, c1, c2, k=1, s=1, p=None, g=1): # ch_in, ch_out, k... method forward (line 1023) | def forward(self, x): function transI_fusebn (line 1032) | def transI_fusebn(kernel, bn): class ConvBN (line 1038) | class ConvBN(nn.Module): method __init__ (line 1039) | def __init__(self, in_channels, out_channels, kernel_size, method forward (line 1054) | def forward(self, x): method switch_to_deploy (line 1060) | def switch_to_deploy(self): class OREPA_3x3_RepConv (line 1072) | class OREPA_3x3_RepConv(nn.Module): method __init__ (line 1074) | def __init__(self, in_channels, out_channels, kernel_size, method fre_init (line 1157) | def fre_init(self): method weight_gen (line 1170) | def weight_gen(self): method dwsc2full (line 1206) | def dwsc2full(self, weight_dw, weight_pw, groups): method forward (line 1218) | def forward(self, inputs): class RepConv_OREPA (line 1224) | class RepConv_OREPA(nn.Module): method __init__ (line 1226) | def __init__(self, c1, c2, k=3, s=1, padding=1, dilation=1, groups=1, ... method forward (line 1263) | def forward(self, inputs): method get_custom_L2 (line 1290) | def get_custom_L2(self): method get_equivalent_kernel_bias (line 1301) | def get_equivalent_kernel_bias(self): method _pad_1x1_to_3x3_tensor (line 1307) | def _pad_1x1_to_3x3_tensor(self, kernel1x1): method _fuse_bn_tensor (line 1313) | def _fuse_bn_tensor(self, branch): method switch_to_deploy (line 1345) | def switch_to_deploy(self): class WindowAttention (line 1367) | class WindowAttention(nn.Module): method __init__ (line 1369) | def __init__(self, dim, window_size, num_heads, qkv_bias=True, qk_scal... method forward (line 1403) | def forward(self, x, mask=None): class Mlp (line 1437) | class Mlp(nn.Module): method __init__ (line 1439) | def __init__(self, in_features, hidden_features=None, out_features=Non... method forward (line 1448) | def forward(self, x): function window_partition (line 1456) | def window_partition(x, window_size): function window_reverse (line 1464) | def window_reverse(windows, window_size, H, W): class SwinTransformerLayer (line 1472) | class SwinTransformerLayer(nn.Module): method __init__ (line 1474) | def __init__(self, dim, num_heads, window_size=8, shift_size=0, method create_mask (line 1499) | def create_mask(self, H, W): method forward (line 1521) | def forward(self, x): class SwinTransformerBlock (line 1584) | class SwinTransformerBlock(nn.Module): method __init__ (line 1585) | def __init__(self, c1, c2, num_heads, num_layers, window_size=8): method forward (line 1595) | def forward(self, x): class STCSPA (line 1602) | class STCSPA(nn.Module): method __init__ (line 1604) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... method forward (line 1614) | def forward(self, x): class STCSPB (line 1620) | class STCSPB(nn.Module): method __init__ (line 1622) | def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5): # ch_in,... method forward (line 1632) | def forward(self, x): class STCSPC (line 1639) | class STCSPC(nn.Module): method __init__ (line 1641) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... method forward (line 1652) | def forward(self, x): class WindowAttention_v2 (line 1662) | class WindowAttention_v2(nn.Module): method __init__ (line 1664) | def __init__(self, dim, window_size, num_heads, qkv_bias=True, attn_dr... method forward (line 1723) | def forward(self, x, mask=None): method extra_repr (line 1764) | def extra_repr(self) -> str: method flops (line 1768) | def flops(self, N): class Mlp_v2 (line 1781) | class Mlp_v2(nn.Module): method __init__ (line 1782) | def __init__(self, in_features, hidden_features=None, out_features=Non... method forward (line 1791) | def forward(self, x): function window_partition_v2 (line 1800) | def window_partition_v2(x, window_size): function window_reverse_v2 (line 1808) | def window_reverse_v2(windows, window_size, H, W): class SwinTransformerLayer_v2 (line 1816) | class SwinTransformerLayer_v2(nn.Module): method __init__ (line 1818) | def __init__(self, dim, num_heads, window_size=7, shift_size=0, method create_mask (line 1845) | def create_mask(self, H, W): method forward (line 1867) | def forward(self, x): method extra_repr (line 1927) | def extra_repr(self) -> str: method flops (line 1931) | def flops(self): class SwinTransformer2Block (line 1946) | class SwinTransformer2Block(nn.Module): method __init__ (line 1947) | def __init__(self, c1, c2, num_heads, num_layers, window_size=7): method forward (line 1957) | def forward(self, x): class ST2CSPA (line 1964) | class ST2CSPA(nn.Module): method __init__ (line 1966) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... method forward (line 1976) | def forward(self, x): class ST2CSPB (line 1982) | class ST2CSPB(nn.Module): method __init__ (line 1984) | def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5): # ch_in,... method forward (line 1994) | def forward(self, x): class ST2CSPC (line 2001) | class ST2CSPC(nn.Module): method __init__ (line 2003) | def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ... method forward (line 2014) | def forward(self, x): FILE: models/experimental.py class CrossConv (line 10) | class CrossConv(nn.Module): method __init__ (line 12) | def __init__(self, c1, c2, k=3, s=1, g=1, e=1.0, shortcut=False): method forward (line 20) | def forward(self, x): class Sum (line 24) | class Sum(nn.Module): method __init__ (line 26) | def __init__(self, n, weight=False): # n: number of inputs method forward (line 33) | def forward(self, x): class MixConv2d (line 45) | class MixConv2d(nn.Module): method __init__ (line 47) | def __init__(self, c1, c2, k=(1, 3), s=1, equal_ch=True): method forward (line 65) | def forward(self, x): class Ensemble (line 69) | class Ensemble(nn.ModuleList): method __init__ (line 71) | def __init__(self): method forward (line 74) | def forward(self, x, augment=False): class ORT_NMS (line 87) | class ORT_NMS(torch.autograd.Function): method forward (line 90) | def forward(ctx, method symbolic (line 107) | def symbolic(g, boxes, scores, max_output_boxes_per_class, iou_thresho... class TRT_NMS (line 111) | class TRT_NMS(torch.autograd.Function): method forward (line 114) | def forward( method symbolic (line 134) | def symbolic(g, class ONNX_ORT (line 159) | class ONNX_ORT(nn.Module): method __init__ (line 161) | def __init__(self, max_obj=100, iou_thres=0.45, score_thres=0.25, max_... method forward (line 173) | def forward(self, x): class ONNX_TRT (line 195) | class ONNX_TRT(nn.Module): method __init__ (line 197) | def __init__(self, max_obj=100, iou_thres=0.45, score_thres=0.25, max_... method forward (line 210) | def forward(self, x): class End2End (line 226) | class End2End(nn.Module): method __init__ (line 228) | def __init__(self, model, max_obj=100, iou_thres=0.45, score_thres=0.2... method forward (line 238) | def forward(self, x): function attempt_load (line 247) | def attempt_load(weights, map_location=None): FILE: models/yolo.py class Detect (line 23) | class Detect(nn.Module): method __init__ (line 30) | def __init__(self, nc=80, anchors=(), ch=()): # detection layer method forward (line 42) | def forward(self, x): method _make_grid (line 80) | def _make_grid(nx=20, ny=20): method convert (line 84) | def convert(self, z): class IDetect (line 97) | class IDetect(nn.Module): method __init__ (line 104) | def __init__(self, nc=80, anchors=(), ch=()): # detection layer method forward (line 119) | def forward(self, x): method fuseforward (line 140) | def fuseforward(self, x): method fuse (line 178) | def fuse(self): method _make_grid (line 193) | def _make_grid(nx=20, ny=20): method convert (line 197) | def convert(self, z): class IKeypoint (line 210) | class IKeypoint(nn.Module): method __init__ (line 214) | def __init__(self, nc=80, anchors=(), nkpt=17, ch=(), inplace=True, dw... method forward (line 248) | def forward(self, x): method _make_grid (line 306) | def _make_grid(nx=20, ny=20): class IAuxDetect (line 311) | class IAuxDetect(nn.Module): method __init__ (line 318) | def __init__(self, nc=80, anchors=(), ch=()): # detection layer method forward (line 334) | def forward(self, x): method fuseforward (line 364) | def fuseforward(self, x): method fuse (line 401) | def fuse(self): method _make_grid (line 416) | def _make_grid(nx=20, ny=20): method convert (line 420) | def convert(self, z): class IBin (line 433) | class IBin(nn.Module): method __init__ (line 437) | def __init__(self, nc=80, anchors=(), ch=(), bin_count=21): # detecti... method forward (line 460) | def forward(self, x): method _make_grid (line 503) | def _make_grid(nx=20, ny=20): class Model (line 508) | class Model(nn.Module): method __init__ (line 509) | def __init__(self, cfg='yolor-csp-c.yaml', ch=3, nc=None, anchors=None... method forward (line 581) | def forward(self, x, augment=False, profile=False): method forward_once (line 601) | def forward_once(self, x, profile=False): method _initialize_biases (line 633) | def _initialize_biases(self, cf=None): # initialize biases into Detec... method _initialize_aux_biases (line 643) | def _initialize_aux_biases(self, cf=None): # initialize biases into D... method _initialize_biases_bin (line 657) | def _initialize_biases_bin(self, cf=None): # initialize biases into D... method _initialize_biases_kpt (line 672) | def _initialize_biases_kpt(self, cf=None): # initialize biases into D... method _print_biases (line 682) | def _print_biases(self): method fuse (line 693) | def fuse(self): # fuse model Conv2d() + BatchNorm2d() layers method nms (line 712) | def nms(self, mode=True): # add or remove NMS module method autoshape (line 726) | def autoshape(self): # add autoShape module method info (line 732) | def info(self, verbose=False, img_size=640): # print model information function parse_model (line 736) | def parse_model(d, ch): # model_dict, input_channels(3) FILE: test.py function test (line 21) | def test(data, FILE: utils/autoanchor.py function check_anchor_order (line 12) | def check_anchor_order(m): function check_anchors (line 23) | def check_anchors(dataset, model, thr=4.0, imgsz=640): function kmean_anchors (line 62) | def kmean_anchors(path='./data/coco.yaml', n=9, img_size=640, thr=4.0, g...