未验证 提交 b823808c 编写于 作者: Y YixinKristy 提交者: GitHub

Add github homework submit instruction (#275)

* Add 7day course info on readme

* Update README_cn.md

* Add homework file

* Update homework1.md

* add github homework submit instruction

* Update README_cn.md

* Update README.md
上级 c37aac05
无法预览此类型文件
......@@ -41,7 +41,7 @@ GAN--生成对抗网络,被“卷积网络之父”**Yann LeCun(杨立昆)
**直播日期:4月15日~4月20日直播授课,4月22日结营直播**
**具体详情请参见:[PaddleGAN生成对抗七日打卡营](https://github.com/PaddlePaddle/PaddleGAN/tree/develop/education)**
**具体详情请参见:[PaddleGAN生成对抗七日打卡营](./education/README.md)**
......
......@@ -37,12 +37,71 @@ Day 2:[代码题_基于DCGAN,改写为LS-GAN](./homework2)
Day 3:[代码题_填空补全基于pix2pix实现人脸卡通的预测代码](./homework3)
Day 4:客观题+项目展示(照片、视频)
Day 4:[客观题+项目展示(照片、视频)](./homework4)
Day 5:客观题+项目展示(照片、视频)
Day 6-大作业:自选PaddleGAN里面的模型实现超分
## 😍GitHub提交作业指南😍
**各位学员们,加分的机会来啦!在自己的GitHub repo上上传完成的作业,并在requirements.txt中加上ppgan即可获得额外加分5分🤓**
由于考虑到大家对于GitHub可能不太熟悉,所以,我们将所有作业**在GitHub上的提交截止日期放在了结营日前一天--4.22日**,下面就来简单介绍如何在GitHub上提交作业。
### Step 0:创建GitHub账号
对于还未创建GitHub账号的同学们,可以先创建账号,创建后,**可以先对[PaddleGAN](https://github.com/PaddlePaddle/PaddleGAN)点击Star完成关注哟⸜(ّᶿധّᶿ)⸝**,这样你就能及时掌握repo的咨询更新啦~
### Step 1:创建自己的GitHub repo
对于还未有自己的repo的同学(fork他人项目不算噢)可以点进自己的主页,点击【New】创建一个新的repo,并予以命名。
![img](https://user-images.githubusercontent.com/48054808/115176689-31a68280-a100-11eb-9872-b6da622aabd2.png)
### Step 3:新增requirements.txt文件
Requirements.txt文件中包含了你创建的repo中所引用/使用其他开发者的repo名称,代表了对于其他开发者的内容版权的尊重,类似于【转载自】。
点击Step 2中新创建的repo,选择【Add file】中的【Create new file】,将其命名为【requirements.txt】。
![img](https://user-images.githubusercontent.com/48054808/115178491-f60db780-a103-11eb-9e67-6e730122cb78.png)
这样,文件列表中即新增【requirements.txt】~
![img](https://user-images.githubusercontent.com/48054808/115178745-81874880-a104-11eb-9abf-14b97e2f5877.png)
### Step 4:在requirements.txt文件中加上”ppgan“
点击step 3中创建的【requirements.txt】,在其中增加”ppgan“即可。
![img](https://user-images.githubusercontent.com/48054808/115179249-784aab80-a105-11eb-86c3-a117d3202ad2.png)
### Step 5:提交作业
从AI Studio中将作业导出为markdown格式:
![img](https://user-images.githubusercontent.com/48054808/115179572-32421780-a106-11eb-9b6f-86aace707301.png)
回到Step 2中创建的repo的主页,同创建【requirements.txt】步骤一样,选择【Add file】中的【Upload files】上传自己作业即可。
![img](https://user-images.githubusercontent.com/48054808/115179707-81884800-a106-11eb-98e7-09d34bc9bd88.png)
### Step 6:在AI Studio提交作业中增加GitHub repo作业链接以及requirements.txt截图
这样就完成啦,就能获得5分加分噢!
**⭐总结下,所需提交内容⭐:**
1. **GitHub作业链接**
2. **requirements.txt中加上ppgan的截图**
**期待大家的作业噢(〜 ̄▽ ̄)〜〜( ̄▽ ̄〜)**
## 奖品列表
为了鼓励大家积极认真的参与课程,完成课后作业,我们为大家准备了丰厚的奖品!
......
......@@ -46,7 +46,7 @@ C. ![img](https://user-images.githubusercontent.com/48054808/115173903-d1f9a880-
D. ![img](https://user-images.githubusercontent.com/48054808/115173943-e178f180-a0fa-11eb-87ce-ba3e96e51572.png)
参考答案:A
参考答案:D
**5. (多选)下列关于GAN中对抗的描述正确的是()**
......
# 老北京城影像修复
完整项目见:https://aistudio.baidu.com/aistudio/projectdetail/1796293
本项目运用[PaddleGAN](https://github.com/PaddlePaddle/PaddleGAN)实现了百年前老北京城视频的复原,其中将详细讲解如何运用视频的上色、超分辨率(提高清晰度)、插帧(提高流畅度)等AI修复技术,让那些先辈们的一举一动,一颦一簇都宛若眼前之人。
当然,如果大家觉得这个项目有趣好用的话,希望大家能够为我们[PaddleGAN](https://github.com/PaddlePaddle/PaddleGAN)[Github主页](https://github.com/PaddlePaddle/PaddleGAN)点Star噢~
<div align='center'>
<img src='https://ai-studio-static-online.cdn.bcebos.com/47cea097a0284dd39fc2804a53aa8ee6dad16ffe104641258046eb05af49cd64' width='1000'/>
</div>
</br>
<div align='center'>
<img src='https://ai-studio-static-online.cdn.bcebos.com/99da82cb4c0143dfa45e40c5eb13dd4543ab55daf70f4313b81eef434d1a1ff7' width='800'/>
</div>
## 安装PaddleGAN
PaddleGAN的安装目前支持Clone GitHub和Gitee两种方式:
```python
# 安装ppgan
# 当前目录在: /home/aistudio/, 这个目录也是左边文件和文件夹所在的目录
# 克隆最新的PaddleGAN仓库到当前目录
# !git clone https://github.com/PaddlePaddle/PaddleGAN.git
# 如果从github下载慢可以从gitee clone:
!git clone https://gitee.com/paddlepaddle/PaddleGAN.git
%cd PaddleGAN/
!pip install -v -e .
```
## PaddleGAN中要使用的预测模型介绍
### 补帧模型DAIN
DAIN 模型通过探索深度的信息来显式检测遮挡。并且开发了一个深度感知的流投影层来合成中间流。在视频补帧方面有较好的效果。
```
ppgan.apps.DAINPredictor(
output_path='output',
weight_path=None,
time_step=None,
use_gpu=True,
remove_duplicates=False)
```
#### 参数
- `output_path (str,可选的)`: 输出的文件夹路径,默认值:`output`.
- `weight_path (None,可选的)`: 载入的权重路径,如果没有设置,则从云端下载默认的权重到本地。默认值:`None`
- `time_step (int)`: 补帧的时间系数,如果设置为0.5,则原先为每秒30帧的视频,补帧后变为每秒60帧。
- `remove_duplicates (bool,可选的)`: 是否删除重复帧,默认值:`False`.
### 上色模型DeOldifyPredictor
DeOldify 采用自注意力机制的生成对抗网络,生成器是一个U-NET结构的网络。在图像的上色方面有着较好的效果。
```
ppgan.apps.DeOldifyPredictor(output='output', weight_path=None, render_factor=32)
```
#### 参数
- `output_path (str,可选的)`: 输出的文件夹路径,默认值:`output`.
- `weight_path (None,可选的)`: 载入的权重路径,如果没有设置,则从云端下载默认的权重到本地。默认值:`None`
- `render_factor (int)`: 会将该参数乘以16后作为输入帧的resize的值,如果该值设置为32,
则输入帧会resize到(32 * 16, 32 * 16)的尺寸再输入到网络中。
### 上色模型DeepRemasterPredictor
DeepRemaster 模型基于时空卷积神经网络和自注意力机制。并且能够根据输入的任意数量的参考帧对图片进行上色。
```
ppgan.apps.DeepRemasterPredictor(
output='output',
weight_path=None,
colorization=False,
reference_dir=None,
mindim=360):
```
#### 参数
- `output_path (str,可选的)`: 输出的文件夹路径,默认值:`output`.
- `weight_path (None,可选的)`: 载入的权重路径,如果没有设置,则从云端下载默认的权重到本地。默认值:`None`
- `colorization (bool)`: 是否对输入视频上色,如果选项设置为 `True` ,则参考帧的文件夹路径也必须要设置。默认值:`False`
- `reference_dir (bool)`: 参考帧的文件夹路径。默认值:`None`
- `mindim (bool)`: 输入帧重新resize后的短边的大小。默认值:360。
### 超分辨率模型RealSRPredictor
RealSR模型通过估计各种模糊内核以及实际噪声分布,为现实世界的图像设计一种新颖的真实图片降采样框架。基于该降采样框架,可以获取与真实世界图像共享同一域的低分辨率图像。并且提出了一个旨在提高感知度的真实世界超分辨率模型。对合成噪声数据和真实世界图像进行的大量实验表明,该模型能够有效降低了噪声并提高了视觉质量。
```
ppgan.apps.RealSRPredictor(output='output', weight_path=None)
```
#### 参数
- `output_path (str,可选的)`: 输出的文件夹路径,默认值:`output`.
- `weight_path (None,可选的)`: 载入的权重路径,如果没有设置,则从云端下载默认的权重到本地。默认值:`None`
### 超分辨率模型EDVRPredictor
EDVR模型提出了一个新颖的视频具有增强可变形卷积的还原框架:第一,为了处理大动作而设计的一个金字塔,级联和可变形(PCD)对齐模块,使用可变形卷积以从粗到精的方式在特征级别完成对齐;第二,提出时空注意力机制(TSA)融合模块,在时间和空间上都融合了注意机制,用以增强复原的功能。
```
ppgan.apps.EDVRPredictor(output='output', weight_path=None)
```
#### 参数
- `output_path (str,可选的)`: 输出的文件夹路径,默认值:`output`.
- `weight_path (None,可选的)`: 载入的权重路径,如果没有设置,则从云端下载默认的权重到本地。默认值:`None`
## 使用PaddleGAN进行视频修复
```python
# 导入一些可视化需要的包
import cv2
import imageio
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML
import warnings
warnings.filterwarnings("ignore")
```
```python
# 定义一个展示视频的函数
def display(driving, fps, size=(8, 6)):
fig = plt.figure(figsize=size)
ims = []
for i in range(len(driving)):
cols = []
cols.append(driving[i])
im = plt.imshow(np.concatenate(cols, axis=1), animated=True)
plt.axis('off')
ims.append([im])
video = animation.ArtistAnimation(fig, ims, interval=1000.0/fps, repeat_delay=1000)
plt.close()
return video
```
```python
# 展示一下输入的视频, 如果视频太大,时间会非常久,可以跳过这个步骤
video_path = '/home/aistudio/Peking_input360p_clip6_5s.mp4'
video_frames = imageio.mimread(video_path, memtest=False)
# 获得视频的原分辨率
cap = cv2.VideoCapture(video_path)
fps = cap.get(cv2.CAP_PROP_FPS)
HTML(display(video_frames, fps).to_html5_video())
```
```python
# 使用插帧(DAIN), 上色(DeOldify), 超分(EDVR)这三个模型对该视频进行修复
# input参数表示输入的视频路径
# output表示处理后的视频的存放文件夹
# proccess_order 表示使用的模型和顺序(目前支持)
%cd /home/aistudio/PaddleGAN/applications/
!python tools/video-enhance.py --input /home/aistudio/Peking_input360p_clip6_5s.mp4 \
--process_order DAIN DeOldify EDVR \
--output output_dir
```
```python
# 展示一下处理好的视频, 如果视频太大,时间会非常久,可以下载下来看
# 这个路径可以查看上个code cell的最后打印的output video path
output_video_path = '/home/aistudio/PaddleGAN/applications/output_dir/EDVR/Peking_input360p_clip6_5s_deoldify_out_edvr_out.mp4'
video_frames = imageio.mimread(output_video_path, memtest=False)
# 获得视频的原分辨率
cap = cv2.VideoCapture(output_video_path)
fps = cap.get(cv2.CAP_PROP_FPS)
HTML(display(video_frames, fps, size=(16, 12)).to_html5_video())
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册