import qualified Codec.Picture as JUC import qualified Codec.Picture.Extra as JUC import qualified Codec.Picture.Repa as RPJ import Control.Monad.Trans.Resource import Criterion.Main import qualified Data.Array.Repa as Repa import Data.Conduit import Data.Conduit.Async import qualified Data.Conduit.List as C import Data.Random.Source.StdGen (mkStdGen) import qualified Graphics.Image as HIP import RIO import RIO.Directory import RIO.FilePath import qualified MXNet.NN.DataIter.Coco as Coco main = do home <- getHomeDirectory let imgFilePath = home ".mxnet/datasets/coco/val2017/000000121242.jpg" Right imgjuc <- liftIO (JUC.readImage imgFilePath) Right imghip <- liftIO (HIP.readImage imgFilePath :: IO (Either String (HIP.Image HIP.VS HIP.RGB Double))) rand_gen <- newIORef $ mkStdGen 99 cocoInst <- Coco.coco (home ".mxnet/datasets/coco") "val2017" let cocoConf = Coco.CocoConfig cocoInst 1024 (0.5, 0.5, 0.5) (1, 1, 1) iter1 = Coco.cocoImages rand_gen iter2 = Coco.cocoImagesBBoxes rand_gen defaultMain [ bench "scale-img-juicy" $ nfIO $ let img1 = JUC.convertRGB8 imgjuc img2 = JUC.scaleBilinear 1024 1024 img1 img3 = RPJ.imgData (RPJ.convertImage img2 :: RPJ.Img RPJ.RGB) in Repa.computeUnboxedP img3 , bench "scale-img-hip" $ nfIO $ let img2 = HIP.resize HIP.Bilinear HIP.Edge (1024, 1024) imghip in return img2 , bench "img-iter" $ nfIO $ runResourceT $ flip runReaderT cocoConf $ runConduit $ iter1 .| C.take 10 , bench "img-iter-async" $ nfIO $ runResourceT $ flip runReaderT cocoConf $ runCConduit $ iter1 =$=& C.take 10 , bench "img-iter-and-load-gt" $ nfIO $ runResourceT $ flip runReaderT cocoConf $ runConduit $ iter2 .| C.take 10 ]