自定義影片渲染¶
調整影片渲染設定¶
TorchRL 在其影片記錄功能上嚴重依賴 torchvision.io 和 PyAV 模組。儘管這些庫非常方便且功能強大,但要訪問可用的各種選項和設定並不容易。
本指南旨在闡明自定義影片渲染的通用原則,並向您展示如何手動調整您的 rollout 的渲染設定以滿足您的需求。
通用原則¶
最終,torchvision.io 和 PyAV 呼叫 FFmpeg 庫來渲染影片。
換句話說
任何可以輸入到 FFmpeg 的內容,我們也可以將其輸入到 TorchRL 的
Loggers中。對於我們希望使用的任何自定義設定,我們必須參考 FFmpeg 的文件
影片渲染自定義示例¶
假設以下程式碼片段生成的影片非常模糊,即使我們提供了清晰的逐幀影像來拼接它們
from torchrl.envs import GymEnv, TransformedEnv
from torchrl.record import CSVLogger, VideoRecorder
logger = CSVLogger(exp_name="my_exp")
env = GymEnv("CartPole-v1", from_pixels=True, pixels_only=False)
recorder = VideoRecorder(logger, tag="my_video")
record_env = TransformedEnv(env, recorder)
rollout = record_env.rollout(max_steps=3)
recorder.dump()
由於 TorchRL 的預設影片編碼器是 H264,因此我們必須更改的設定應包含在此類中。
在本示例中,我們選擇 恆定速率因子 (CRF) 為 17,預設為 slow,如文件所述。
我們可以透過將所有所需的設定(作為關鍵字引數)附加到 recorder 中來提高影片質量,如下所示
recorder = VideoRecorder(logger, tag = "my_video", options = {"crf": "17", "preset": "slow"})