【问题标题】:How to traverse a dataset with bash shell如何使用 bash shell 遍历数据集
【发布时间】:2021-10-20 10:50:26
【问题描述】:

我在一个计算机视觉深度学习项目中运行代码,我可以成功运行演示。 现在我想使用演示来创建一个新的大数据集。运行一张图片的命令是:

cd /root/.virtualenvs/hmr2.0/hmr2.0-master/src/visualise/
python3 demo.py --image=im00001.jpg --model=base_model --setting=paired-joints --joint_type=cocoplus --init_toes=false

里面有一个数据集

cd /root/.virtualenvs/hmr2.0/hmr2.0-master/src/visualise/images, including 10000 pictures. They are named im00001.jpg, im00002.jpg to im09999.jpg, im10000.jpg.

如何编写一个 bash shell 来运行所有 10000 个图像并生成具有相应名称的文件?

【问题讨论】:

    标签: python linux bash


    【解决方案1】:

    对于这样的任务,我通常会做类似的事情

    cd /root/.virtualenvs/hmr2.0/hmr2.0-master/src/visualise
    for fff in images/*.jpg; do
        python3 demo.py --image=$fff --model=base_model --setting=paired-joints --joint_type=cocoplus --init_toes=false
    done
    

    如果该目录中还有其他 jpg 文件,则必须将“images/*.jpg”替换为更具体的内容

    如果for fff in images/*.jpg由于图片太多而无法使用,可以替换为

    ls -1 images/*.jpg | while read fff; do
    

    【讨论】:

    • Never parse ls。请改用find images -name '*.jpg'
    • 我同意 StackExchange 的观点,但总是需要在快速完成某件事和完成某件事防弹之间进行权衡。我在这里的解决方案是一个快速的解决方案,但肯定不是防弹的。因此,它非常适合一次性操作。改用 find 会有所改善,但后来我会使用 -print0 操作;空白会导致令人讨厌的副作用。相反,尝试find images -name im[0-9][0-9][0-9][0-9][0-9].jpg(也适用于ls)也会减少许多潜在问题。如果它是一个工具,让它坚如磐石。如果是一次性任务,请优化速度。
    猜你喜欢
    • 2015-03-29
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2017-12-15
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多