截止12.17 bitahub踩坑,mask无数次更改,lama代码的那些痛,羊了个羊,imwrite不生效

news2024/11/17 12:54:07

前面那篇跑出了STCN,倒是STCN熟悉了很多了

对bitahub,需要注意一个问题

要进ssh请用debug卡!!!!
要进ssh请用debug卡!!!!
要进ssh请用debug卡!!!!

12.13

小杜帮我把lama的docker配好了,于是愉快地跑lama
(这个时候觉得bitahub是真不太好用,大文件传不上去,每次都得进ssh自己往上传,还有三小时的限制)

但是发现这个lama的效果真是糟糕

在这里插入图片描述
后来询问了学长,哦哦蒙层要是白色的才能覆盖他rgb三个通道

12.14

改蒙层颜色了,还写了python代码

一开始写的是只要rgb通道有一个大于60,就把这个地方改成白色

也挺成功的

后来学长告诉我其实这个代码已经写好了,还贴心地写了readme,但是我没有看到呜呜

包括dilation(感觉是让边缘不要那么糊)和closing(去mask中的洞洞的)
还有一个把mask蒙在原图片上看效果的

一个注意点:千万要把蒙层完全蒙在图片上,宜大不宜小

否则LAMA会觉得这是一个背景
在这里插入图片描述

在这里插入图片描述
学长可能最近比较忙,没有回我


import argparse
import numpy as np
import glob
import os
import scipy.ndimage


def main(args):
    views, masks, output, mask_output = args.views, args.masks, args.output, args.mask_output
    dilation = args.dilation
    views = sorted(glob.glob(os.path.join(views, '*.png')))
    masks = sorted(glob.glob(os.path.join(masks, '*.png')))
    if not os.path.exists(output):
        os.makedirs(output)
    if not os.path.exists(mask_output):
        os.makedirs(mask_output)
    assert len(views) == len(masks)
    for i in range(len(views)):
        view = cv2.imread(views[i])
        mask = cv2.imread(masks[i])
        mask = mask / 255.
        mask_single = np.sum(mask, axis=2, keepdims=True)
        mask_single[mask_single > 0] = 1
        # dilation
        if dilation > 0:
            mask_single = scipy.ndimage.binary_dilation(mask_single, iterations=dilation)
        # closing
        mask_single = cv2.morphologyEx(mask_single.astype(np.uint8), cv2.MORPH_CLOSE, np.ones((21, 21), np.uint8))
        mask_single = scipy.ndimage.binary_fill_holes(mask_single)
        if len(mask_single.shape) == 2:
            mask_single = mask_single[:, :, np.newaxis]
        view = view * (1 - mask_single)
        out_path = os.path.join(output, '{:05d}.png'.format(i))
        out_mask_path = os.path.join(mask_output, '{:05d}.png'.format(i))
        cv2.imwrite(out_path, view)
        cv2.imwrite(out_mask_path, mask_single * 255.)

        
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--views', type=str)
    parser.add_argument('--masks', type=str)
    parser.add_argument('--dilation', type=int, default=5)
    parser.add_argument('--output', type=str)
    parser.add_argument('--mask_output', type=str)
    args = parser.parse_args()
    main(args)

12.16

同居人羊了,照顾了一天

忙中还是偷闲了一会
先是小杜的服务器羊了,哎!
在这里插入图片描述
后来小杜说应该是因为换线路了,更新了一下就好了

下午忙到两点,还出现了梦魇
小杜说我是吓的,瑶瑶说可能是压力太大了
在这里插入图片描述
有人陪伴真幸福呀

在这里插入图片描述

下午代理阳了
在这里插入图片描述
晚上其实有点小不舒服,不知道是不是羊了,反正感觉有点发冷

开始不想看代码了,找小杜debug(实际上应该没有bug,只是我确实没有看懂)

小杜还在上课,害

在这里插入图片描述
头晕乎乎不想看手机只想听语音
在这里插入图片描述
虽然emmm一直烦小杜不太好

but:
在这里插入图片描述
所以就不喜勿喷了。

