自定義影片渲染¶
微調影片渲染設定¶
TorchRL 的影片日誌記錄功能高度依賴於 torchvision.io 和 PyAV 模組。儘管這些庫非常方便且功能強大,但要訪問各種可用的引數和設定並不容易。
本指南旨在闡明自定義影片渲染背後的一些一般原則,並向您展示如何根據您的喜好手動調整 rollouts 的渲染設定。
一般原則¶
最終,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"})