pixelNum = torch.sum(segBatch ).cpu().data.item()
    for m in range(0, n + 1):
        directErrs.append( torch.sum( (imPBatch - imP1Batch)
                * (imPBatch - imP1Batch) * segBatch.expand_as(imPBatch) ) / pixelNum / 3.0 )
        globalIllu2Errs.append( torch.sum( (globalIllu2s[m] - imP2Batch)
                * (globalIllu2s[m] - imP2Batch) * segBatch.expand_as(imP2Batch) ) / pixelNum / 3.0 )
        globalIllu3Errs.append(torch.sum( (globalIllu3s[m] - imP3Batch)
                * (globalIllu3s[m] - imP3Batch) * segBatch.expand_as(imP3Batch) ) / pixelNum / 3.0 )
        renderErrs.append( torch.sum( (renderImgs[m] - imPBatch)
                * (renderImgs[m] - imPBatch) * segBatch.expand_as(imPBatch) ) / pixelNum / 3.0 )
        renderGtErrs.append( torch.sum( (renderImgGts[m] - imPBatch)
                * (renderImgGts[m] - imPBatch) * segBatch.expand_as(imPBatch) ) / pixelNum / 3.0 )


    # Output testing error
    utils.writeErrToScreen('directErrs', directErrs, epoch, j)
    utils.writeErrToScreen('globalIllu2', globalIllu2Errs, epoch, j)
    utils.writeErrToScreen('globalIllu3', globalIllu3Errs, epoch, j)
    utils.writeErrToScreen('renderErrs', renderErrs, epoch, j)
    utils.writeErrToScreen('renderGtErrs', renderGtErrs, epoch, j)

    utils.writeErrToFile('directErrs', directErrs, testingLog, epoch, j)
    utils.writeErrToFile('globalIllu2', globalIllu2Errs, testingLog, epoch, j)
    utils.writeErrToFile('globalIllu3', globalIllu3Errs, testingLog, epoch, j)
    utils.writeErrToFile('renderErrs', renderErrs, testingLog, epoch, j)
    utils.writeErrToFile('renderGtErrs', renderGtErrs, testingLog, epoch, j)

    directErrsNpList = np.concatenate( [directErrsNpList, utils.turnErrorIntoNumpy(directErrs) ], axis=0)
    globalIllu2ErrsNpList = np.concatenate( [globalIllu2ErrsNpList, utils.turnErrorIntoNumpy(globalIllu2Errs)], axis=0)
    globalIllu3ErrsNpList = np.concatenate( [globalIllu3ErrsNpList, utils.turnErrorIntoNumpy(globalIllu3Errs)], axis=0)
    renderErrsNpList = np.concatenate( [renderErrsNpList, utils.turnErrorIntoNumpy(renderErrs)], axis=0 )
                            torch.sum(gtToPredNormal * gtNormal, dim=1), -1,
                            1)))
                medianAngle_predToGt = 180.0 / np.pi * torch.median(
                    torch.acos(
                        torch.clamp(
                            torch.sum(normalPreds[m] * predToGtNormal, dim=1),
                            -1, 1)))
                medianAngleErrs.append(
                    0.5 * (medianAngle_gtToPred + medianAngle_predToGt))

        errorTotal = pointErrs[-1] * pw + normalErrs[-1] * nw
        errorTotal.backward()

        opPointNet.step()

        utils.writeErrToScreen('point', pointErrs, epoch, j)
        utils.writeErrToScreen('normal', normalErrs, epoch, j)
        utils.writeErrToScreen('meanAngle', meanAngleErrs, epoch, j)
        utils.writeErrToScreen('medianAngle', medianAngleErrs, epoch, j)

        utils.writeErrToFile('point', pointErrs, trainingLog, epoch, j)
        utils.writeErrToFile('normal', normalErrs, trainingLog, epoch, j)
        utils.writeErrToFile('meanAngle', meanAngleErrs, trainingLog, epoch, j)
        utils.writeErrToFile('medianAngle', medianAngleErrs, trainingLog,
                             epoch, j)

        pointErrsNpList = np.concatenate(
            [pointErrsNpList,
             utils.turnErrorIntoNumpy(pointErrs)], axis=0)
        normalErrsNpList = np.concatenate(
            [normalErrsNpList,
Beispiel #3
0
        depthErrSum = sum(depthErrs)
        globalIllu1ErrSum = sum(globalIllu1Errs)

        totalErr = albeW * albedoErrSum + normW * normalErrSum + rougW *roughErrSum \
                + deptW * depthErrSum + g1W * globalIllu1ErrSum
        totalErr.backward()

        # Update the network parameter
        opEncoderInit.step()
        opAlbedoInit.step()
        opNormalInit.step()
        opRoughInit.step()
        opDepthInit.step()

        # Output training error
        utils.writeErrToScreen('albedo', albedoErrs, epoch, j)
        utils.writeErrToScreen('normal', normalErrs, epoch, j)
        utils.writeErrToScreen('rough', roughErrs, epoch, j)
        utils.writeErrToScreen('depth', depthErrs, epoch, j)
        utils.writeErrToScreen('globalIllu1', globalIllu1Errs, epoch, j)
        utils.writeErrToFile('albedo', albedoErrs, trainingLog, epoch, j)
        utils.writeErrToFile('normal', normalErrs, trainingLog, epoch, j)
        utils.writeErrToFile('rough', roughErrs, trainingLog, epoch, j)
        utils.writeErrToFile('depth', depthErrs, trainingLog, epoch, j)
        utils.writeErrToFile('globalIllu1', globalIllu1Errs, trainingLog,
                             epoch, j)
        albedoErrsNpList = np.concatenate(
            [albedoErrsNpList,
             utils.turnErrorIntoNumpy(albedoErrs)], axis=0)
        normalErrsNpList = np.concatenate(
            [normalErrsNpList,
            torch.sum((globalIllu3s[m] - 0.5 * (imP3Batch + 1)) *
                      (globalIllu3s[m] - 0.5 *
                       (imP3Batch + 1)) * segBatch.expand_as(imBatch)) /
            pixelNum / 3.0)
    for m in range(0, len(renderedEnvs)):
        imgEnvErrs.append(
            torch.sum((renderedEnvs[m] - 0.5 * (imEBatch + 1)) *
                      (renderedEnvs[m] - 0.5 *
                       (imEBatch + 1)) * segBatch.expand_as(imBatch)) /
            pixelNum / 3.0)
    for m in range(0, len(SHPreds)):
        envErrs.append(
            torch.mean((SHPreds[m] - SHBatch) * (SHPreds[m] - SHBatch)))

    # Output testing error
    utils.writeErrToScreen('albedo', albedoErrs, epoch, j)
    utils.writeErrToScreen('normal', normalErrs, epoch, j)
    utils.writeErrToScreen('rough', roughErrs, epoch, j)
    utils.writeErrToScreen('depth', depthErrs, epoch, j)
    utils.writeErrToScreen('globalIllu1', globalIllu1Errs, epoch, j)
    utils.writeErrToScreen('globalIllu2', globalIllu2Errs, epoch, j)
    utils.writeErrToScreen('globalIllu3', globalIllu3Errs, epoch, j)
    utils.writeErrToScreen('imgEnv', imgEnvErrs, epoch, j)
    utils.writeErrToScreen('env', envErrs, epoch, j)

    utils.writeErrToFile('albedo', albedoErrs, testingLog, epoch, j)
    utils.writeErrToFile('normal', normalErrs, testingLog, epoch, j)
    utils.writeErrToFile('rough', roughErrs, testingLog, epoch, j)
    utils.writeErrToFile('depth', depthErrs, testingLog, epoch, j)
    utils.writeErrToFile('globalIllu1', globalIllu1Errs, testingLog, epoch, j)
    utils.writeErrToFile('globalIllu2', globalIllu2Errs, testingLog, epoch, j)
Beispiel #5
0
            globalIllu3Errs.append(
                torch.sum((globalIllu3s[m] - imP3Batch) *
                          (globalIllu3s[m] - imP3Batch) *
                          segBatch.expand_as(imP3Batch)) / pixelNum / 3.0)

        globalIllu2ErrSum = sum(globalIllu2Errs)
        globalIllu3ErrSum = sum(globalIllu3Errs)

        totalErr = g2W * globalIllu2ErrSum + g3W * globalIllu3ErrSum
        totalErr.backward()

        opGlobalIllu1to2.step()
        opGlobalIllu2to3.step()

        # Output training error
        utils.writeErrToScreen('globalIllu2', globalIllu2Errs, epoch, j)
        utils.writeErrToScreen('globalIllu3', globalIllu3Errs, epoch, j)
        utils.writeErrToFile('globalIllu2', globalIllu2Errs, trainingLog,
                             epoch, j)
        utils.writeErrToFile('globalIllu3', globalIllu3Errs, trainingLog,
                             epoch, j)
        globalIllu2ErrsNpList = np.concatenate(
            [globalIllu2ErrsNpList,
             utils.turnErrorIntoNumpy(globalIllu2Errs)],
            axis=0)
        globalIllu3ErrsNpList = np.concatenate(
            [globalIllu3ErrsNpList,
             utils.turnErrorIntoNumpy(globalIllu3Errs)],
            axis=0)

        if j < 1000:
Beispiel #6
0
        depthPred, depthErr = depthPair[0], depthPair[1]

        # Back propagate the gradients
        totalErr = 4 * albeW * albedoErr + normW * normalErr \
                + rougW *roughErr + deptW * depthErr
        totalErr.backward()

        # Update the network parameter
        opEncoder.step()
        opAlbedo.step()
        opNormal.step()
        opRough.step()
        opDepth.step()

        # Output training error
        utils.writeErrToScreen('albedo', [albedoErr], epoch, j )
        utils.writeErrToScreen('normal', [normalErr], epoch, j )
        utils.writeErrToScreen('rough', [roughErr], epoch, j)
        utils.writeErrToScreen('depth', [depthErr], epoch, j)

        utils.writeErrToFile('albedo', [albedoErr], trainingLog, epoch, j)
        utils.writeErrToFile('normal', [normalErr], trainingLog, epoch, j)
        utils.writeErrToFile('rough', [roughErr], trainingLog, epoch, j)
        utils.writeErrToFile('depth', [depthErr], trainingLog, epoch, j)

        albedoErrsNpList = np.concatenate( [albedoErrsNpList, utils.turnErrorIntoNumpy( [albedoErr] )], axis=0)
        normalErrsNpList = np.concatenate( [normalErrsNpList, utils.turnErrorIntoNumpy( [normalErr] )], axis=0)
        roughErrsNpList = np.concatenate( [roughErrsNpList, utils.turnErrorIntoNumpy( [roughErr] )], axis=0)
        depthErrsNpList = np.concatenate( [depthErrsNpList, utils.turnErrorIntoNumpy( [depthErr] )], axis=0)

        if j < 1000:
                torch.acos(
                    torch.clamp(
                        torch.sum(normal2Preds[m] * normal2Batch, dim=1), -1,
                        1)[seg1Batch.squeeze(1) != 0])))
        else:
            medianAngle2Errs.append(0 * torch.sum(normal2Preds[m]))

    for m in range(0, len(renderedImgs)):
        renderedErrs.append(
            torch.sum(
                (renderedImgs[m] - imBgBatch) *
                (renderedImgs[m] - imBgBatch) * seg2Batch.expand_as(imBatch)) /
            pixel2Num / 3.0)

    # Output training error
    utils.writeErrToScreen('normal1', normal1Errs, epoch, j)
    utils.writeErrToScreen('medianAngle1', medianAngle1Errs, epoch, j)
    utils.writeErrToScreen('meanAngle1', meanAngle1Errs, epoch, j)
    utils.writeErrToScreen('normal2', normal2Errs, epoch, j)
    utils.writeErrToScreen('medianAngle2', medianAngle2Errs, epoch, j)
    utils.writeErrToScreen('meanAngle2', meanAngle2Errs, epoch, j)
    utils.writeErrToScreen('rendered', renderedErrs, epoch, j)

    utils.writeErrToFile('normal1', normal1Errs, trainingLog, epoch, j)
    utils.writeErrToFile('medianAngle1', medianAngle1Errs, trainingLog, epoch,
                         j)
    utils.writeErrToFile('meanAngle1', meanAngle1Errs, trainingLog, epoch, j)
    utils.writeErrToFile('normal2', normal2Errs, trainingLog, epoch, j)
    utils.writeErrToFile('medianAngle2', medianAngle2Errs, trainingLog, epoch,
                         j)
    utils.writeErrToFile('meanAngle2', meanAngle2Errs, trainingLog, epoch, j)
Beispiel #8
0
        depthPred, depthErr = depthPair[0], depthPair[1]

        # Back propagate the gradients
        totalErr = 4 * albeW * albedoErr + normW * normalErr \
                + rougW *roughErr + deptW * depthErr
        totalErr.backward()

        # Update the network parameter
        opEncoder.step()
        opAlbedo.step()
        opNormal.step()
        opRough.step()
        opDepth.step()

        # Output training error
        utils.writeErrToScreen('albedo', [albedoErr], epoch, j)
        utils.writeErrToScreen('normal', [normalErr], epoch, j)
        utils.writeErrToScreen('rough', [roughErr], epoch, j)
        utils.writeErrToScreen('depth', [depthErr], epoch, j)

        utils.writeErrToFile('albedo', [albedoErr], trainingLog, epoch, j)
        utils.writeErrToFile('normal', [normalErr], trainingLog, epoch, j)
        utils.writeErrToFile('rough', [roughErr], trainingLog, epoch, j)
        utils.writeErrToFile('depth', [depthErr], trainingLog, epoch, j)

        albedoErrsNpList = np.concatenate( [albedoErrsNpList, utils.turnErrorIntoNumpy( [albedoErr] )], axis=0)
        normalErrsNpList = np.concatenate( [normalErrsNpList, utils.turnErrorIntoNumpy( [normalErr] )], axis=0)
        roughErrsNpList = np.concatenate( [roughErrsNpList, utils.turnErrorIntoNumpy( [roughErr] )], axis=0)
        depthErrsNpList = np.concatenate( [depthErrsNpList, utils.turnErrorIntoNumpy( [depthErr] )], axis=0)

        if j < 1000:
Beispiel #9
0
        renderedImPred, renderErr = renderPair[0], renderPair[1]
        imBatch = renderPair[2]


        # Back propagate the gradients
        totalErr = renW * renderErr + recW * reconstErr
        totalErr.backward()

        # Update the network parameter
        opLightEncoder.step()
        opAxisDecoder.step()
        opLambDecoder.step()
        opWeightDecoder.step()

        # Output training error
        utils.writeErrToScreen('albedo', [albedoErr], epoch, j)
        utils.writeErrToScreen('normal', [normalErr], epoch, j)
        utils.writeErrToScreen('rough', [roughErr], epoch, j)
        utils.writeErrToScreen('depth', [depthErr], epoch, j)

        utils.writeErrToScreen('reconstErrors', [reconstErr], epoch, j)
        utils.writeErrToScreen('renderErrors', [renderErr], epoch, j)

        utils.writeErrToFile('albedo', [albedoErr], trainingLog, epoch, j)
        utils.writeErrToFile('normal', [normalErr], trainingLog, epoch, j)
        utils.writeErrToFile('rough', [roughErr], trainingLog, epoch, j)
        utils.writeErrToFile('depth', [depthErr], trainingLog, epoch, j)

        utils.writeErrToFile('reconstErrors', [reconstErr], trainingLog, epoch, j)
        utils.writeErrToFile('renderErrors', [renderErr], trainingLog, epoch, j)