找小马驹点歌《东西》
在这里插入图片描述
唱的真的很不错
听了好几遍哈哈哈

在这里插入图片描述
不知道第二天状态怎么样,今天就这样吧

在这里插入图片描述

12.17

sample view原来是为了得到采样后的depth,意思是我原来有了depth进行采样,而不是得到depth。。。

那问题来了,depth怎么得到呢。
问了kd学长:

我记得“”只要…就…"不是这么用的:
在这里插入图片描述

学长帮我把他的代码下载下来了呜呜感动
在这里插入图片描述
这个先不管,我得抽帧。nerf得到的视频本来就120帧的,需要抽成120个图片

这个代码应该有用
文件结构是

  • video
    • vedio1.mp4
    • vedio2.mp4
#coding=utf-8
import cv2
import os
#/content/drive/MyDrive/实验室任务/nerf/logs/fern_example/vedio
path = '/content/drive/MyDrive/实验室任务/nerf/vedio'
video_list = os.listdir(path)
for video in video_list:
    video_path = os.path.join(os.getcwd(),path,video)
    vc=cv2.VideoCapture(video_path)
    if vc.isOpened():
        rval,frame=vc.read()
    else:
        rval=False

    c =1
    while rval:
        rval,frame=vc.read()
        if rval==False:
        	break
        cv2.imwrite('/content/drive/MyDrive/实验室任务/nerf/vedio/video2img/'+str(video)+str(c)+'.jpg',frame)
        print(c)
        c=c+1
        cv2.waitKey(1)
    vc.release()

但是我明明规定了保存的路径也没见着他保存在哪
在这里插入图片描述
反正试过了没有用

上服务器跑
在这里插入图片描述
haha
关键我还装不上!!!!!
在这里插入图片描述
说来你可能不信,我抽了一下午的帧

不错,bitahub,好用!
在这里插入图片描述

学聪明了,知道复制一份新的,这样下载整个文件夹就行啦
在这里插入图片描述

接下来研究研究学长说的depth了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AQS-semaphoreCyclicBarrierCountDownLatch源码学习

上文:jdk-BlockingQueue源码学习源码下载:https://gitee.com/hong99/jdk8semaphore&cyclicbarrier&CountDownLatch的介绍semaphore基础功能semaphore简称信号量,主要用于控制访问特定资源的线程数目,底层用的是AQS的状记s…

[附源码]Python计算机毕业设计Django万佳商城管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Volatile和高速缓存的关系

“volatile关键字有什么用?” 1 常见理解错误 把volatile当成一种锁机制,认为给变量加上了volatile,就好像是给函数加sychronized,不同的线程对于特定变量的访问会去加锁把volatile当成一种原子化的操作机制,认为加了…

Dubbo 3 Dubbo 快速入门 3.1 Zookeeper 安装

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 3 Dubbo 快速入门 文章目录Dubbo3 Dubbo 快速入门3.1 Zookeeper 安装3.1.1 Zookeeper 安装3.1 Zookeeper 安装 3.1.1 Zookeeper 安装 在Dubbo 架构图中 Dubbo官方推荐使用Zookeeper作为注册中心【Re…

【学习总结】注解和元注解

目录 一、注解 1、注解与XML区别 2、注解的用途 3、注解的三种分类 二、什么是元注解? 1、元注解有几种? 1、Retention存活时间 2、Target使用范围 3、Document保存到javadoc 4、Inherited注解继承 三、如何实现的注解 四、问提: …

为解决BERT模型对语料中低频词的不敏感性

来源:投稿 作者:COLDR 编辑:学姐 (内容如有错漏,可在评论区指出) 摘要 Dict-BERT为了解决BERT模型对语料中低频词(rare words)的不敏感性,通过在预训练中加入低频词词典…

人工智能/计算机期刊会议测评(持续更新...更新速度取决于我水论文的速度...)

IEEE Transactions on Knowledge and Data Engineering 中科院2区,CCF A。你为什么是二区????????????做梦都想中的刊。 …

5天带你读完《Effective Java》(二)

《Effective Java》是Java开发领域无可争议的经典之作,连Java之父James Gosling都说: “如果说我需要一本Java编程的书,那就是它了”。它为Java程序员提供了90个富有价值的编程准则,适合对Java开发有一定经验想要继续深入的程序员…

Servlet 原来是这个玩意、看完恍然大悟

1. 什么是 Servlet? 先让时间回到 25 年前,我国刚刚接入互联网不到两年时间。那时候的电脑长这个样子: 当时的网页技术还不是很发达,大家打开浏览器只能浏览一些静态的页面,例如图片、文本信息等。 随着时间的发展&a…

[附源码]Python计算机毕业设计Django社区生活废品回收APP

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

idea配置tomcat日志中文乱码,且修改后idea正常,但cmd窗口任然中文乱码解决方法

idea日志乱码问题的原因是tomcat的日志配置文件有两行有问题需要删掉,cmd乱码是Windows系统cmd窗口默认不是utf-8 首先解决idea中tomcat的日志乱码问题,在idea中进行如下的配置 Trans...........可以不勾选,它的作用是用选定的字符集把项目的…

[附源码]Python计算机毕业设计Django室内设计类网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

2023面试专题:JAVA基础

ArrayList和LinkedList有哪些区别 ArrayList扩容机制: ArrayList() 会使用长度为零的数组ArrayList(int initialCapacity) 会使用指定容量的数组public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组容量add(Object o) 首次扩容为 10&#xff0c;再次…

【OpenCV】透视变换应用——实现鸟瞰图与贴图

透视变换是3D转换&#xff0c;透视变换的本质是将图像投影到一个新的视平面&#xff1b; 据此&#xff0c;我们可以使用透视变化来实现鸟瞰图和图形贴图的效果&#xff1b; 一、鸟瞰图 实现前&#xff1a; 实现效果&#xff1a; 1.准备一个空的mat对象 用于保存转换后的图 M…

asp.net mvc+elementUI 实现增删改查

最开始心想着一直都是前端玩这些玩意&#xff0c;个人虽然不是纯前端。好歹做为一个.net全栈开发多年&#xff0c;我就不太想用node去搭建&#xff0c;那么试试吧&#xff0c;总归不是那么几个css和js的文件引用&#xff0c;如果对vue.js不太熟悉&#xff0c;最好先去看看。 那…

智能家居创意DIY之智能触摸面板开关

触摸开关&#xff0c;即通过触摸方式控制的墙壁开关&#xff0c;其感官场景如同我们的触屏手机&#xff0c;只需手指轻轻一点即可达到控制电器的目的&#xff0c;随着人们生活品质的提高&#xff0c;触摸开关将逐渐将换代传统机械按键开关。 触摸开关控制原理 触摸开关我们把…

springboot入门案例

今天写一个springboot入门案例&#xff0c;接下来我将带大家走进springboot第一课的案例。如果有问题&#xff0c;望大家指正。 目录 1. 简介 2. 开发示例 2.1 创建springboot工程 3. 启动类 4. 常用注解 5. springboot配置文件 6. 开发一个controller 1. 简介 Spring …

大一学生WEB前端静态网页——旅游网页设计与实现(15页面)

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

Git GitHub入门

目录Git1. 安装Git1. 下载Git2. 安装Git2. Git常用命令1. 设置用户签名2. 初始化本体库3. 查看本地库状态4. 添加暂存区5. 提交本地库6. 查看历史记录7. 修改文件8. 版本穿梭3. Git分支操作1. 查看分支2. 创建分支3. 切换分支4. 合并分支GitHub操作1. 创建远程仓库2. 远程仓库操…

【sciter】历经一个月封装的Web组件库使用说明文档

Web 组件库 1、组件库总体架构 2、目录结构及组件库引入 使用时,只需要引入 CSS 样式文件及组件入口文件即可。 3、组件注意事项 1、当组件支持绑定事件时,事件名称命名规则为 Sc + DOM事件名称且首字母大写,即点击事件(click)对应(ScClick) 在 sciter 中,通过原生 D…